CAN总线接口
DEL中CAN总线
测试CAN总线接口
创建带CAN支持的内核系统镜像
首先,编译一个带有CAN支持的内核和文件系统,并在文件系统中集成can_test测试例程。
ConnectCore i.mx53
在CC53中,内核配置选择默认已经开启CAN总线支持,可以参考下面步骤检查一下,用户仍需在应用程序模板中勾选can_test以便把例程添加到文件系统中。
右键单击项目,选择配置项目,参考ESP中DEL帮助文档9.9章节,把内核配置成支持CAN总线,并把can_test集成到rootfs当中。
在应用程序模板中选中的应用程序会拷贝源码到build/apps,用户可以更改源码来生成自己所需的测试代码,或者是作为模板参考来开发自己的应用程序。
保存项目配置,然后编译,编译完成后,用“Install Project”来生成文件系统。
完成后,在/tftpboot目录上,就有新编译生成的内核和文件系统镜像,可以烧录到flash中。
ConnectCard i.mx28
ConnectCard i.mx28是一个多复用的精简引脚的微型嵌入式核心板,这使得它足够小巧,这也意味着对内核的裁减需要注意避免复用同一接口两种功能。查看CC28的复用情况,可以根据DEL的帮助文档,并配合HRM中的IOMUX表格。我们需要在复用引脚中仅启用一种功能,以避免接口功能冲突导致编译失败或接口功能无法使用。
也就是如果需要CNA1,那么就要在内核配置中禁掉UART3。
其它方面和CC53基本上做法相同。
用can_test和开发板测试CAN接口
请参考DEL固件更新的方法进行对模块进行固件更新。
测试前的硬件准备
首先看一下HRM和开发板的原理图,了解电平情况和终端电阻情况
从CC53 HRM可知,CAN接口的引脚从53出来是2.775V,开发板上的J7和J9接上时,分别对应CAN1和CAN2相当于接上120欧终端电阻,其中X31是一个对应CAN1的DB9接口,在DB9引脚中中分别是2-CAN1L,3-GND,6-GND,7-CAN1H。X21是CAN2接口的排针,针脚定义同DB9。
下图是原理图,用到一个SN65HVD233片子,其供电是3.3V(3.15V)。百度一下这个片子是TI的CAN收发器。
本次测试用的是若比特USB-CAN通讯模块V2
默认是把CAN驱动编译到内核,所以DEL启动后已经加载了相关驱动。如果当初是选择编译为可加载模块,那么
#modprobe flexcan
您可以用下面命令查看驱动命令是否加载,以决定是否需要运行上述命令。
#dmesg |grep can
在DEL系统中,CAN总线的设置位于/sys/devices/platform/FLEXCAN.0,默认的速率是500Kbps,如果和测试软件上的不匹配,比如你的测试软件只支持250Kbps,可以用下面命令更改
#echo 250000 /sys/devices/platform/FLEXCAN.0/bitrate #把CAN0波特率改为250Kbps
注意您修改某些参数像波特率,您需要在启用CAN之前进行,如果CAN已经启用,需先停用。
CAN接口的启用和停用类似以太网口,用ifconfig命令即可操作,下面命令用CAN0接口
ifconfig can0 up
我们参考DEL的帮助,发送一个id为0x12的帧,看CAN测试工具是否能收到
can_test -l 1 -b 8 -d can0 -i 0x12 -p 0x65 -m
以下是测试结果,表明电脑端的CAN模块已经接收到该帧。
我们再来测试一下用DEL接收CAN的包,注意can_test是个命令行工具,如果不懂得用,可以用can_test -h来查询一下相关命令 我们可以用下面的命令行让can_test进行接收1000次循环状态
can_test -l 1000 -d can0 -i 1 -p 1 -v 3
然后在pc端向id=1的设备发一个包,相关结果如下
PC端:
DEL设备端: