在汽车领域,随着人们对数据传输带宽要求的增加,传统的CAN总线由于带宽的限制难以满足这
种增加的需求。此外为了缩小CAN网络(max. 1MBit/s)与FlexRay(max.10MBit/s)网络的带宽差距,BOSCH公司推出了CAN FD。
CAN FD(CAN with Flexible Data rate)继承了CAN总线的主要特性。CAN总线采用双线串行通讯协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制使CAN总线有很高的安全性,但CAN总线带宽和数据场长度却受到制约。CAN FD总线弥补了CAN总线带宽和数据场长度的制约,CAN FD总线与CAN总线的区别主要在以下两个方面:
1. 可变速率:CAN FD采用了两种位速率。 CAN FD的仲裁场和数据场速率可变:在仲裁场用低速500kbit/s,在数据场可选择用高速如2Mbit/s,而传统CAN总线只能保持同一个速率。从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同;
2. 新的数据场长度:CAN FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC
小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字
1、为什么不简单地用64个字节的数据打包经典CAN数据帧?
这样做将减少开销并简化消息解释。但是,如果比特率保持不变,这也会阻塞CAN总线更长的时间,从而可能延迟关键任务的更高优先级的数据帧。
2、如果我们希望每条消息发送更多数据,则需要更高的速度。但是,为什么不加速整个 CAN消息而不仅仅是数据阶段呢?
这是由于“仲裁”:如果2个以上的节点同时发送数据,则仲裁将确定哪个节点具有优先权。“优胜者”
继续发送(无延迟),而其他节点在数据传输期间“退避”。在仲裁过程中,“位时间”在每个位之间提供足够的延迟,以允许网络上的每个节点做出反应。为了确保在位时间内到达每个节点,以1 Mbit / s的速度运行的CAN网络的最大长度应为40米(实际上为25米)。加快仲裁过程会将最大长度减少到不合适的水平。另一方面,仲裁后有一条“空旷的高速公路”,可在数据传输期间(只有一个节点驱动总线时)实现高速传输。在ACK时隙之前-当多个节点确认正确接收数据帧时-速度需要降低到标称比特率。简而言之,我们需要一种仅在数据传输过程中提高速度的方法。并保持实际的CAN线长。
CANFD与CAN的区别
1. CAN-FD:可以理解成CAN协议的升级版,只升级了协议,物理层未改
变。
2. CAN与CAN-FD主要区别:传输速率不同、数据长度不同、帧格式不
同、ID长度不同。
3. 由传统CAN转移到CANFD比较方便
2. 传输速率不同
1. CAN:最大传输速率1Mbps。
2. CAN-FD:速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps。
3. 数据域长度不同
1. CAN:一帧数据最长8字节
2. CAN-FD:一帧数据最长64字节。
4. 协议内容改变—取消远程帧
5. CANFD报文具体结构—红色缩写为增加部
6. CAN报文与CANFD报文结构对比
1. CANFD不存在远程帧,CAN报文中的RTR(用于区别标准帧与远程帧)被替换为RRS(远程请求替代位,默认值为0)RTR与RRS:远程传输请求(RTR)在经典CAN中用于标识数据帧和相应的远程帧。在CAN FD中,根本不支持远程帧-远程请求替换(RRS)始终占主导地位(0)
2. FDF用于传统CAN报文和CANFD报文,FDF位为0时为传统报文,FDF为1时为CANFD报文
3. BRS位速率切换为,BRS位为0时CANFD速率保持恒定速率、BRS位为
1时CANFD的数据段会被切换到高速率
4. ESI错误状态指示位:CAN报文中发送节点的错误状态只有该节点自己
知道,CANFD报文中可以通过ESI标志位来告诉其他节点该节点的错误
状态,当ESI为1时表示发送节点处于被动错误状态、当ESI为0时表示发
送节点处于主动错误状态
5. CRC-stuff count:填充位计数(计算从SOF开始到Data Field最后一位
的填充位的个数)
1、CRC场之前和CRC场之后位填充是不一样的
2、SOF到Data Field最后一位的位填充跟CAN报文一样:每五个相同位之后填
充一个相反位
3、CRC场采用固定位填充
1. Stuff Count由以下两个元素组成:
格雷码计算(前3位):CRC区域之前的填充位数除以8,得到的余数
(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)
奇偶校验(最后1位):通过格雷码计算后的值的奇偶校验(偶校验)
7. 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
7. CANFD报文的标准帧和扩展帧—IDE为1表示为扩展帧、为0表示标准帧