【米尔-MYD-LR3568-GK开发板--试用评测】12——CAN开发
本帖最后由 stm1024 于 2024-11-21 21:12 编辑CAN网络是一种串行通信网络,具有传输速度快、成本低、可靠性高等优点。它广泛应用于汽车计算机控制系统和嵌入式工业控制局域网中,并且由于其高性能和可靠性,也被应用于航空业、工业控制、安全防护等领域,具有如下技术特点:
高传输速率:CAN网络的传输速率可以达到1Mbps,适用于高速数据传输。
可靠性高:CAN网络具有较强的纠错能力和抗干扰能力,能够检测和隔离传输中的错误。
灵活性:CAN网络支持多主通信,网络中的所有节点都可以作为主设备进行通信,且网络扩展方便,新增通信单元时,旧的单元和硬件无需任何改变。
差分信号:CAN网络使用差分信号进行通信,通过两根信号线(CANH和CANL)传输信号,具有较强的抗干扰能力和传输稳定性。
通常,从M0核的ARM芯片到各种高级的芯片,都具有CAN外设,RK3568中就具有两路,在LR3568-GK开发板上也通过排针引出了,但是有个问题是这个排针引出的只是TTL信号,而在开发板和CAN网络之间还需要一个收发器,看官方的例子应该是将收发器做到那个ICE002的底板上去了,这给我们的应用带来了一点儿麻烦,之前的测试中使用自己找的收发器做过测试,这次我们另辟**,使用Linux系统自带的VCAN。
什么是VCAN呢?Linux Vcan(Virtual CAN)在虚拟网络中主要用于模拟和测试CAN(Controller Area Network)网络通信,通过VCAN,用户可以在虚拟环境中模拟CAN网络,进行通信测试和开发,而无需依赖实际的物理硬件。
使用方式如下:
首先查看开发板上的CAN网络:
可以看到有CAN0和CAN1,但是前面也说过了,这两个是硬件CAN,没有收发器,不太方便使用。
通过如下命令创建一个虚拟的CAN,即VCAN0:
接下来就是测试,在can-utils中提供了cangen命令,它是can generator的缩写,用于在特定的CAN网络上生成各种期望的随机CAN报文,先看看帮助文档:
可以构造生成周期为100ms的扩展帧报文,放入后台执行,并通过candump查看报文:
可见是能够成功发送和接收的。
接下来是使用QT开发一个图形界面,开发和编写代码,以及编译过程从略,运行效果如下:
通过时间戳也可以看到,报文周期差不多是100ms。
页:
[1]