CAN review

Table of Contents

本人最早在06、07年开始搞CAN总线,采用的是RM9200+SJA1000和LPC2100通信。

当时CAN有CANOpen和DeviceNet 2种架构之分。我们采用了开源的lincan-0.3.2,把CAN注册为一个char设备,然后通过read/write函数进行CAN报文的接收和发送。

最近玩了freescale的i.MX6UL,这颗CPU本身具备2路CAN总线。

查了下当前CAN的支持,发现从2.6.25开始,CAN已经被引入到linux内核中,并被作为一个socket设备进行管理。

工具

由于CAN被整合进network,所以需要新的ip才能支持,点击进官网。或者可以使用GIT同步代码:

常用的CAN命令

查看可设置的配置参数:

设置CAN波特率为1Mbps:

查看CAN的配置:

启动/停止CAN:

或者

接收CAN报文:

发送CAN报文

例如使用通道CAN1发送CAN ID为1,带有5个数据(0x01 0x23 0x45 0x67 0x89)的报文:

发送远程请求帧:

如果对方使用candump接收,则会显示:

发送

参考

  • https://en.wikipedia.org/wiki/SocketCAN
  • Linux/Documentation/networking/can.txt
  • https://github.com/linux-can/can-utils/

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.