本篇来介绍CAN协议。
1 CAN基础介绍
CAN(Controller Area Network),是ISO国际标准化的串行通信协议,CAN总线由两根线(CANL和CANH)组成,通过差分信号传递信息。
满足汽车产业的减少线束数量,高速通信的需求,也广泛应用于工业自动化、船舶、医疗设备等。
1.1 CAN的发展历史
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收发器芯片
- TJA1050:恩智浦(NXP)的汽车级(Transceiver, J-series, Automotive)CAN 收发器SIT1050T: 芯力特(SITCORES)推出的一款高速CAN 总线收发器NSi1042D:纳芯微(NOVOSENSE)生产的隔离式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数据帧的基础知识。
922