RioTboard canbus驱动测试及应用编程

作者: brucehelen
上传时间为: 2014-08-23 12:46 AM

i.MX6 CAN接口,Linux中加入canbus驱动,Linux canbus应用程序编程

使用硬件

RioTboard

使用软件

linux Mfgtools 串口软件

正文

1. i.mx6 CAN接口

从上图可以看出,CAN1和CAN2的引脚复用情况,RioTboard没有单独引出CAN接口,通过上表和RioTboard的电路图,我们发现可以使用SD3_DAT1作为CAN2的RX引脚,SD3_DAT0作为CAN2的TX引脚。

最终跳线图

2. 驱动修改

修改引脚配置,将/* USDHC3 */的引脚功能去除。

修改arch/arm/mach-mx6/board_mx6dl_RIoTboard.h如下所示:

在arch/arm/mach-mx6/board_mx6solo_RIoTboard.c mx6_RIoTboard_board_init函数中添加can驱动,我添加的代码如下:

上面sd3初始化的代码被屏蔽。

在1178行添加can初始化函数。编译完成,下载到RioTboard中后会在启动log多了CAN启动相关信息。

3. 相关软件编译

我们使用网上现有的测试软件来测试linux环境下的canbus。后面我们可以参考下面的开源代码,实现自己的应用程序。

1)首先编译libsocketcan

下面的canutils需要这个库。

修改Makefile文件CC=arm-linux-gcc

./configure --prefix=/usr/local/arm/libsocketcan --host=arm-linux --build=i386

make

make install

编译成功,在 <安装路径>/lib/pkgconfig/下有个libsocketcan.pc文件,将其拷贝到PC的/usr/lib/pkgconfig/目录下。

2)编译canutils-4.0.6

./configure --host=arm-linux --prefix=/usr/local/arm/canutils libsocketcan_LIBS=

-lsocketcan LDFLAGS=-L/usr/local/arm/libsocketcan/lib CPPFLAGS=

-I/usr/local/arm/libsocketcan/include

(其中--host是指定交叉工具链,--prefix是指定库的生成位置,libsocketcan_LIBS是指定canconfig需要链接的库,LDFLAGS是指定外部库的路径,CPPFLAGS是指定外部头文件的路径)

make

make install

将canutils安装目录下bin/和sbin/的程序拷贝到文件系统相应的目录下。

4. 使用方法

配置can0接口波特率为1MHz

canconfig can0 bitrate 1000000

打开can0

ifconfig can0 up

发送数据测试

cansend can0 -i0x100 11 22 33 44

接收数据

canecho can0 –v &(后台运行)

5. 测试架构及测试结果

使用了一块STM32F207的板子,这块板子上自带VP230 CANBUS收发器。我们在RioTboard上另接了一个VP230的模块。

下面的小模块为VP230模块。

VP230模块特写

STM32F207和VP230芯片特写。

测试界面,左边的为STM32F207的调试信息,右边为RioTboard调试信息。两版通信正常。

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示