STM32
直播中

徐伟

8年用户 1005经验值
私信 关注
[问答]

STM32G0B1 CAN的自动重发间隔是多长时间?

请教一下CAN的自动重发间隔是多长时间?
假设can上有一个节点,由于收不到ack一直在自动重发,那么现在如果有一个节点要上来就是从busoff恢复,他需要检测128次连续11个隐性位。如果有一个节点一直在自动重发,那么新的节点还能上来了吗?
如果一个节点从busoff上来的话,要经过128个连续11个隐性位,如果就算最快的一个位是1us,那么总时间也要1ms。如果一个节点一直在自动重发,1ms能发2-3帧左右。所以这个时候busoff那个节点没办法上来。这个情况怎么处理?

回帖(1)

而无返还

2024-5-28 16:20:40
STM32G0B1 CAN自动重发间隔取决于CAN控制器的配置。通常,CAN控制器的自动重发间隔可以通过编程设置,以适应不同的应用场景。在STM32G0系列微控制器中,CAN控制器的自动重发间隔可以通过设置CAN_MCR寄存器中的TTC和TDC字段来调整。

关于您提到的问题,如果一个节点由于收不到ACK而一直在自动重发,确实可能会影响到其他节点的通信。在这种情况下,新的节点可能无法成功从busoff状态恢复。为了解决这个问题,可以考虑以下几个方面:

1. 优化网络拓扑:确保网络中没有过多的节点,以减少冲突和重发的可能性。

2. 调整自动重发策略:可以通过编程调整CAN控制器的自动重发间隔,以减少对其他节点的影响。

3. 错误处理机制:在CAN通信协议中,可以设计错误处理机制,以便在检测到错误时采取相应的措施,如降低发送速率、暂停发送等。

4. 监听机制:在CAN网络中,节点可以监听总线上的通信,以便在总线空闲时发送数据。这样可以减少冲突和重发的可能性。

5. 错误计数器:在CAN控制器中,通常会有一个错误计数器,用于记录节点的错误次数。当错误计数器达到一定阈值时,节点会自动进入busoff状态。可以通过监控错误计数器来调整发送策略,以减少错误发生。

总之,要解决这个问题,需要从多个方面进行优化和调整。通过合理的网络设计、调整自动重发策略、设计错误处理机制等方法,可以降低CAN网络中的冲突和重发,提高通信的可靠性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分