迅为CAN 测试
详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com
本文档适用的范围
① 硬件平台 :4412精英版以及全能版开发板。(4418/6818开发板以及imx6q开发板测试的道理是一样的可能细节有些不同,在这里我没有做实验,感兴趣的可以按照这个文档测试一下)
②软件平台 :Android4.0、Android4.4、QT、ubuntu
测试程序: 这个在网盘上有提供,另外我也会上传
一.硬件连接
can 通信要求两端都支持can功能,所以需要两块支持can的开发板。准备两个长短相同的线,连接时必需1脚对应1脚,2脚对应2脚,不能交叉连接。两根线最好长短一致,并且相互缠绕在一起。这样可以减小噪声,降低误码率。
二.软件测试
下载can_test压缩包,解压。出现以下文件:client、client.c、server、server.c、Makefile和app.tar.gz(这里我们不会用到app.tar.gz)。client、server两个文件是可执行文件,分别由client.c和server.c在ubuntu环境下运行Makefile后交叉编译得来。感兴趣的可以编译下,我们这里直接使用编译出来的测试程序。
1. 检测系统内核是否支持can功能。
由于开发板的can和RFID共用了spi所以支持RFID的内核肯定是没有把can配置上,或者其他原因在内核中没有配置can功能。所以首先得看看内核是否支持了can,方法如下:
在/dev下看一下有没有can的节点,节点名字是mpu。如果没有证明系统内核没有配置can功能,需要按照用户手册把can配置了;如果有节点mpu,那么得用ls -l mpu看一下权限是否够。不行的话就用chmod 777 mpu命令设置权限。
2. 将测试程序放到开发板上。
Android系统的话将client和server放到/data下;ubuntu和QT系统就把这两个文件放到根目录下就行。QT的话可能得用到NFS把测试程序导进去,其他的用TF卡即可。分别使用一下命令设置两个文件的权限:
chmod 777 client
Chmod 777 server
这两可执行文件一个是用来发送数据的,另一个是用来接收数据的。
3. 正式测试
① 在Android系统下
首先输入netcfg会发现有can总线但是处于DOWN状态,所以先得让can总线UP。在“两个”开发板的控制台上输入
Ifconfig can0 up
然后到其中一个开发板的/data下运行运行服务器./server,在另一端运行客户端./client。如果成功那么在client端如打印如下信息:
can0 can_ifindex = 3
Send a CAN frame from interface can0
Server端会打印如下信息:
can0 can_ifindex = 3
Received a CAN frame from interface can0
frame message
--can_id = 123
--can_dlc = 5
--data = hello
测试成功后可以换一下server端和client端试试每个板子的收发。
② ubuntu/QT下
netcfg在ubuntu/QT下不支持,所以输入ifconfig看到没有can0 的net,证明现在can0总线没有UP,接下来的步骤和Android的差不多。
输入Ifconfig can0 up
然后到其中一个开发板的根目录下运行运行服务器./server,在另一端运行客户端./client。如果成功那么在client端如打印如下信息:
can0 can_ifindex = 3
Send a CAN frame from interface can0
Server端会打印如下信息:
can0 can_ifindex = 3
Received a CAN frame from interface can0
frame message
--can_id = 123
--can_dlc = 5
--data = hello
测试成功后可以换一下server端和client端试试每个板子的收发。
http://bbs.topeetboard.com/forum.php?mod=attachment&aid=MzI4fGNjNjRjZTlifDE0ODk0NTU0ODh8ODczOHw0MTM0 文件下载
嵌入式学习-4412开发板学习-迅为4412开发板can测试技术分享
原文地址:http://12706456.blog.51cto.com/12696456/1906182