我正在使用canable CAN-to-USB适配器与CAN总线通信。要初始化SocketCan设备,我使用以下命令:
slcand -c -o -f -s6 /dev/ttyACM0
和
ifconfig slcan0 up
CAN总线工作在500KHz。我可以传输和阅读消息一段时间。但在发送和接收几分钟后,我再也无法发送消息但仍可以接收消息。
这是ip -details -statistics link show slcan0
:
469: slcan0: <NOARP,UP,LOWER_UP> mtu 16 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 10
link/can promiscuity 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
RX: bytes packets errors dropped overrun mcast
179974 24437 0 0 0 0
TX: bytes packets errors dropped carrier collsns
136 17 0 0 0 0
如果我断开设备,将其重新插入,然后再次运行slcand命令,它就能正常工作。
答案 0 :(得分:0)
我的CANAble也有类似的问题。我使用CandleLight固件的情况比较好,请参阅CANAble Getting Started的“替代固件”页面的一半。
我的CANAble偶尔不发送消息(接收仍然有效)仍然有问题,但是固件升级后的频率要低得多。发生这种情况时,我只需要关闭接口并重新启动它,而无需拔掉插头。
此外,您可以尝试将txqueulen增加到大约10,000。这似乎对某些人有用,但是我偶尔还是会被锁死。
sudo ifconfig slcan0 txqueuelen 10000