汽车电子expert成长之路

本博客发布的个人原创精品----嵌入式系统技术文章,欢迎大家参考学习,并转发分享!

细说汽车电子通信总线之CAN-FD 总线协议详解

0
阅读(11534)

内容提要


引言

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节点共同组网要求

总结

参考文档


    引言

    随着汽车电子的日益发展,尤其是汽车智能化(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,灵活数据速率)开发。

12.jpg

    改进的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字节。

11.jpg

    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协议不支持远程请求的数据帧。

10.jpg


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)错误状态指示位:

9.jpg

    CAN-FD为了保持与CAN 2.0的兼容,虽然DLC(Data Length Control)数据长度控制位依然保持为4-bit,但增加了12/16/20/24/32/48/64选项:

8.jpg


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的汉明距离;

7.jpg


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;

13.jpg

    不同的数据长度和通信波特率,CAN总线的传输效率有所差异,如下图所示:

6.jpg

    Tips:以上数据是通过工具CAN FD Efficiency Calculator根据用户输入自动计算,我已将该工具分享到如下百度云盘,感兴趣的读者可以自行下载使用(链接仅7天有效期)



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屏蔽的收发器:

6.jpg

    CAN-FD节点可以正常收发CAN2.0和CAN-FD报文帧:发送CAN-FD报文帧时,其控制场的FDF=1,标识该帧数据为CAN-FD,同时BRS根据需求设置,从而实现数据场传输数据率的切换:

7.jpg

    CAN 2.0节点由于使用了CAN-FD屏蔽的收发器,在CAN-FD节点发送CAN-FD数据报文帧时,会在物理层检测到FDF=1,进而给节点MCU发送6-bit 显性位,制造填充错误(stuff error), 然后产生被动错误标志帧,但是不会影响其他的CAN网络节点正常收发CAN-FD报文帧数据:

6.jpg

    CAN-FD屏蔽收发器将在CAN-FD报文帧的ACK场释放与MCU连接的RXD引脚,从而RXD可以正常响应总线:

7.jpg

    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