SocketCAN — состояние устройства «ОСТАНОВЛЕНО»

#raspberry-pi #can-bus #socketcan

#raspberry-pi #can-шина #socketcan

Вопрос:

Я использую Raspberry Pi с платой PiCAN, в которой используется контроллер MCP2515 CAN.
Я использую SocketCAN для чтения и записи сообщений CAN через приложение, которое я написал.
После нескольких недель работы без проблем контроллер теперь находится в состоянии «ОСТАНОВЛЕНО». В чем разница между состоянием ОСТАНОВЛЕНО и ОТКЛЮЧЕНО от ШИНЫ?
Переходит ли устройство в состояние отключения шины, если на шине CAN возникает слишком много ошибок, и устройство переходит в ОСТАНОВЛЕННОЕ состояние, если вы отключаете устройство (ip link отключает canX)?
Существуют ли какие-либо другие способы, с помощью которых устройство может перейти в состояние ОСТАНОВЛЕНО? Я не смог найти способ, каким образом мое приложение могло отключить устройство.

 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 
 

Ответ №1:

Вам необходимо ознакомиться с состояниями АКТИВНОЙ ОШИБКИ, ПАССИВНОЙ ОШИБКИ и ошибки отключения шины устройств шины CAN, и когда необходимо вручную перезапустить связь CAN.

Всю необходимую информацию можно найти по одной из этих ссылок:

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

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