CAN模块调试

在工作中经常会遇到不是原生的CAN通讯接口,可能时通过USB或者串口等接口转换。这时我们可以借助 slcand 工具,将这些设备虚拟成标准的 canX 接口,配合 can-utils 工具包进行调试。

安装调试工具 can-utils

can-utils 是Linux下用于调试CAN总线通信的常用工具包,包含 cansend、candump、canconfig 等命令。

安装方式:

1
sudo apt-get install can-utils

slcand 简介

slcand 是 SocketCAN 提供的串口CAN驱动桥接工具,用于将基于串口的CAN设备(如slcan协议)桥接为 canX 虚拟接口。

常用参数说明:

-c:打开CAN接口(start interface)

-s6:设置CAN速率,对应500kbps(速率参数详见下表)

-o:开启标准输出(通常用于调试)

-f:进入守护进程模式(fork模式)

-S9600:设置串口波特率(根据硬件要求设置)

/dev/ttyACM3:对应你的串口CAN设备路径

can1:指定映射的虚拟CAN接口名

-s参数值 速率(kbps)
s0 10
s1 20
s2 50
s3 100
s4 125
s5 250
s6 500
s7 800
s8 1000

用法

  1. 启动 slcand 服务:

    1
    sudo slcand -c -s6 -o -f -S9600 /dev/ttyACM3 can1

    此命令将 /dev/ttyACM3 设备(如USB转CAN)以500kbps速率挂载为 can1 接口。

  2. 启用 CAN 接口:

    1
    sudo ip link set can1 up

    也可以关闭:

    1
    sudo ip link set can1 down
  3. 发送CAN数据:

    1
    cansend can1 123#112233

    这会向CAN总线发送ID为0x123,数据为 11 22 33 的标准帧。

  4. 接收CAN数据:

    1
    candump can1

    实时监听 can1 接口上的数据帧。
    用法

    1
    2


使用注意事项

1、每次使用 slcand 后都要使用 ip link set canX up 激活接口;

2、确保串口波特率与实际设备匹配;

3、某些USB转CAN设备可能使用 ttyUSB0、ttyACM0 等,需要根据实际情况调整;

4、使用 dmesg | grep tty 可查看接入的串口设备。