迅为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=p_w_upload&aid=MzI4fGNjNjRjZTlifDE0ODk0NTU0ODh8ODczOHw0MTM0 文件下载