在汽车领域,随着人们对数据传输带宽要求的增加,传统的CAN总线由于带宽的限制难以满足这种增加的需求。此外为了缩小CAN网络(max. 1MBit/s)与FlexRay(max.10MBit/s)网络的带宽差距,BOSCH公司2011年推出了CAN FD方案 。
CAN FD(CAN with Flexible Data rate)继承了CAN总线的主要特性。CAN总线采用双线串行通讯协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制使CAN总线有很高的安全性,但CAN总线带宽和数据场长度却受到制约。CAN FD总线弥补了CAN总线带宽和数据场长度的制约,CAN FD总线与CAN总线的区别主要在以下两个方面:
可变速率
CAN FD采用了两种位速率:从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率,即仲裁段和数据控制段使用标准的通信波特率,而数据传输段时就会切换到更高的通信波特率,数据传输速率可大于。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同。
新的数据场长度
CAN FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节。
CAN FD 介绍
1. CAN FD数据帧帧格式
CAN FD 数据帧在控制场新添加EDL位、BRS位、ESI位,采用了新的DLC编码方式、新的CRC算法(CRC场扩展到21位)。CAN FD数据帧格式如下图:
2. 新添加位介绍
EDL(Extended Data Length)位:
原CAN数据帧中的保留位r, 该位功能为隐性,表示 CAN FD报文,采用新的DLC编码和CRC算法;该功能位为显性,表示CAN报文。
BRS(Bit Rate Switch)位:
该功能位为隐性,表示转换可变速率;为显性,表示不转换可变速率。
ESI(Error State Indicator)位:
该功能位为隐性,表示发送节点处于被动错误状态(Error Passive),为显性,表示发送节点处于主动错误状态(Error Active)。
EDL位可以表示CAN报文还是CAN FD报文;BSR位表示位速率转换,该位为隐性时,表示报文操BSR位到CRC界定符之间使用转换速率传输,其余场位使用标准位速率,该位为显性时,表示报文以正常的CAN FD总线速率传输;通过ESI位可以方便地获悉当前节点所处的状态。
3.新的CRC算法
CAN总线由于位填充规则对CRC的干扰,造成错帧漏检率未达到设计意图。CAN FD对CRC算法作了改变,即CRC以含填充位的位流进行计算。在校验和部分为避免再有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码,作为格式检查,如果填充位不是上一位的反码,就作出错处理。CAN FD的CRC场扩展到了21位。由于数据场长度有很大变化区间,所以要根据DLC大小应用不同的CRC生成多项式,CRC_17,适合于帧长小于210位的帧,CRC_21,适适合于帧长小于1023位的帧。CRC多项式如下图所示:
4.新的DLC编码
CANFD 数据帧采用了新的新的DLC编码方式,在数据场长度在0-8个字节时,采用线性规则,数据场长度为12-64个字节时,使用非线性编码。如下图:
总结
CAN FD协议是CAN-BUS协议的最新升级,将CAN的每帧8字节数据提高到64字节,波特率从最高的1Mbps提高到8-15Mpbs,使得通讯效率提高8倍以上,大大提升了车辆的通讯效率。
参考:
http://www.cechina.cn/company/50633_156096/messagedetail.aspx
https://wenku.baidu.com/view/405cac789a6648d7c1c708a1284ac850ad0204f8.html
http://www.360doc.com/content/16/1212/12/30375878_614027257.shtml