内容提要
引言
1. CAN-FD总线协议概述
2. CAN-FD的仲裁场(Arbitration Field) &控制场(Control Field)
3. CAN-FD的CRC场(CRC Field)
4. CAN2.0A/B(Classic CAN) vs. CAN-FD 传输效率
5. CAN-FD与CAN2.0 A/B节点共同组网要求
总结
参考文档
引言
上篇公众号文章(点击文章标题即可直接跳转阅读)--《细说汽车电子通信总线之CAN 2.0 总线协议详解》详细介绍了目前汽车电子ECU中使用最为广泛的传统CAN 2.0 A/B总线协议。
但是随着汽车电子的日益发展,尤其是汽车智能化(Autonomy,自动驾驶技术)、电气化(Electrification,零排放、跟严格的排放标准,e.g 国VI,新能源电动车或者氢能源车)和互联化(Connectivity,车联网, V2V,V2X等),对汽车电子通信总线的带宽提出了更高的要求。
传统CAN 2.0 A/B总线协议已经很难满足汽车电子的发展需求,因此,一种能够与CAN 2.0 A/B兼容,但通信速率更高,有效载荷更高的CAN总线--CAN-FD总线协议应用而生。
本文就给大家详细介绍一下CAN-FD总线协议,希望对大家有所帮助。
1. CAN-FD总线协议概述
由于汽车行业的带宽要求,需要改进CAN数据链路层协议。2011年,博世与汽车制造商和其他CAN专家密切合作,启动了CAN FD(Flexible Data rate,灵活数据速率)开发。
改进的CAN-FD总线协议克服了CAN 2.0的限制:可以比1 Mbit/s更快地传输数据(CAN-FD的数据场传输数据率可高达8MBbit/s),并且每帧CAN报文的有效载荷(payload数据字段)不再限于8字节(CAN-FD的数据场长度最大可支持到64字节)。
CAN-FD和CAN主要的区别有两点:
1、可变速率
CAN-FD采用了两种位速率:从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同。
2、新的数据场长度
CAN-FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节。
CAN FD协议控制器兼容支持传统CAN 2.0 A/B帧。两种CAN协议(CAN 2.0和CAN FD)在ISO 11898-1:2015中都是国际标准化的。具有11位标识符的CAN FD数据帧使用FBFF(FD基本帧格式),具有29位标识符的CAN FD数据帧使用FEFF(FD扩展帧格式)。CAN FD协议不支持远程请求的数据帧。
2. CAN-FD的仲裁场(Arbitration Field) &控制场(Control Field)
CAN-FD的仲裁场(Arbitration Field) 与CAN 2.0 A/B兼容:
-
IDE(Identifier Extension Flag)-bit: 用于标识使用扩展ID还是标志ID帧;
-
RRS(Remote Request Substitution)-bit: 用于控制远程请求订阅;
-
SRR(Substitute Remote Request)-bit: 用于控制订阅远程请求;
这意味着CAN-FD也是可以支持标准ID和扩展ID的,但其没有RTR(RemoteTransmission Request)-bit,因此不支持远程帧。
CAN-FD的控制场(Control Field) 在CAN 2.0 A/B的基础上,扩展了FDF(FlexibleData Format),以标识是否为CAN-FD帧(FDF=1);并增加了EDL(Extended DataLength)扩展数据长度标识位、BRS(Bit Rate Switch)数据场比特率切换控制位和ESI(ErrorStatus Indicator)错误状态指示位:
CAN-FD为了保持与CAN 2.0的兼容,虽然DLC(Data Length Control)数据长度控制位依然保持为4-bit,但增加了12/16/20/24/32/48/64选项:
3. CAN-FD的CRC场(CRC Field)
CAN FD节点对不同的帧格式使用不同的CRC生成多项式。第一个多项式CRC_15用于CAN格式的所有帧。第二个CRC_17用于CAN FD格式的帧,DATA FIELD最长为16个字节。第三个CRC_21用于CAN FD格式的帧,DATA FIELD长度超过16个字节。每个多项式保证HD = 6的汉明距离;
4. CAN2.0A/B(Classic CAN) vs. CAN-FD 传输效率
为了对CAN-FD相较于传统CAN2.0总线的传输效率有一个比较直观的认识,本小节就以一个实际的应用案例介绍这两种CAN总线的传输效率计算方法和结果对比:
当CAN 2.0A/B工作在高速CAN模式(波特率为500Kbit/s),数据场长度为8Byte(64bit),其传输效率为58%,平均速率0.5Mbit/s;
配置与其兼容的CAN-FD,设置帧头波特率为500Kbit/s,数据场长度为64Byte(512bit),波特率为8Mbit/s,其传输效率高达90%,平均速率为4.5Mbit/s;
不同的数据长度和通信波特率,CAN总线的传输效率有所差异,如下图所示:
Tips:以上数据是通过工具CAN FD Efficiency Calculator根据用户输入自动计算,我已将该工具分享到如下百度云盘,感兴趣的读者可以自行下载使用(链接仅7天有效期)
-
链接: https://pan.baidu.com/s/158qybdxzGavhWI3ocT4oeg
-
提取码: pt43
5. CAN-FD与CAN2.0 A/B节点共同组网要求
根据CAN-FD协议,其与CAN 2.0A/B兼容,即支持CAN-FD的节点也是可以支持发送CAN 2.0 A/B报文帧的;
因此在同一个CAN总线通信网络中,允许同时存在CAN-FD节点和CAN 2.0 A/B节点:
-
CAN-FD节点可以接收和发送 CAN-FD和CAN 2.0 A/B报文,通过每一帧CAN报文的控制场自动识别;
-
CAN 2.0 A/B节点无法发送和接收CAN-FD报文,所以必须使用带有CAN-FD屏蔽(shield)的CAN收发器,才能够保证正常工作,否则会检测到总线错误;
比如,如下的一个汽车电子CAN网络中,包含了2个CAN-FD ECU节点和2个传统CAN 2.0 ECU节点,为了保证网络正常工作,需要在2个传统CAN 2.0 ECU节点使用CAN-FD屏蔽的收发器:
CAN-FD节点可以正常收发CAN2.0和CAN-FD报文帧:发送CAN-FD报文帧时,其控制场的FDF=1,标识该帧数据为CAN-FD,同时BRS根据需求设置,从而实现数据场传输数据率的切换:
CAN 2.0节点由于使用了CAN-FD屏蔽的收发器,在CAN-FD节点发送CAN-FD数据报文帧时,会在物理层检测到FDF=1,进而给节点MCU发送6-bit 显性位,制造填充错误(stuff error), 然后产生被动错误标志帧,但是不会影响其他的CAN网络节点正常收发CAN-FD报文帧数据:
CAN-FD屏蔽收发器将在CAN-FD报文帧的ACK场释放与MCU连接的RXD引脚,从而RXD可以正常响应总线:
Tips:由于之前量产的汽车MCU集成的CAN控制器都不支持CAN-FD,而考虑到成本和技术发展路线,整车的所有CAN ECU节点不可能一下子全部升级到支持CAN-FD,因此,CAN 2.0与CAN-FD节点共存于同一个CAN通信网络的情况在接下来若干年汽车CAN总线网路向CAN-FD升级过程中将是比较常见的。
总结
本文详细介绍了最新的CAN-FD总线协议的优势和与CAN 2.0 A/B协议的兼容/差异实现细节--仲裁场(Arbitration Field)、控制场(Control Field)和增强的CAN-FD的CRC场(CRC Field),并以一个实际案例分析了CAN2.0A/B(Classic CAN) vs. CAN-FD 传输效率计算和结果比较,最后还介绍了在传统CAN 2.0 网络向CAN-FD升级过程中如何实现CAN-FD与CAN2.0 A/B节点共同组网。
参考文档
CAN FD-The basic idea:https://www.can-cia.org/can-knowledge/can/can-fd/
CAN FD-Wikipedia:https://en.wikipedia.org/wiki/CAN_FD