임베디드 시스템의 CAN 인터페이스를 확인하고 싶습니다. 두 개의 CAN 포트가 있습니다: can0
및 can1
.
나는 그것들을 모두 다음 순서로 가져옵니다.
# ip link set can0 type can bitrate 1000000 dbitrate 2000000 fd on
# ip link set can0 up
# ip link set can1 type can bitrate 1000000 dbitrate 2000000 fd on
# ip link set can1 up
나는 그것들을 서로 연결하고 ( CANH
<-> CANH
, CANL
<-> CANL
및 GND
<-> GND
) trabnsceivers 뒤의 양쪽에 종단 저항을 사용했습니다. 이제 트래픽을 보내고 can0
들어오는 트래픽을 can1
.
나는 candump -c -a any
전화를 시작합니다 :
# cansend can0 01a#11223344AABBCCDD
하지만 그 후에는 다음과 같은 커널 오류가 많이 발생합니다.
[ 1506.337694] rcar_canfd 10050000.can can0: ch erfl 401 txerr 128 rxerr 0
[ 1506.337702] rcar_canfd 10050000.can can0: Bus error
[ 1506.337707] rcar_canfd 10050000.can can0: ACK Error
128
표현은 CAN_ERROR_PASSIVE_THRESHOLD
내가 읽은 내용을 보여줍니다 .
오류 수동: 이 상태에서 CAN 노드는 여전히 데이터를 전송할 수 있지만 이제 오류가 감지되면 "수동 오류 플래그"를 발생시킵니다. 또한, 3비트 일시 중지 시간 외에도 CAN 노드는 이제 데이터 전송을 재개하기 전에 추가 8비트(전송 일시 중지 시간이라고도 함)를 기다려야 합니다(다른 CAN 노드가 버스를 제어할 수 있도록 허용).
그러나 아무것도 표시되지 않습니다 candump
. 위의 메시지가 표시되지만 dmesg
(오실로스코프를 사용하여) CAN 라인의 데이터를 계속 볼 수 있습니다.
이러한 오류는 무엇을 의미하며, 오류를 수정하는 방법과 실제로 데이터를 보는 방법은 무엇입니까 candump
?