我有一个目标板,其中有一个由
can
驱动程序驱动的 peak
接口。在主机端我安装了can-utils
。我有一根 can
电缆,当我插入时,它被检测为 /dev/ttyUSBx
。
目标板以500000波特率接收candata
所以在我执行的主机上,
sudo modprobe can
sudo modprobe can-raw
sudo modprobe slcan
sudo slcand -o -s8 -t hw -S 500000 /dev/ttyUSBx
sudo ip link set up slcan0
然后我使用以下方式从主机发送candata:
cansend slcan0 600#ffffffffffffff
我可以在主机上使用
candump slcan0
看到相同的内容。
但我没有收到目标上的任何信息。
我对我使用的其他电缆(在主机上)进行了相同的尝试
sudo modprobe can
sudo ip link set can0 type can bitrate 500000 triple-sampling on
sudo ifconfig can0 up
然后我就可以发送消息了。如果我在之前的电缆上尝试相同的操作,则会抛出错误,提示
Cannot find device "can0"
。
那么如何通过
slcan
接口发送呢?
您的 CAN 比特率错误。要设置 500kbit/s,您需要调用以下命令:
sudo slcand -o -s6 -t hw -S 3000000 /dev/ttyUSBx
sudo ip link set up slcan0
-s6
表示CAN比特率500kbit/s,-s8
表示1Mbit/s。 -S
参数用于设置 USB 转 CAN 电缆中 USB 转串口控制器的串行速度。 slcan 的完整 CAN 比特率表可在此处找到。
ASCII 命令 | CAN 比特率 |
---|---|
s0 | 10 千比特/秒 |
s1 | 20 千比特/秒 |
s2 | 50 千比特/秒 |
s3 | 100 千比特/秒 |
s4 | 125 千比特/秒 |
s5 | 250 千比特/秒 |
s6 | 500 千比特/秒 |
s7 | 800 千比特/秒 |
s8 | 1000 千比特/秒 |