有了CAN,为什么还要CAN FD呢?
随着汽车功能的不断增加,CAN总线的限制逐渐显现出来:
-
CAN总线的最高速率为1Mbit/s,通常使用的速率是500k。随着功能的增加,各ECU之间的信息交互也变得更频繁,导致总线负载不断增加。 -
在CAN报文中,只有约40~50%的带宽可以用于实际数据传输。 -
响应机制受到车内布线的物理特性的限制,如CAN控制器中ACK的生成延迟、收发器的传播延迟以及导线的延迟等。
为了解决这些CAN总线的限制,对其进行升级变得必要,这就引出了CAN FD,即具有灵活数据速率的CAN。
CAN FD的开发始于2011年,并于2015年被纳入ISO11898-1标准进行修订。
相对于CAN,CAN FD有什么不同呢?
-
传输速率不同。CAN FD的速率是可变的,从控制场中的BRS位到ACK场之前(包括CRC分界符)的部分是以可变速率进行传输的,最高速率可以达到8Mbps(图中蓝色部分)。其他部分与CAN相同。
2、数据长度不同。CAN FD支持的最大数据长度为64byte。
3、帧格式不同。CanFD新增了FDF、BRS、ESI位:
FDF:表示CAN报文还是CAN-FD报文;
BRS:表示位速率转换,该位隐性时,速率可变(即BSR到CRC使用转换速率传 输),该位为显性时,以正常的CAN-FD总线速率传输(恒定速率);
ESI:表示发送节点状态。
4、ID长度不同。CAN FD标准帧ID长度可扩展至12bit,CAN的标准帧ID为11bit。
CAN FD与CAN的兼容性咋样?
CAN FD节点可以正常收发CAN报文,但CAN节点不能正确收发CAN FD报文,因为其帧格式不一致。
CAN FD的帧结构是什么呢?
与CAN一样,CAN FD一共具有,帧起始SOF,仲裁段,控制段,数据域,CRC域,ACK域,帧结束,共七个部分组成。
帧起始
CAN与CANFD使用相同的SOF标志位来标志报文的起始。帧起始由1个显性位构成,标志着报文的开始,并在总线上起着同步作用。
仲裁域
与CAN不同,CAN FD取消了对远程帧的支持,用RRS位替换了RTR位,为常显性。IDE用于区分标准帧和扩展帧。
控制域
CANFD与CAN有着相同的IDE,res,DLC位。同时增加了FDF、BRS、ESI三个bit位。FDF为隐性时,表示为CAN FD报文;
BRS为为速率转换开发,当其隐性时,速率可变,当其显性时,以正常的CAN-FD总线速率传输(恒定速率);
ESI用于表示错误状态,主动错误发送显性位,被动错误发送隐性位。
数据域
CAN FD兼容CAN的数据格式,同时最大还能支持12, 16, 20, 24, 32, 48, 64byte。
CRC
CAN FD对CRC算法进行了改进,CRC对填充位也加入了计算。在校验和部分为避免有连续位超过6个,就确定在第一位以及以后每4位添加一个填充位加以分割,这个填充位的值是上一位的反码,作为格式检查,如果填充位不是上一位的反码,就作出错处理。CAN FD的CRC场扩展到了21位。
ACK
ACK紧跟着CRC结束标识位。不同的是,CAN FD支持2bits的ACK的识别。
帧结尾
与CAN一样,CAN FD的帧结尾也为连续7位的隐性位。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !