测试环境:多个CAN节点连接在CAN总线上,A设备向B设备发起数据传输,B会根据A的数据进行响应。期间没有其他节点发送数据帧。 LOG说明: [CAN-1-rx-tx-lx-fx]表示A设备发送的数据(其中的x表示任意数值) [CRNR]表示A设备接收到的CAN总线上的数据 eg: [CANR-1-r0-t27-l0-f0] 表示: r0 表示REC错误计数器为0, t27表示TEC错误计数器为27, l0表示LEC为0,f0表示
LOG图例: 结果现象: 从log中可以看到,TEC一直在累加,当然后面也有减小的趋势,但是突然TEC就清空了,然后EPVF EWGF也变为了0. 这是为什么呢?难道有什么自动清空机制吗? 按照ISO协议的标准,我理解他应该是慢慢递减的。是STM32内部有什么特殊处理吗? |
但是你也看到了,我监听的寄存器BUS OFF标志位没有被set呢。而且你说的离线节点 再次回到主动错误状态,也需要一定时间吧,但是我后面发现他是很快就恢复了,你可以看LOG前面的时间戳,精确到ms的,后面B设备也是很快响应A发的数据的
我想应该是进入了BUS OFF,可能没有捕获到。
认同你的看法。