计算机系统应用教程网站

网站首页 > 技术文章 正文

CAN通讯系列10- 经典CAN VS. CAN FD

btikc 2024-12-24 11:00:41 技术文章 31 ℃ 0 评论

现如今打开一款CAN收发器芯片手册,在Features里都会写着支持CAN FD(CAN with Flexible Data rate, 可变速率的CAN)。尤其是随着电子电器架构的升级,发展到域控阶段,经典CAN(即CAN BUS2.0)负载率越来越高,其局限性越来越大,当前域控制器间更多采用CAN FD或以太网进行通讯。

如前面文章讲到波特率和负载率,我理解本质上, CAN FD就是为了提高CAN总线的波特率,即单位时间内能够传递更多位的数据,使得同样的负载率下使用CAN FD形式的CAN总线传输效率更高,即通过提高控制场中的BRS位到ACK场之前的传输速率(最高速率可达到8Mbps)和增加数据段长度。其实也可以简单的认为是传统CAN的升级版,只升级了协议,物理层没有改变。CAN FD支持的最大数据长度为64byte。。下面具体对比经典CAN(和CAN FD,来看看它们之间到底有哪些相同点,又有哪些不同点。

1 帧结构

对于经典CAN,报文帧有5种类型,分别是数据帧、遥控帧、错误帧、过载帧和帧间隔。而CAN FD没有远程帧。通常我们只考虑两者的数据帧,均有标准格式和扩展格式,其帧结构均包含7个段:SOF,仲裁段,控制段,数据段,CRC段,ACK段和EOF。

1)对比标准格式的数据帧:

2)对比扩展格式的数据帧如下:

通过上述比较,不难发现,不同点主要在于:

  • 仲裁段:CAN FD用RRS位替换了RTR位,为常显性。经典CAN帧中的RTR用于区别标准帧与远程帧,在CAN FD帧中被RRS替换,因此CANFD中没有远程帧了。
  • 控制段:CAN FD帧中增加了3个控制位,FDF、BRS、ESI。
  • CRC段:CAN帧中CRC段15位,而CAN FD帧中CRC段能扩展到21位或25位。

关于控制段,FDF(Flexible Data Rate Format):常为隐性,表示CAN FD报文,如下所示:

BRS(Bit Rate Switch):位速率转换开关。当BRS为显性位时,数据段的位速率与仲裁段的位速率一致;当BRS为隐性位时,数据段的位速率高于仲裁段的位速率。

ESI(Error State Indicator) :为错误状态指示位,在CAN帧中发送节点的错误状态只有自己知道,而CANFD帧中可通过ESI来告诉其他节点自己的错误状态。当ESI为隐性位时,表示发送节点处于被动错误状态;当ESI为显性位时,表示发送节点处于主动错误状态。

关于CRC段,在CAN帧中CRC段是15位,而在CAN FD帧中,当传输数据为不超过16字节时,CRC段是17位;当传输数据超过16字节时,CRC段是 21位。这是因为随着数据段的扩大,为了保证信息的发送质量,CAN FD帧的CRC计算需要涵盖数据段的位。

另外,CRC段还包括填充位计数器,由格雷码(前3位)和奇偶校验(最后1位):通过格雷码计算后的值的奇偶校验(偶校验)。

总的来说,CRC段采用了改进的循环冗余校验(CRC)和填充位计数器(SBC),以提高错误检测能力,增强数据的完整性和可靠性。

2 数据长度

CAN帧数据段最长8字节,CAN FD帧数据段最长64字节,对比如下表:

3传输速率

CAN-FD帧采用了两种位速率:从控制场中的 BRS 位到 ACK 场之前(含 CRC 分界符)为可变速率,也叫数据波特率,最高可达8Mbps;其余部分为原 CAN总线用的速率,叫仲裁波特率,最高可达1Mbps。两种速率各有一套位时间定义寄存器,它们除了采用不同Tq外,位时间的4个段的分配比例也可不同。

4小结

以上基于经典CAN帧与CANFD帧的概念定义进行对比,总的来说:

1)CAN FD帧设置更长的数据段,以传输更多的数据;

2)CAN FD帧可设置2种传输速率,以提高CAN总线的传输速率。

3)CAN FD帧采用改进的CRC计算方法和填充位计数器,以此提高错误检测能力,增强数据的完整性和可靠性。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表