#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.
Всю необходимую информацию можно найти по одной из этих ссылок: