为什么需要CAN FD?
在汽车行业,为什么需要CAN FD?
1. 原因主要是因为汽车功能越来越多,越来越复杂,传统的CAN总线(CAN2.0)的负载率越来越高,甚至负载率高达95%。
2. 因为传统CAN总线的局限性:
· 传输率最大为1Mbiy/s(典型的<= 500kbit/s);
· 传统CAN数据帧超过50%的额外开销(overhead > 50%)。
3. 对比其他协议,额外开销比例要小得多,如UDP (1500 bytes/datagram, 64 bytes overhead),FlexRay(254 bytes/frame, 8 bytes overhead)。
4. 因为历史原因,汽车不可能直接放弃目前的传统CAN总线技术,一切推到重来。那么为了解决CAN总线负载率问题,而又能兼容CAN总线,并且研发成本不能太高的问题,2015年最新的修订版ISO 11898-1(classic CAN和CAN FD)发布。
什么是CAN FD?
CAN FD 是CAN with Flexible Data rate的缩写。也可以简单的认为是传统CAN的升级版。在上一篇文章汽车的中枢神经系统——CAN总线简介可以看到CAN整个发展历程。
2011年,开始CAN FD协议的开发。
2015年,ISO 11898-1(Classical CAN和CAN FD)修订版发布。
对比传统CAN总线技术,CAN FD有两方面的升级:
1. 支持可变速率—> 最大5Mbit/s;
2. 支持更长数据长度--> 最长64 bytes数据。
CAN FD的开发成本和传统CAN开发成本相差不大,并且可以和传统CAN很好兼容。
CAN FD对比FlexRay的优势在于:
1. CAN FD的开发成本远低于FlexRay;
2. FlexRay对ECU升级刷写不友好。
CAN FD对比以太网的优势在于:
1. CAN FD的开发成本远低于以太网;
2. 以太网优势在于大数据的传输但不能完全适用于当前汽车架构。
CAN FD 数据帧
对比传统CAN的数据帧,CAN FD在控制场新添加EDL位、BRS位、ESI位,采用了新的DLC编码方式、新的CRC算法(CRC场扩展到21位)。
1. 起始位SOF(start of frame)
传统CAN的数据帧起始位SOF和CAN FD的数据帧起始位SOF是一样的,一个bit的显性位‘0’。
2. 仲裁场(Arbitration Field)
对比传统CAN数据帧,CAN FD共享相同的CAN ID,包括扩展数据帧的ID。
CAN FD用RRS bit(始终为显性位‘0’)代替RTR。
FDF(FD format)表示CAN FD还是传统CAN数据帧:
· FDF – ‘0’ --> 传统CAN数据帧
· FDF – ‘1’--> CAN FD数据帧
BRS(Bit Rate Switch)表示时钟频率的切换:
· BRS – ‘1’-->时钟频率切换
ESI(Error State Indicator)表示CAN总线的错误状态。
3. DLC控制域(control Field)
DLC用于表示数据帧的数据长度。并且支持传统CAN 数据帧的编码方式。
4. CRC
CAN总线由于位填充规则对CRC的干扰,造成错帧漏检率未达到设计意图。CAN FD对CRC算法做了改变,即CRC以含填充位的位流进行计算。在校验和部分为避免再有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码。作为格式检查,如果填充位不是上一位的反码,就作出错处理。CAN FD的CRC场扩展到了21位。
根据不同的数据长度,CRC的长度也不一样:
· CRC 15bits –> 传统CAN;
· CRC 17bits--> 数据长度<= 16bytes;
· CRC 21bits -->数据长度>16bytes。
CRC的结束标识位(CRC Delimiter)一般是1位,但也接收2位。
5. ACK
ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别。
6. 结束标识符(End of Frame)
EOL在传统CAN,CAN FD中都是7个连续隐性位“1”。
性能对比