博客专栏

EEPW首页>博客> CAN FD 在 iMX8 计算机模块上的应用

CAN FD 在 iMX8 计算机模块上的应用

发布人:toradex 时间:2020-12-25 来源:工程师 发布文章

By Toradex胡珊逢

CAN总线在工业、汽车行业具有非常广泛的应用,为网络中设备之间点对点通信提供一种可靠、稳定、经济的方案。伴随网络中设备节点的增加,由于1Mbps速率和最长数据8字节的限制,通信效率和总线占用问题变得愈发突出。而CAN FD正是为了应对这种挑战而出现。文章接下来将介绍CAN FD的一些新特点以及使用注意事项,最后将使用Toradex Apalis iMX8QMVerdin iMX8M Mini计算机模块简单演示CAN FD使用。

相比于传统CAN协议,CAN FD最大的两个特点是采用可变速率和单帧最长64字节数据,另外包括控制位和CRC校验的变化。

image001.png

1:传统CANCAN FD

控制位的首位由传统CANRTR变为CAN FDRRS,该位始终是显性(0)。第三个控制位在传统CAN中属于保留功能,在CAN FDFDF,位隐性(1)。FDF1时表示该帧是CAN FD格式。在CAN FD中紧随FDF还是一个保留功能,用于将来的扩展。BRSBit Rate Switch)位允许CAN FD帧以不同的速率进行传输。如果BRS为显性(0)则该帧采用和仲裁阶段(Arbitration Phase)同样的速率进行传输,既速率不发生变化。当BRS为隐性(1),该帧接下来的部分将以较高的速率传输。这里需要注意,并不是整个CAN FD帧都用高速率传输,如下图,Data PhaseBRS后的ESI位开始到CRC Delimiter位结束,该阶段的数据会以较高的速率传输。

image003.png

2CAN FD帧结构

ESIError Status Indicator)通常为显性(0)。当发送方遇到通讯异常后会将其置为隐性(1)。DLC表示该帧中实际数据长度,为了于传统CAN兼容,DLC仍然采用4bit。当数据长度小于8字节时,DLC位的数值可以直接表示数据长度,但超过8字节时,由于4个位最高只能表示15,为了支持CAN FD最长64字节数据,这里采用了折中的表示方法。当数据不超过8个字节时,DLC仍直接表示数据长度。当超过8个字节,只支持1264中部分长度的数据包,而非全部的964任一长度。如下表所示,当DLC9时,CAN FD数据长度为12字节,DLC12时,数据长度是24字节。

DLC和数据长度对应关系

DLC

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

数据长度

0

1

2

3

4

5

6

7

8

12

16

20

24

32

48

64

在实际应用中最好选择上面的其中一种长度,避免通讯效率降低。如果小于某一种长度,则需要对数据进行填充,可以用0xCC0x55作为填充字节,这样能够在总线上产生足够的波形翻转从而使CAN节点保持同步。

CAN FD中根据数据长度会采用不同的CRC校验方案,当小于等于16字节是为CRC-17,当数据大于16字节后则采用CRC-21CRC Delimiter之后的格式CAN FD和传统CAN仍保持一致。

CAN FD虽然具有更长的数据包以及更快的传输速度,但是由于引入了更多的位到帧中,帧的开销也会增加。以同样发送1字节数据包为例,传统CAN 2.0标准帧和CAN FD标准帧具体组成如上方图1所示。传统CAN 2.0标准帧总共位54 bitCAN FD70 bitCAN FD需要多消耗16 bit来传送同样的数据。如果CAN FD不采用更高的可变速率这就意味着同样的帧,CAN FD反而会要更长的传输时间。当CAN FD采用可变速率,那么情况将会变得不一样。假设CAN FD的仲裁速率是500 Kbps,和传统CAN的速率一致,而可变的数据传输速率提高8倍到4 Mbps。传统CAN耗时为54 bit/ 500 Kbps = 108 usCAN FD4 Mbps的速率只用于传输从ESI位开始到CRC Delimiter位之间的数据,所以CAN FD耗时为29 bit/500 Kbps + 41 bit/4 Mbps = 68 us。这里我们看到,在提高数据传输速率情况下,CAN FD即使有更多的帧开销,帧传输时间还是减少了40 us。更高的传输速度有利于发送节点更快得完成帧发送,减少CAN总线占用时间,这对越长数据的帧会更加明显,对CAN网络的实时性来讲是一个优势。

