組み込みシステムのCANインターフェースを確認したいです。 2つの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
?