• 正文
  • 相关推荐
申请入驻 产业图谱

CAN协议基础-CAN协议种类与CAN数据帧

09/11 08:04
922
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

本篇来介绍CAN协议。

1 CAN基础介绍

CAN(Controller Area Network),是ISO国际标准化的串行通信协议,CAN总线由两根线(CANL和CANH)组成,通过差分信号传递信息。

满足汽车产业的减少线束数量,高速通信的需求,也广泛应用于工业自动化、船舶、医疗设备等。

1.1 CAN的发展历史

    • 1986:博世公司开发出CAN通信协议1987:英特尔和飞利浦先后推出CAN控制器芯片1991:博世发布CAN 2.0规范,同年CAN总线最先在奔驰S轿车上实现1993:ISO发布CAN标准

      • ISO11519:低速CAN(低于125kbps)IOS11898:高速CAN(125kbps~1Mbps)

2011:博世公司开发出CAN FD通信协议2015:CAN FD标准化2020:CAN XL问世2024:CAN XL标准化

1.2 CAN的特点

    多主控制:每个设备都可以主动发送数据系统的柔软性:没有类似地址的信息,添加设备不改变原来总线的状态通信速度:速度快,距离远错误检测、错误通知、错误恢复功能

2 CAN协议分类

2.1 经典CAN

2.1.1 低速CAN(ISO11519)

特点:

    • 通信速率10~

125Kbps

    总线长度可达1000米最多挂载20个节点单帧最大荷载8字节

2.1.2 高速CAN(ISO11898)

特点:通信速率125Kbps~1Mbps总线长度<=40米最多挂载30个节点单帧最大荷载8字节

2.2 CAN FD(ISO11898-1:2015)

Controller Area Network with Flexible Data-Rate

特点:兼容经典CAN,冲裁段与数据段可以不同波特率总裁段1Mbps,与经典CAN兼容数据段最高8Mbps,单帧最大荷载64字节

2.3 CAN XL(ISO11898-1:2024)

Controller Area Network with Extended Length

面向软件定义汽车(‌SDV‌,Software Defined Vehicle),填补CAN FD与车载以太网之间带宽缺口

特点:兼容CAN/CAN FD总裁段1Mbps,与经典CAN兼容数据段最高20Mbps,单帧最大荷载2048字节

3 CAN物理层

3.1 CAN物理层特性

CAN总线由两根线(CANL和CANH)组成,通过差分信号传递信息,总线电平分为:

    显性电平:逻辑0隐性电平:逻辑1

显性电平具有优先权,比如某个节点发出显性电平后,总线上的电平就会被拉成显性电平

3.2 CAN收发器芯片

4 CAN帧种类介绍

CAN总线是以“**帧”**的形式进行通信

帧类型 作用
数据帧(Data Frame) 用于发送单元向接收单元传输数据的帧
遥控帧(Remote Frame) 用于接收单元向具有相同ID的发送单元请求数据的帧
错误帧(Error Frame) 用于当检测出错误时向其它单元通知错误的帧
过载帧(Overload Frame) 用于接收单元通知其尚未做好接收准备的帧
间隔帧(Inter Frame Space) 用于将数据帧及遥控帧与前面的帧分离开来的帧

5 CAN数据帧介绍

数据帧由7段组成

又分为

    标准帧(CAN2.0A,11 位 ID)扩展帧(CAN2.0B,29位 ID)

5.1 标准数据帧(CAN2.0A)

标准数据帧完整位排列,总计1 + 12 + 6 + 8N + 16 + 2 + 7 = 44 + 8N

SOF(1)|ID11(11)|RTR(1)|IDE(1)|r0(1)|DLC(4)|DATA(0‑64)|CRC15(15)|CRC_DEL(1)|ACK_SLOT(1)|ACK_DEL(1)|EOF(7)

5.1.1 帧起始-1位

SOF(Start Of Frame)

1 位,显性电平 (0)标志一帧消息开始,所有节点同步

5.1.2 仲裁段-12位(11+1)

表示帧优先级

ID:报文标识符,11位,决定报文优先级,ID 数值越小优先级越高

RTR 位(Remote Transmission Request,远程发送请求位):数据帧固定为显性 0;远程帧为隐性 1

5.1.3 控制段-6位(1+1+4)

表示数据的字节数以及保留位

IDE(Identifier Extension Bit):扩展标识符位,0 = 标准帧,1 = 扩展帧R0

(Reserved Bit 0):保留位

DLC(Data Length Code):数据长度码,4bit,表示后面数据段字节数,范围 0~8

CAN 一帧最多携带8 字节有效数据

5.1.4 数据段-0~64位

数据的内容,一帧可以发0~8字节数据

5.1.5 CRC段-16位(15+1)

检测帧的传输错误

    • CRC(Cyclic Redundancy Check):15bit,对 SOF 到数据场做 CRC 校验,用于检测传输错误。

DEL(Delimiter‌):CRC 界定符,1 位隐性 1

5.1.6 ACK段-2位(1+1)

表示确认正常接收

ACK(Acknowledgment):ACK 槽

发送节点输出隐性 1;所有正确接收报文的接收节点,把这里拉成显性 0 应答

发送方看到 ACK 槽是 0:代表至少有一个节点收到;如果还是 1,说明无人应答,会触发重发

DEL(Delimiter‌):ACK 界定符,1 位隐性 1

5.1.7 帧结束-7位

EOF(End Of Frame),表示数据结束,7个隐性1

5.2 扩展数据帧(CAN2.0B)

标准数据帧完整位排列,总计1 + 32 + 6 + 8N + 16 + 2 + 7 = 64 + 8N

SOF(1)|ID_BASE11(11)|SRR(1)|IDE(1)|ID_EXT18(18)|RTR(1)|r1 r0|DLC(4)|DATA|CRC|CRC_DEL|ACK|ACK_DEL|EOF(7)

5.2.1 仲裁段-32位(11+1+1+18+1)

ID:报文标识符,决定报文优先级,ID 数值越小优先级越高

SRR(Substitute Remote Request):替代远程请求位IDE(Identifier Extension Bit):扩展标识符位,0 = 标准帧,1 = 扩展帧Extended ID:扩展ID,18位

RTR 位(Remote Transmission Request,远程发送请求位)

5.2.2 控制段-6位(1+1+4)

    • R1(Reserved Bit 1):保留位R0(Reserved Bit 0):保留位

DLC(Data Length Code):数据长度码,4bit,表示后面数据段字节数,范围 0~8

CAN 一帧最多携带8 字节有效数据

6 总结

本篇介绍了CAN的发展历史、CAN协议分类、CAN物理层、CAN数据帧的基础知识。

相关推荐

控制科学与工程硕士,日常分享单片机、嵌入式、C/C++、Linux等学习经验干货~