我正在新的自定义板上设置CAN总线。它使用通过SPI总线连接的mcp2515控制器。当使用“ candump”接收时,数据中的一位总是0(具体来说,数据的第一位)。总线上的其他两个设备运行正常。可能相关,硬件中存在时序问题,我必须将波特率设置为20%更高,才能为其他设备获得正确的波特率。
如果我断开总线电缆并启用环回,甚至会发生这种情况!
#ip link set can0 type can bitrate 600000 loopback on
#ifconfig can0 up
#candump can0 &
# cansend can0 0FF#AABBCCDDEEFFFFFF
can0 4FB [8] 2A BB CC DD EE FF FF FF
can0 0FF [8] AA BB CC DD EE FF FF FF
# cansend can0 0AB#AABBCCDDEEFFFFFF
can0 4AB [8] 2A BB CC DD EE FF FF FF
can0 0AB [8] AA BB CC DD EE FF FF FF
# cansend can0 000#0000CCDDEEFFFFFF
can0 400 [8] 00 00 4C DD EE FF FF FF
can0 000 [8] 00 00 CC DD EE FF FF FF
是否有明显的原因导致这种情况发生?即使在环回模式下,硬件中的定时错误是否也可能导致此问题?
编辑删除了错误的CAN_ID'FFF'的示例,以减少混乱]
我设法找到两个问题的解决方案: