一文搞懂 CAN FD 总线协议帧格式
假期更新了一文搞懂CAN总线协议帧格式,CAN FD 总线协议怎能错过?本篇博文将讲解 CAN FD 总线协议帧格式。
对汽车电子技术感兴趣的小伙伴请关注公众号:美男子玩编程,公众号优先推送最新技术博文,创作不易,请各位朋友多多点赞、收藏、关注支持~
1、为什么会出现 CAN FD?
随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统 CAN(1MBit/s,8Bytes Payload)已难以满足日益增加的需求。
因此在 2012 年,Bosch 发布了新的 CAN FD 标准 (CAN with Flexible Data Rate) ,CAN FD 继承了 CAN 的绝大多数特性,如同样的物理层,双线串行通信协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制等,同时 CAN FD 弥补了 CAN 在总线带宽和数据长度方面的不足。
2015 年 6 月 30 日,国际标准化组织(ISO)已经正式认可 CAN FD,并无反对票通过 ISO 11898-1 作为国际标准草案。
2、什么是 CAN FD?
CAN FD 协议是由 Bosch 以及行业专家预研开发的,并于 2012 年发布。通过标准化对其进行了改进,现已纳入 ISO 11898-1:2015。一开始的 Bosch CAN FD 版本(非 ISO CAN FD)与 ISO CAN FD 是不兼容。
CAN FD 具有以下 4 个主要优点:
1、增加了数据的长度
CAN FD 每个数据帧最多支持 64 个数据字节,而传统 CAN 最多支持 8 个数据字节。这减少了协议开销,并提高了协议效率。
2、增加传输的速度
CAN FD 支持双比特率:与传统 CAN 一样,标称(仲裁)比特率限制为 1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达 5 Mbit/s 的数据比特率。
3、更好的可靠性
CAN FD 使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,从而降低了未被检测到的错误的风险。这在汽车和工业自动化等安全攸关的应用中至关重要。
4、平滑过渡
在一些特定的情况下 CAN FD 能用在仅使用传统 CAN 的 ECU 上,这样就可以逐步引入 CAN FD 节点,从而为 OEM 简化程序和降低成本。
实际上,与传统 CAN 相比,CAN FD 可以将网络带宽提高 3 到 8 倍,从而为数据的增长提供了一种简单的解决方案。
3、CAN FD 和 CAN 总线协议帧异同
CAN FD 和 CAN 总线协议帧格式如下所示:
CAN FD 和 CAN 总线协议帧不同点如下所示:
1、传输速率不同
CAN FD 的速率可变,从控制场中的 BRS 位到 ACK 场之前(含 CRC 分界符)为可变速率,最高速率可达到 8Mbps,其他部分与 CAN 相同。
2、数据长度不同
CAN FD 支持的最大数据长度为 64byte,CAN 支持的最大数据长度为 8byte。
3、帧格式不同
CAN FD 新增了 FDF、BRS、ESI 位:
FDF 位(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r。表示 CAN 报文还是 CAN-FD 报文,FDF 位常为隐性(1),表示 CAN FD 报文;
BRS 位( Bit Rate Switch):表示位速率转换,当 BRS 为显性位(0)时数据段的位速率与仲裁段的位速率一致(恒定速率),当 BRS 为隐性位(1)时速率可变(即 BSR 到 CRC 使用转换速率传输);
ESI 位(Error State Indicator):发送节点错误状态指示,主动错误时发送显性位(0),被动错误时发送隐性位(1)。
4、ID 长度不同
CAN FD 标准帧 ID 长度可扩展至 12bit,CAN 的标准帧 ID 为 11bit。
4、解析 CAN FD 帧结构
CAN FD 节点可以正常收、发 CAN 报文,但 CAN 节点不能正确收、发 CAN FD 报文,因为其帧格式不一致。
与 CAN 一样,CAN FD 一共具有:帧起始,仲裁段,控制段,数据段,CRC 段,ACK 段和帧结束,7 部分组成。
4.1、帧起始
CAN 与 CANFD 使用相同的 SOF 标志位来标志报文的起始。帧起始由 1 个显性位构成,标志着报文的开始,并在总线上起着同步作用。
4.2、仲裁段
与 CAN 不同,CAN FD 取消了对远程帧的支持,用 RRS 位替换了 RTR 位,为常显性。IDE 用于区分标准帧和扩展帧。
4.3、控制段
CAN FD 与 CAN 有着相同的 IDE、res 和 DLC 位,同时增加了 FDF、BRS、ESI 三个 bit 位。
FDF 位(Flexible Data Rate Format):原 CAN 数据帧中的保留位 r。表示 CAN 报文还是 CAN-FD 报文,FDF 位常为隐性(1),表示 CAN FD 报文;
BRS 位( Bit Rate Switch):表示位速率转换,当 BRS 为显性位(0)时数据段的位速率与仲裁段的位速率一致(恒定速率),当 BRS 为隐性位(1)时速率可变(即 BSR 到 CRC 使用转换速率传输);
ESI 位(Error State Indicator):发送节点错误状态指示,主动错误时发送显性位(0),被动错误时发送隐性位(1)。
4.4、数据段
CAN FD 兼容 CAN 的数据格式,同时最大还能支持:12、16、 20、 24、 32、 48 和 64byte。
像在传统 CAN 中一样,CAN FD DLC 是 4 位,表示帧中数据字节的数量。为了维持 4 位 DLC,CAN FD 使用从 9 到 15 的其余 7 个值来表示所使用的数据字节数(12、16、20、24、32、48、64)。
4.5、CRC 段
传统 CAN 中的循环冗余校验(CRC)为 15 位,而在 CAN FD 中为 17 位(最多 16 个数据字节)或 21 位(20-64 个数据字节)。 在传统 CAN 中,CRC 中可以包含 0 到 3 个填充位,而在 CAN FD 中,总是有四个固定填充位以提高通信可靠性。
4.6、ACK 段
ACK 紧跟着 CRC 结束标识位。不同的是,CAN FD 支持 2bits 的 ACK 的识别。
4.7、帧结束
与 CAN 一样,CAN FD 的帧结尾也为连续 7 位的隐性位。
5、CAN FD 的改进
CAN FD 采用了两种方式来提高通信的效率:一种方式为缩短位时间提高位速率;另一种方式为加长数据场长度减少报文数量降低总线负载率。
CAN FD 在 CRC 校验段采用了三种多项式来保证高速通讯下的数据可靠性。
1、缩短位时间提高位速率
CAN FD 支持双比特率,与传统 CAN 一样,标称(仲裁)比特率限制为 1 Mbit/s,而数据比特率则取决于网络拓扑/收发器。实际上,可以实现高达 5 Mbit/s 的数据比特率。
从控制段中的 BRS 位到 ACK 段之前(含 CRC 分界符)为可变速率,其余部分为原 CAN 总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位 TQ 外,位时间各段的分配比例也可不同。
2、加长数据段长度减少报文数量降低总线负载率
CAN FD 每个数据帧最多支持 64 个数据字节,而传统 CAN 最多支持 8 个数据字节,这减少了协议开销,并提高了协议效率。
DLC 最大支持 64 个字节,在 DLC 小于等于 8 时与原 CAN 总线是一样的,大于 8 时则有一个非线性的增长,最大的数据场长度可达 64 字节。如下所示为 DLC 数值与字节数的非线性对应关系。
3、CRC 校验段
CAN FD 使用改进的循环冗余校验(CRC)和“受保护的填充位计数器”,由于 DLCs 的长度不同,在 DLC 大于 8 个字节时,CAN FD 选择了两种新的 BCH 型 CRC 多项式,从而降低了未被检测到的错误的风险。
6、如何从传统的 CAN 升级到 CAN FD
尽管 CANFD 继承了绝大部分传统 CAN 的特性,但是从传统 CAN 到 CANFD 的升级, 我们仍需要做很多的工作。
1、在硬件和工具方面,要使用 CANFD,首先要选取支持 CANFD 的 CAN 控制器和收发器,还要选取新的网络调试和监测工具。
2、在网络兼容性方面,对于传统 CAN 网段的部分节点需要升级到 CANFD 的情况要特别注意,由于帧格式不一致的原因,CANFD 节点可以正常收发传统 CAN 节点报文,但是传统 CAN 节点不能正常收发 CANFD 节点的报文。
CAN FD 协议是 CAN-BUS 协议的最新升级,将 CAN 的每帧 8 字节数据提高到 64 字节,波特率从最高的 1Mbps 提高到 8-15Mbps,使得通讯效率提高 8 倍以上,大大提升了车辆的通讯效率。此项技术一直被欧美企业垄断,直至 2016 年,中国 CAN-BUS 领导者—广州致远电子股份有限公司,基于拥有完全知识产权的 CAN FD IP 核代码,研制出中国第一款 CAN FD 接口卡,使中国的总线技术水平与世界最高水平同步。
版权声明: 本文为 InfoQ 作者【不脱发的程序猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/05bc500f8a5621e5c4ed0adc2】。文章转载请联系作者。
评论