为了实现汽车的安全性和舒适性、增强连接、电动化、自动驾驶功能、网络安全措施等,在目前市售汽车中广泛使用的车载网络CAN(Controller Area Network)中,通信速度(比特率)和数据长度不够。因此,需要能够高速发送更多数据的车载网络。
因此,开发CAN的博世(Robert Bosch)于2012年以扩展CAN的形式发布了CAN FD(CAN With Flexible Data Rate)的规格。在与CAN FD相关的形式下,2015年制定了ISO11898-1:2015作为定义CAN数据链路层的ISO11898-1的修订版,2016年制定了ISO11898-2:2016,其中包括低功耗模式和唤醒规范,作为定义CAN物理层的ISO11898-2的修订版。
ECU软件的膨胀增加了处理器的ROM容量。在开发ECU时,需要将软件写入ROM,但在此之前,它是通过CAN通信完成的。然而,CAN需要很长的时间来重写大容量的软件。因此,正在考虑采用更快的CAN FD。
此外,当CAN总线负载增加,延迟时间增加或带宽不足时,通过划分网络来解决带宽不足。替换为CAN FD消除了带宽不足,因此不需要对网络进行划分。
此外,作为网络安全措施,汽车制造商正在考虑采用AUTOSAR规定的基于SecOC(安全board Communication)的消息认证,并考虑采用一次发送更多数据的CAN FD。
除了替换现有的CAN网络之外,还考虑在新应用和其他网络中使用,包括高级安全驾驶辅助系统和传感器网络的一部分。
CAN FD是一种通信协议,可扩展CAN协议并快速传输更多数据。CAN在仲裁来自多个节点的通信的仲裁阶段和发送数据的数据阶段具有相同的比特率。同时,CAN FD可以在仲裁阶段和数据阶段设置为不同的比特率。这就是CAN FD(Flexible Data Rate)的由来。
数据阶段的最大比特率没有明确规定,在很大程度上取决于网络拓扑和ECM要求。ISO 11898-2:2016规定了5 Mbps的定时要求。汽车制造商正在考虑根据应用和网络拓扑结构以不同组合的比特率使用。
例如,在诊断和重编程应用中,数据阶段的比特率可能为5 Mbps,控制系统的比特率为500 kbps至2 Mbps。另外,CAN FD可以在一个数据帧中发送最多64字节的数据(稍后将讨论协议的详细信息)。
用于星型、总线类型、点对点等网络拓扑。
CAN FD仅定义数据帧,而没有由CAN定义的远程帧。这是因为没有数据区的远程帧不需要切换数据阶段的比特率。
数据帧和CAN一样,有“标准格式(11位ID)”和“扩展格式(29位ID)”两种形式。加快BRS(Bit Rate Switch)位到CRC Delimiter位之间的比特率。
CAN FD帧由开始帧(SOF)和7个比特区域组成:仲裁区域、控制区域、数据区域、CRC区域、ACK区域和结束帧(EOF)。
当从节点发送帧时,第一个发送的部分处于显性状态,以表示帧的“开始”。这一部分称为“SOF(Start Of Frame)”。SOF和CAN一样,是1位“显性”位。通过SOF从总线空闲的中继(1)变为显式(0),接收节点可以进行同步。SOF的定义在CAN FD和CAN中是相同的。
CAN FD的仲裁区域由Identifier和RRS(Remote Request Substitution)位组成。Identifier与CAN一样,用于识别数据内容和传输节点,并用于确定通信仲裁的优先级。CAN上使用的RTR(Remote Transmission Request)位已被RRS替换。
RRS位(Remote Request Substitution)
CAN FD没有远程帧,因此RRS位固定为显式。
CAN FD的控制区域由IDE(Identifier Extension Bit)位、FDF(FD Format Indicator)位、res位、BRS(Bit Rate Switch)位、ESI(Error State Indicator)位构成。CAN FD新增了FDF位、BRS位和ESI位。IDE位与CAN一样,是表示标准帧或扩展帧的标志,res位是保留位。
FDF(FD Format Indicator)
如果FDF位是显式的,则是CAN的数据帧,而对于恢复,则是CAN FD的帧。
BRS(Bit Rate Switch)
如果BRS位为恢复,则意味着传输节点在BRS位采样点切换到传输速率较快的时钟模式。
响应的所有接收节点也必须切换时钟模式。CRC Delimiter采样点的所有节点都返回仲裁阶段的波特率。
也就是说,所有CAN FD节点都有两种波特率。
ESI(Error State Indicator)
ESI是表示发送节点的错误状态的标志,在发送节点的错误状态为Error Passive的情况下为遗留,在Error Active的情况下为显性。ESI位允许所有节点检查当前发送节点的错误状态。CAN帧没有方法来通知发送节点的错误状态。
数据长度代码(DLC:数据长度代码)
DLC表示要发送多少字节的数据。CAN和CAN FD均为4位配置。对于CAN FD,您可以发送最多64字节的数据。您可以选择0到8、12、16、20、24、32、48和64字节的数据长度。CAN为0-8字节。不能指定除此处描述的数据长度以外的数据长度,例如14字节或50字节。
与CAN一样,在数据区中设置传输数据。从最高有效位(MSB)发送DLC中指定的值的数量数据。
CRC区域的变化是以下5点:
CRC区域中添加了新的Stuff Count,CRC需要17位或21位。在这里,我们将讨论添加的Stuff计数和更改CRC的计算、位填充规则和CRC Delimiter的更改。
Stuff Count(CAN FD)
Stuff Count由以下两个元素组成:
CRC
为了保持传输质量随着数据区域的增加,计算CAN FD CRC,包括SOF到数据区域的位,以及Stuff Count和塞入位。接收节点通过比较CRC的计算结果来确定是否成功接收。
CAN为15位,而CAN FD的CRC位数如下:
如果传输数据小于16字节,则CRC 17位。
发送数据超过16字节时:CRC 21位
位填充规则
与CAN一样,填充比特从SOF插入到数据区域的末端。插入的工作人员位的数量受到格雷码和奇偶校验位的保护(Stuff Count)。
在CRC区域中,将填充比特放置在固定比特位置,称为固定填充比特(Fixed Stuff Bit)。固定塞位的值与前一位的值相反(Stuff Count和前后都有固定塞位)。
CRC Delimiter
CRC Delimiter始终以1位重复发送表示CRC结束的分隔符。但是,在CAN FD的情况下,考虑到节点之间的相位偏差,接收方最多允许2位时间。CAN FD帧的数据区域(可加速区域)是CRC Delimiter的第一个1位采样点。
CAN FD的ACK区域与CAN一样,由ACK和ACK Delimiter组成。CAN的ACK为1位时间,而CAN FD的接收节点将其识别为有效的ACK,最多可达2位时间。
额外的1位时间用于补充从高速数据区域到低速仲裁区域的时钟切换时发生的收发器相移和总线传播延迟。ACK后,发送ACK Delimiter。这是一个表示ACK结束的分隔符,是一个1位的后继。
在数据帧的末尾,发送“EOF(End Of Frame)”,与CAN一样,EOF是7位长度的Rissey。