Skip to content

CAN FD

concepts

  • CAN-FD – Controller Area Network with Flexible Data-rate
  • RRS – Remote Request Substitution
  • IDE – IDentifier Extension
  • FDF – FD Format Indicator
  • res – Reserved bit in FD frames
  • BRS – Bit Rate Switch
  • ESI – Error State Indicator
  • DLC – Data Length Code

cases

diff can-fd & flexray

CAN FD XL 和 FlexRay 是两种用于汽车和工业应用的通信协议。它们各有优缺点,设计目标和使用场景也有所不同。

CAN FD XL

CAN FD(Controller Area Network with Flexible Data-rate)XL 是标准 CAN 协议的扩展版本,它旨在克服传统 CAN 协议的一些限制,特别是在数据速率和数据量方面。CAN FD XL 是指 CAN FD 协议的进一步扩展,通常用于描述新一代的 CAN 技术,它包含以下特点:

更高的数据速率:相比传统 CAN 的最高 1 Mbps,CAN FD 支持高达 5 Mbps(在特定条件下甚至更高)。
更大的数据帧:传统 CAN 帧的数据长度限制为 8 字节,而 CAN FD 可扩展至 64 字节。
灵活的数据率:数据部分和仲裁部分可以使用不同的数据速率,提高了通信效率。
向后兼容:能够与传统 CAN 节点共存,允许在同一总线上运行混合的传统 CAN 和 CAN FD 设备。

CAN FD XL 特别适用于需要更高吞吐量和更大数据帧的应用场景,比如复杂的电子控制单元(ECU)之间的通信、高频数据采集和传输等。

FlexRay

FlexRay 是另一种高级的汽车通信总线标准,由 FlexRay Consortium 开发,特别适用于高数据率和高可靠性的应用场景。其特点如下:

高数据速率:支持高达 10 Mbps 的数据传输速率,比传统 CAN 更快,适合实时性要求高的应用。
双通道冗余:FlexRay 一般提供双通道通信,这增加了系统的可靠性和容错能力。即使一个通道发生故障,通信仍可通过另一个通道进行。
灵活的时间调度:支持静态和动态时间分段(TDMA 和 FTDMA),可以满足不同数据帧的实时传输需求。
确定性传输:FlexRay 提供确定性的通信时间,这对实时性要求高的安全关键型应用非常重要,如高级驾驶辅助系统(ADAS)和自动驾驶功能。
高可靠性:设计上具备高鲁棒性,抗干扰能力强,适用于关键任务和安全相关的系统。

FlexRay 通常用于比 CAN FD 更苛刻的环境和应用场景,如自动驾驶车辆、底盘控制、动力传动系统等,在这些场景中数据量大、实时性和可靠性要求高。

总结而言,CAN FD XL 和 FlexRay 各有所长,选择哪种协议取决于具体的应用需求、性能要求和系统架构。CAN FD XL 更适用于需要较高数据速率和灵活性的系统,而 FlexRay 则适用于需要极高可靠性和确定性时间调度的应用场景。

帧格式

7 部分
SOF(Start of Frame) 帧起始,Arbitration Field 仲裁场,Control Field 控制场,Data Field 数据场,CRC Field(Stuff Count + CRC Sequence),ACK Field,EOF(End of Frame) 帧结束

alt

SOF

CAN, CAN FD 均使用显性 1 bit SOF

Arbitration Field

ID: 相同,标准ID/扩展ID,11位
CAN:RTR 1位,CAN FD:RSS 1位

Control Field

CAN, CAN FD 的 IDE(1bit), res(1bit), DLC(4bits) 位相同

CAN FD 增加:

  • FDF:FD 格式位,隐性(CAN FD),显性(CAN)
  • BRS:速率切换位,隐性(切换可变速率),显性(不切换)
  • ESI:错误状态指示位,隐性(主动错误),显性(被动错误)

DLC(Data Length Code,数据长度码)是一个重要的字段,用于指示数据帧中的数据字节数。然而,与经典CAN的DLC不同,CAN FD中的DLC有一些新的特点和扩展。

在经典CAN和CAN FD中,DLC字段位于CAN帧的控制字段中,其主要功能是指示数据字段中包含的数据字节数。

在CAN FD中,DLC的值可以取0到15,并且根据DLC值,实际的数据字节数可以从0到64个字节不等。
DLC值为0到8时,实际的数据字节数对应DLC的值。
DLC值为9到15时,实际的数据字节数对应特定的预定义长度。

下面是一个DLC值与实际数据字节数的映射表:

DLCDLC(bin)数据字节数
000000
100011
200102
300113
401004
501015
601106
701117
810008
9100112
10101016
11101120
12110024
13110132
14111048
15111164

Data Field

CAN: 0-8 Bytes
CAN FD: 0-8, 12, 16, 20, 24, 32, 48, 64 Bytes
数据场里低字节先发 Byte0...Byte7
每个字节高位先发 bit7...bit0
DLC=0 无数据场

CRC Field

Stuff Count: 4位,CAN 中不使用该填充位
表示在 CRC Sequence 前填充位的数量,模8算法以3位格雷码和一位奇偶校验码存储

格雷码

最高位保留,次高位为二进制最高位与次高位异或运算结果

CRC Sequence

ACK Field

EOF

吃好喝好 快乐地活下去