STM32G0B1的CAN自动重发
请教一下CAN的自动重发间隔是多长时间?假设can上有一个节点,由于收不到ack一直在自动重发,那么现在如果有一个节点要上来就是从busoff恢复,他需要检测128次连续11个隐性位。如果有一个节点一直在自动重发,那么新的节点还能上来了吗?
如果一个节点从busoff上来的话,要经过128个连续11个隐性位,如果就算最快的一个位是1us,那么总时间也要1ms。如果一个节点一直在自动重发,1ms能发2-3帧左右。所以这个时候busoff那个节点没办法上来。这个情况怎么处理?
自动重发那个节点可以设错误计数器,到了一定数量就busoff。
一个节点从 bus off 到重新上线,是要等待129给IDLE 状态,这是协议规定的,没法减少。
butterflyspring 发表于 2024-4-24 14:23
自动重发那个节点可以设错误计数器,到了一定数量就busoff。
一个节点从 bus off 到重新上线,是要等待129 ...
感谢支持!
如有只有一个节点的话,他的错误就是ack错误,这个应该是不会进入busoff,这个是标准规定的,所以才会一直发报文
!(data/attachment/forum/202404/24/171257a9vmr40bz1yc9dwq.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "ca6889186cb10ef8337d474cbe3f020.jpg")
按11898描述
!(data/attachment/forum/202404/24/171351ez5366wzzn7tqn66.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "8baf6e95b9bcd7fde48550e8bb3e995.png")计数器在这两种特例的情况下 是不会累加的
吃绿色菜 发表于 2024-4-24 17:14
感谢支持!
如有只有一个节点的话,他的错误就是ack错误,这个应该是不会进入busoff,这个是标准规 ...
有个 timeout counter, 用这个试试
页:
[1]