首页 > 解决方案 > SocketCAN - 设备状态“已停止”

问题描述

我将 Raspberry Pi 与使用 MCP2515 CAN 控制器的 PiCAN 板一起使用。
我使用 SocketCAN 通过我编写的应用程序读取和写入 CAN 消息。
运行几周后没有出现问题,控制器现在处于“已停止”状态。STOPPED 和 BUS-OFF 状态有什么区别?
如果CAN总线上出现太多错误,设备是否进入BUS-OFF状态,如果您将设备设置为DOWN(ip link set canX down),设备是否进入STOPPED状态?
有没有其他方法可以让设备进入 STOPPED 状态?我无法找到我的应用程序如何设置设备的方法。

ip -details -statistics link show can0
3: can0: <NOARP,ECHO> mtu 16 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 10
   link/can  promiscuity 0
   can state STOPPED restart-ms 100
      bitrate 250000 sample-point 0.875
      tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
      mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
      clock 8000000
      re-started bus-errors arbit-lost error-warn error-pass bus-off
      0          0          0          146        139        0         numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
   RX: bytes  packets  errors  dropped overrun mcast
   787700920  151606570 24      0       24      0
   TX: bytes  packets  errors  dropped carrier collsns
   6002905    5895301  0       0       0       0 

标签: raspberry-pican-bussocketcan

解决方案


您需要熟悉 CAN 总线设备的 ERROR ACTIVE、ERROR PASSIVE 和 BUS OFF 错误状态,以及何时需要手动重启 CAN 通信。

所有相关信息都可以在以下链接之一中找到:

http://www.can-wiki.info/doku.php?id=can_faq:can_faq_erors

http://www.port.de/cgi-bin/CAN/CanFaqErrors


推荐阅读