首页 > 编程知识 正文

im365是什么模块,mplab ide怎么烧写程序

时间:2023-05-04 02:15:29 阅读:21533 作者:3369

By Toradexhxdgb

CAN总线在工业、汽车行业有着非常广泛的应用,为网络中设备之间的点对点通信提供可靠、稳定、经济的方案。 随着网络中设备节点的增加,由于1Mbps的速度和最长8字节的数据限制,通信效率和总线占用问题越来越突出。 CAN软盘是为了应对这样的挑战而出现的。 本文介绍了can软盘的新功能和使用注意事项,最后简要介绍了如何使用Toradex Apalis iMX8QM和Verdin iMX8M Mini计算机模块使用can软盘。

与传统的CAN协议相比,CAN FD的最大两个特征还包括通过使用可变速率和一帧的最多64字节的数据的控制比特以及CRC检查的变化。

图1 :传统的CAN和CAN软盘框架

控制位的顶端由传统的CAN的RTR变为CAN FD的RRS,该位始终为显性(0)。 第三个控制位是传统CAN中的保留功能,CAN FD位FDF,位隐性(1)。 对于FDF位1,表示该帧为CAN FD格式。 CAN FD是继FDF之后的保留功能,用于将来的扩展。 BRS (比特交换)位可以以不同的速率传送CAN FD帧。 如果BRS为显性(0),则以与仲裁阶段)相同的速率传输该帧,速率不变化。 如果BRS是降级(1),那么该帧的下一部分以较高速率被传输。 这里应该注意的是,整个CAN FD帧并不是以高速率传输的。 如下图所示,从BRS后的ESI位到CRC定界符位结束,数据相位以高速率传输。

图2:CAN FD框架结构

错误识别器(ESI )通常是显性的(0)。 发送方遇到通信异常时,将其设为隐式(1)。 DLC代表该帧内的实际数据长度,并且为了传统的CAN兼容,DLC仍然使用4位。 在数据长度小于8字节的情况下,DLC位的数值可以直接表示数据长度,但在超过8字节的情况下,4位最多只能表示15字节,所以为了与CAN FD的最大64字节的数据对应,这里采用了折中的表现方法。 即使数据小于或等于8字节,DLC也直接表示数据的长度。 如果超过8个字节,则仅支持12到64部分长度的数据包,而不支持9到64的全部长度。 如下表所示,DLC为9时,CAN FD的数据长度为12字节,DLC为12时,数据长度为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

在实际的APP应用中,为了避免通信效率的降低,希望选择上述的长度之一。 如果小于某个长度,则需要填充数据。0xCC和0x55可以用作填充字节。 这将在总线上产生足够的波形反转,并保持CAN节点的同步。

CAN FD根据数据长度采用不同的CRC校验方式,16字节以下时采用CRC-17,16字节以上时采用CRC-21。 CRC Delimiter及更高格式的CAN FD与传统的CAN一致。

CAN FD具有更长的分组和更快的传输速率,但是由于将更多的比特引入帧中,帧开销也将增加。 以类似地发送1字节分组的情况为例,常规CAN 2.0标准帧和CAN FD标准帧的具体布置如下图1中所示。 传统的CAN 2.0标准帧共54位,CAN FD为70位。 CAN FD需要额外消耗16位才能传输相同的数据。 如果CAN FD没有采用更高的可变速率,这意味着相同的帧,这反而增加了传输时间。 如果CAN FD采用可变速率,情况就会不同。 假设CAN软盘的仲裁速率为500 Kbps,与传统CAN的速率匹配,可变数据传输速率提高了8到4 Mbps。 传统的CAN所需时间为54 bit/500 Kbps=108 us。 由于CAN FD中4 Mbps的速率仅用于ESI比特到CRC定界符比特之间的数据传输,因此CAN FD所需的时间为29比特/500 kbps 41比特/4Mbps=68us。 这里,在提高数据传输速率的情况下,可知即使存在更多的帧开销,CAN FD也将帧传输时间减少40 us。 更贵

传输速度有利于发送节点更快得完成帧发送,减少 CAN 总线占用时间,这对越长数据的帧会更加明显,对 CAN 网络的实时性来讲是一个优势。

 

然而提高传输速率不仅仅是在使用的时候设置一个参数,更重要的是保障 CAN 总线物理链路层的质量。可以使用示波器观察总线上信号的质量。如果信号陡峭且清晰,可以尝试将数据传输速率提高到仲裁速率的 2 到 4 倍。测量点需要遍布总线上多个位置,信号在不同位置会有所差异。线路阻抗的一致性对信号质量至关重要。通常在总线交叉点的线缆没有发生物理尺寸变化,并采用具有相同介电常数的隔离器,阻抗会保持不变。这可以参考以太网和 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 字节数据的帧,那么代码也只需做简单的修改。我们以 Linux 中 SocketCAN 为例,使用 can-utils 代码进行说明。在 cansend.c 和 candump.c 中采用 canfd_frame 结构体来存放需要发送和接收的 CAN 数据。CANFD_MAX_DLEN 为 64,对应 CAN FD 最长的 64 字节。

 

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

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

 

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

 

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

 

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

 

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

Apalis iMX8QM 作为接收端。

 

上面测试可以看到 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

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。