BeagleBone Black 打开CAN总线

原创 2013年12月06日 01:15:27

SD卡版本:

     下载SD版本的系统,如Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.07.31.img
     烧写到SD上,把SD卡查到电脑上面,修改uEnv.txt文件,在后面添加上 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN,从而禁用HDMI(因为该接口某些脚和和CAN冲突了),修改后的配置可能是optargs=quiet drm.debug=7 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN。
     将SD卡查到BBB上面,从SD启动BBB;
     先用ifconfig -a 查看有没有can0接口,没有的话需要配置;
     为了查看是否已经识别CAN-Cape,可以使用dmesg | grep -i cape 查看cape的挂接情况,主要留意CAN总线的信息,可能会有failed to load firmware 'BB-BONE-SERL-01-00A2.dtbo',这说明已经识别CAN-Cape了,但是加载BB-BONE-SERL-01-00A2.dtbo(和CAN相关)失败
     如果加载失败的话,使用echo BB-BONE-SERL-01:00A2 >/sys/devices/bone_capemgr.*/slots强制加载上去,估计会出现not such file,说明/lib/firmware下面没有BB-BONE-SERL-01-00A2.dtbo。
     没有BB-BONE-SERL-01-00A2.dtbo的话,到/lib/firmware下面把BB-BONE-SERL-01-00A1.dts复制一份为BB-BONE-SERL-01-00A2.dts
          cp BB-BONE-SERL-01-00A1.dts BB-BONE-SERL-01-00A2.dts
     编译BB-BONE-SERL-01-00A2.dts为BB-BONE-SERL-01-00A2.dtbo:
          dtc -O dtb -@ BB-BONE-SERL-01-00A2.dts > BB-BONE-SERL-01-00A2.dtbo
     重启BBB。
     重启完成之后在使用ifconfig -a检查接口,如果看到can0的话那么说明已经能够使用CAN了。
     设置CAN总线属性:     
          ip link set can0 type can bitrate 125000 triple-sampling on
     开启回环(如果你们没有其他CAN设备的话就只能用回环大致测试一下了,如果你有CAN设备连接上BBB的话就不用回环了)
          ip link set can0 type can loopback on
     启动CAN总线
          ifconfig can0 up
     显示所有CAN上的通信数据
          candump can0
     重新打开一个进程测试CAN发送
          cansend can0 1 2 3 4 5 6 7 8
     到dump的进程看看有没有结果


     PS:
     有的时候发送会出错,可能是发送缓冲区不够的原因,下面的命令设置发送缓冲区长度为1000
          echo 1000 > /sys/class/net/can0/tx_queue_len
     

在eMMC系统上面开启CAN:
     最好用新的镜像(亲测BBB-eMMC-flasher-2013.08.21.img可以,更旧的系统不保证可以)更新系统(先写到sd卡上,在用sd卡升级emmc,具体升级emmc过程请看其它教程)。
     将emmc的第一分区挂载:mount /dev/mmcblk0p1 /media/mmc1/
     切到挂载点:cd /media/mmc1/
     修改uEnv.txt(也是加上禁用HDMI):vi uEnv.txt
     修改后的可能是这样的:optargs=quiet drm.debug=7 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
     后面的步骤和上面SD卡的方式差不多,不过为了保险起见,我的做法是先把SD的方式配置好了,然后直接把SD卡的/lib/firmware完全复制到emmc系统上的/lib/firmware了。
     直接在emmc系统上编译dts的方式我没试过。

相关文章推荐

beaglebone black的cape管理

BBB的cape是如何管理的呢?以下引用“魏来之路”网友的说明,说的很详细: “Beaglebone Black中用一个叫做capemgr的软件管理所有的cape,不论它是实实在在的扩展板,还是虚拟的...
  • robeer
  • robeer
  • 2014年03月07日 23:21
  • 1201

BeagleBone Black CAN总线读写数据操作

进入BBB之后可以通过ifconfig -a来查看是否打开CAN总线了: root@BBB-CAN:~# ifconfig -a can0 Link encap:UNSPEC HWadd...

Beaglebone Black——k安装ubuntu系统

拿到beaglebone black板子之后,

记几个调试SocketCAN的命令

设置波特率: echo 125000 > /sys/class/net/can0/can_bittiming/bitrate 启动can接口: ifconfig can0 up ...

Beaglebone Black 串口的操作(二)

之前我写了一篇文章《Beaglebone Black 串口的操作(一)(更新)》,一直没有接着写。现在把之前没有做的事情做完。 上一次是直接通过终端用shell完成对串口的操作,这一次,我尝试用C语言...

在Beaglebone Black上使用C++实现can通讯

在上一篇中,使用命令方式实现can通讯,但是这种方式只是适合简单测试。这次来介绍如何用C/C++实现can通讯。 在Linux中,can通总线接口设备作为网络设备来管理,Linux提供了Socket...
  • zdc1122
  • zdc1122
  • 2017年08月09日 22:35
  • 126

BeagleBone Black的can通讯实现(一)

硬件版本:RC1 软件版本:Debian 8.7 2017-03-19 4GB SD LXQT(kernel 4.4.54-ti-r93) 在网上找了很多说是修改Device-Tree,禁用HDMI...
  • zdc1122
  • zdc1122
  • 2017年08月03日 10:05
  • 242

BeagleBone Black I2C总线相关操作

连接 接线要点:共地(一定得共否则问题很多),SDA、SCL分别和从设备的SDA、SCL对应连接。 下图中我的i2c从设备是TI的9B92,已经给它写好了i2c的程序(i2c地址为0x22),也就...

基于MCP2515的多路CAN总线接口及驱动程序设计

结合实际需求,提出一种多路CAN总线接口的设计方法。系统硬件主体采用AT91RM9200和MCP2515,操作系统采用ARMLinux。详细介绍硬件的接口设计,针对该硬件接口设计分析ARMLinux下...

CAN总线发送与接收函数

初始化CAN模块 void INIT_CAN0(void) { if(CAN0CTL0_INITRQ==0) // 查询是否进入初始化状态 CAN0CTL0_INIT...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BeagleBone Black 打开CAN总线
举报原因:
原因补充:

(最多只允许输入30个字)