can与slcan如何通信?

问题描述 投票:0回答:2

我有一个目标板,其中有一个由

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-bus
2个回答
3
投票

您的 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 比特率表可在此处找到。


3
投票

根据 eLinux - 启动 CAN I/F

ASCII 命令 CAN 比特率
s0 10 千比特/秒
s1 20 千比特/秒
s2 50 千比特/秒
s3 100 千比特/秒
s4 125 千比特/秒
s5 250 千比特/秒
s6 500 千比特/秒
s7 800 千比特/秒
s8 1000 千比特/秒
© www.soinside.com 2019 - 2024. All rights reserved.