然而提高传输速率不仅仅是在使用的时候设置一个参数,更重要的是保障CAN总线物理链路层的质量。可以使用示波器观察总线上信号的质量。如果信号陡峭且清晰,可以尝试将数据传输速率提高到仲裁速率的24倍。测量点需要遍布总线上多个位置,信号在不同位置会有所差异。线路阻抗的一致性对信号质量至关重要。通常在总线交叉点的线缆没有发生物理尺寸变化,并采用具有相同介电常数的隔离器,阻抗会保持不变。这可以参考以太网和USB中使用的专门的连接器。当CAN FD采用较高的传输速率时,每处线路分叉,每个连接器都可能会影响阻抗,从而引起信号反射。这些反射信号的能量最终可以影响CAN帧每个比特位边缘的抖动。

CAN FD最长64字节的数据包使用在实际应用中也需要注意。更长的帧不可避免在传输的时候会占用总线更多的时间,而这期间其他CAN节点则无法发送数据。对于实时性需求不高的场合,如通过CAN总线升级固件,长帧能够以更小的开销完成传输。而对实时性有要求的场合,对长帧的使用需要有一定的限制。对于8字节以下的帧,CAN FD更高的数据传输速率可以有效降低总线占用时间,前提是物理链路层能够满足高速传输的要求。

对于应用开发CAN FD的使用是非常简单的。CAN FD是可以兼容传统CAN,这意味着原先基于传统CAN通信的代码可以直接运行在支持CAN FD的设备上,但不使用任何CAN FD的新功能。如果需要使用CAN FD的可变数据速率或者超过8字节数据的帧,那么代码也只需做简单的修改。我们以LinuxSocketCAN为例,使用can-utils代码进行说明。在cansend.ccandump.c中采用canfd_frame结构体来存放需要发送和接收的CAN数据。CANFD_MAX_DLEN64,对应CAN FD最长的64字节。

image005.png

然后将can socket设置CAN FD格式,使用setsockopt()函数,设置CAN_RAW_FD_FRAMES参数即可。

image007.png

在发送时将struct canfd_frame frame结构体中len长度参数设置CAN FD定义几种长度。

image009.png

剩余代码中的操作可以沿用传统CAN模式下的方法。最后用下面命令配置CAN设备。这里仲裁速率为500KbpsCAN FD可变数据速率为1Mbps,在结尾添加fd on参数启用CAN FD

image011.png

接下来我们将在Apalis iMX8QMVerdin iMX8M Mini计算机模块上演示CAN FD通信。Apalis iMX8QM采用NXP i.MX8 QuadMax处理器,可以提供3CAN接口。Verdin iMX8M Mini上的i.MX8 M Mini处理器本身并不支持CAN接口,我们在模块上添加了一块MCP2518实现CAN接口。

image012.png

Apalis iMX8QMVerdin iMX8M Mini分别通过IxoraDahlia载板进行CAN接口互联。这两个底板上均引出了CAN接口,方便用户测试。

image014.png

Verdin iMX8M Mini作为发送端,依次运行下面命令,并发送4字节和10字节长度的帧。

image016.png

Apalis iMX8QM作为接收端。

image017.png

上面测试可以看到Verdin iMX8M Mini发送一帧10字节长度的数据,但是Apalis iMX8QM在收到了12字节的数据。这是CAN FD定义没有10字节的帧长,适合发送10字节的是12字节长度的帧。所以看到实际收到的是“11 22 33 44 55 66 77 88 99 00 00 00”这12个字节,最后两个“00 00”是填充的数据。这部分填充数据来自lib.c代码memset(cf, 0, sizeof(*cf)); /* init CAN FD frame, e.g. LEN = 0 */

总结

CAN FD的新功能为满足了应用对更加高效的传输、更好实时性需求,但充分发挥这些功能还需要从应用开发到链路设计方面的优化。上面我们讨论简单地讨论一些注意事项,以及使用方法,具体的应用还要结合实际工况做调整。

参考:

https://www.microcontrol.net/en/know-how/bus-systems/can-fd/

https://www.picoauto.com/library/picoscope/can-bus-serial-protocol-decoding

https://www.can-cia.org/can-knowledge/can/can-fd/#:~:text=CAN%20FD%20data%20frames%20with,support%20remotely%20requested%20data%20frames.&text=The%20control%20field%20comprises%20additional,the%20Classical%20CAN%20data%20frames.

https://www.eecs.umich.edu/courses/eecs461/doc/CAN_notes.pdf

https://en.wikipedia.org/wiki/CAN_FD

https://www.kvaser.com/wp-content/uploads/2016/04/can-fd-considerations-for-different-stakeholders.pdf

https://www.kvaser.com/wp-content/uploads/2016/10/comparing-can-fd-with-classical-can.pdf


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词:

相关推荐

技术专区

关闭