通讯协议--CAN转换模块调试
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 |
用法
启动 slcand 服务:
1
sudo slcand -c -s6 -o -f -S9600 /dev/ttyACM3 can1
此命令将 /dev/ttyACM3 设备(如USB转CAN)以500kbps速率挂载为 can1 接口。
启用 CAN 接口:
1
sudo ip link set can1 up
也可以关闭:
1
sudo ip link set can1 down
发送CAN数据:
1
cansend can1 123#112233
这会向CAN总线发送ID为0x123,数据为 11 22 33 的标准帧。
接收CAN数据:
1
candump can1
实时监听 can1 接口上的数据帧。
用法1
2
使用注意事项
1、每次使用 slcand 后都要使用 ip link set canX up 激活接口;
2、确保串口波特率与实际设备匹配;
3、某些USB转CAN设备可能使用 ttyUSB0、ttyACM0 等,需要根据实际情况调整;
4、使用 dmesg | grep tty 可查看接入的串口设备。