概述
CANFD提出
引入CAN总线的数十年中,汽车嵌入式系统的结构发生了深远的变化,最明显的变化是数量:如果在引入CAN时只需传输数百个信号,那么今天这个数字已达到五位数。
数据流量的增加导致CAN总线上的总线负载率越来越高。除了对带宽的需求在不断增加,对确定性系统行为的需求也在不断增长,这刺激了新总线系统的开发。因此,出于信息娱乐目的,开发了带宽高达150 Mbit/s的MOST总线。确定性FlexRay总线可提供10Mbit/s的带宽,用于驾驶员辅助功能。在带宽范围的低端,引入了LIN作为低成本解决方案,用于完成传感器-执行器-区域中的任务。这些新的总线系统覆盖了各个领域,但CAN仍然是主流的汽车总线系统。
只有极少数的CAN需要替换为传输速率更快的总线,例如FlexRay。但没有替换的主要原因是硬件成本较高以及将系统转化为新技术的开发工作巨大。使用更多路CAN总线通常可以规避CAN带宽不足,但这需要网关在总线之间传输数据。
CAN带宽的限制因素源于自身的一个核心属性:在报文传输的特定阶段,多个网络节点可能同时处于传输模式。仲裁阶段传输开始时可能就是这种情况,并且在报文末尾的应答场中也是始终如此。这意味着一个位的传输时间不得短于其电压电平从总线一端的节点传播到另一端的节点再返回所需的时间。例如:在长度为40米的CAN总线上,若要满足一个位所需的传输时间,最大传输速率应约为1 Mbit/s。
但在CAN报文仲裁阶段和应答场之间,仅允许一个发送节点。因此,这一部分对位时间的最小持续时间没有限制。那么在博世的工程师看来,如果在CAN报文这一部分提高传输速率会怎样?只需在两个不同的传输速率之间切换:在CAN报文的开头和末尾切换为慢速,在中间切换为快速。这就是CAN FD的基本概念。
CANFD引入后的问题
快地传输CAN FD帧的有效负载可缩短传输时间,即总线负载率降低。另一方面,可以同时传输更长的数据场,即只需使用一个CAN FD帧。例如,如果使用CAN FD以五倍的速度传输数据场,假设该帧包含的数据比普通CAN帧多五倍,则两者用时大致相同。因此,CAN FD帧可以传输五倍于CAN帧的信息,且不会增加总线负载率。
引入CAN FD将为开发过程带来许多好处:
- 总线负载率问题将大大减少
- 不再需要使用多条CAN总线
- 即使未能消除对网关的需求,也会大大减少
- 由于每一帧可以承担更多的有效负载,因此需要的数据段更少
- 使用更少的帧,获得更理想的有效负载与开销数据比
但为了确保CAN FD正常工作,需要新的CAN FD控制器。CAN FD控制器是向下兼容的,并且能够处理经典CAN (Classical CAN)。CAN总线上的ECU可以逐步替换为支持CAN FD的ECU。当然,只要有一个具有常规CAN控制器的ECU,就必须使用经典CAN。这会导致硬件成本上升。
此外,与经典CAN类似,CAN FD同样采用两种类型的数据帧格式:具有11位标识符的标准帧和具有29位标识符的扩展帧。这可确保对CAN FD进行部分调整后即可使用CANopen和SAE J1939等基于CAN的高层协议。另外,CANFD没有远程帧,因为远程帧没有数据场,谈不上数据场加速。
CANFD虽然对Classic CAN+LIN的汽车架构提出了很多挑战,比如更高的EMC要求,更昂贵的收发器,更复杂的数据交互形式(PDU)。但CANFD仍能荣登殿室的原因是:千万工程师多年以来的CAN经验与相关知识仍然有效,这背后是数不清的教训与鲜活又凋谢的生命,难以割舍。
CANFD机制
RRS代替RTR
由于没有用于CAN FD的远程帧,因此RTR位不是必需的,所以被始终呈显性的RRS(Remote Request Substitution,远程请求替代位)所取代。帧起始(SOF)、标识符和标识符扩展位(IDE)保持不变。此外,CAN FD帧末尾的应答位(ACK)、相应的界定符(DEL)、帧结束(EOF)以及帧间间隔场(ITM)仍与经典CAN帧相同。CANFD拓展帧仍使用RRS。
CAN FD相对于经典CAN在IDE位与应答位之间的部分进行了修改。
用于区分CANFD的FDF
经典CAN帧的保留位成为经典CAN帧和CAN FD帧的区别标识。如果是显性值0,则表示经典CAN帧。如果是隐性值1,则表示CAN FD帧。
该位的新名称是FDF(Flexible Data Rate Format,FD格式),它为传输更大的有效载荷创造了可能。实际的数据场长度以及是否切换为更快传输速率取决于FDF位的后面部分。
这也是为什么传统CAN控制器无法识别CANFD帧的原因:不允许保留位显性。
速率切换BRS
CAN FD的保留位之后接位速率切换(BRS)位。当BRS位为显性时,波特率2等同于波特率1,因此不会加速传输。对于一条总线上的所有CAN FD控制器,必须统一配置数据场与非数据场的波特率。
从波特率1到波特率2的转换发生在BRS的采样点,从波特率2回到波特率1的转换发生在应答位之前的CRC界定符的采样点。为了使接收方即使在传输速率很高的情况下也可以与发送方完美同步,需要立即执行第二次硬同步。
错误状态指示位
错误状态指示位(ESI)在位速率切换(BRS)位之后。如果该位为显性,则表明ECU处于主动错误状态。如果该位为隐性,则表明ECU处于被动错误状态。
该位旨在以更加透明的方式跟踪错误,并简化网络管理。网络节点的主动错误和被动错误状态会在整个网络上传播。
DLC长度变化
在经典CAN的基础上,DLC中其余的七个值(即9到15)用于CAN FD。如果DLC > 8,DLC与字节数之间将不是线性对应的关系。
下表显示了DLC对CAN和CAN FD中数据场大小的不同含义:
更长的CRC
相较于经典CAN,CAN FD帧中出现位错误的可能性有所增加。之所以如此,一方面是因为高速段的位时间更短,另一方面是因为数据场中的位数更多。解决此问题需要在CAN FD帧中实现更大的冗余,否则,接收方无法检测到错误的可能性就会增加。数据场不超过16个字节的CAN FD帧将由17个CRC位保护。数据场超过16个字节时,对应的CRC为21个位。
两个生成多项式分别是CRC17的0x3685B,以及CRC21的0x302899。
Stuff Count填充计数规则:
格雷码计算:CRC区域之前的填充位数除以8,得到的余数(Stuff bit count modulo 8)进行格雷码计算得到的值(Bit0-2)
奇偶校验:通过格雷码计算后的值的奇偶校验(偶校验,Parity)
位填充的变化
在传统的CAN帧中,从帧起始(SOF)到校验场末尾(CRC)添加填充位。在每五个相同的位之后插入一个相反的位。这些填充位不计入校验场。
在CAN FD中,从帧起始(SOF)到数据场末尾添加填充位。在计算校验场时,会将这些填充位也考虑进去。填充位计数器(对7取模)和奇偶校验位在帧中紧接在数据场后。
CRC场本身也会被填充,且频率更高。以下是适用规则:CRC场始终以与前面的位相反的填充位开头。在接下来的每四个位(无论是否相同)之后,插入与前一位相反的填充位。
在CRC之后,不再插入填充位,这一点与经典CAN中相同。
更加容忍的ACK
CANFD的ACK应答位只有一位,但是有效应答可以传输2个位时间,即在ACK紧随的DEL界定位时间内接收到应答仍视为有效应答。
设计此机制的原因与在ACK前一位的DEL进行速率切换有一定关系,目的是为了减少传输延迟带来的错误。延迟的产生可以有很多种,速率切换延迟,物理传输延迟,片内处理延迟等。
第二采样点
标签:知识点,填充,CRC,总线,CANFD,传输,FD,整理 From: https://www.cnblogs.com/YiMo9929/p/18259478