1.概述
- CAN-FD:可以理解成CAN协议的升级版,只升级了协议,物理层未改变。
- CAN与CAN-FD主要区别:传输速率不同、数据长度不同、帧格式不同、ID长度不同。
- 由传统CAN转移到CANFD比较方便
2. 传输速率不同
- CAN:最大传输速率1Mbps。
- CAN-FD:速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps。
3. 数据域长度不同
- CAN:一帧数据最长8字节
- CAN-FD:一帧数据最长64字节。
4. 协议内容改变—取消远程帧
5. CANFD报文具体结构—红色缩写为增加部
6. CAN报文与CANFD报文结构对比
- CANFD不存在远程帧,CAN报文中的RTR(用于区别标准帧与远程帧)被替换为RRS(远程请求替代位,默认值为0)
- FDF用于传统CAN报文和CANFD报文,FDF位为0时为传统报文,FDF为1时为CANFD报文
- BRS位速率切换为,BRS位为0时CANFD速率保持恒定速率、BRS位为1时CANFD的数据段会被切换到高速率。
- ESI错误状态指示位:CAN报文中发送节点的错误状态只有该节点自己知道,CANFD报文中可以通过ESI标志位来告诉其他节点该节点的错误状态,当ESI为1时表示发送节点处于被动错误状态、当ESI为0时表示发送节点处于主动错误状态
- CRC-stuff count:填充位计数(计算从SOF开始到Data Field最后一位的填充位的个数)
- CRC场之前和CRC场之后位填充是不一样的
- SOF到Data Field最后一位的位填充跟CAN报文一样:每五个相同位之后填充一个相反位
- CRC场采用固定位填充
- Stuff Count由以下两个元素组成:
格雷码计算(前3位):CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)
奇偶校验(最后1位):通过格雷码计算后的值的奇偶校验(偶校验)
- CRC:随着数据场的扩大,为了保证信息发送的质量,CAN FD的CRC计算不仅要包括数据段的位,还包括来自SOF的Stuff Count和填充位。通过比较CRC的计算结果,可以判断接收节点是否能够正常接收。
在CAN中,CRC的位数是15位,而在CAN FD中,CRC场扩展到了21位,详见以下:
CAN中:CRC 15位
CANFD中当传输数据为16字节或更少时:CRC 17位
CANFD中当传输数据超过16字节时:CRC 21位
8. CRC的Bit Stuffing
- Stuff Count 之前加一个填充位,每隔4位添加1个填充位,
- 17位的CRC有6个Stuff Bits
- 21位的CRC有7个Stuff Bits