嗨,团队、
我正在研究 自动总线关闭恢复功能。在 EB Tresos 中,我启用了 "可以自动恢复总线关闭"选项,并生成了代码。
在测试过程中,我短接了 CAN_H 和 CAN_L 线路:
请您确认一下:
1.是否 定时配置或重试次数选项1.EB Tresos 中的自动总线关断恢复是否提供定时配置或重试次数选项?
2.是否需要更改其他配置或代码才能在 S32K322 上进行适当的自动恢复?
谢谢& 、
赛尚菲雅
Hi@saishanfi
您只需注意该寄存器的配置。
Senlent_0-1758590973038.png
如果 BOFFREC 为 0,即默认情况下自动断开恢复处于启用状态,则 FLEXCAN IP 模块将自动尝试从总线关闭状态恢复到正常状态。这项工作由 FLEXCAN IP 自我完成。
你好@Senlent、
在测试期间,我禁用了总线-Off 中断,并且没有在代码中调用任何总线-Off API。我只在 EB 中启用了 “自动总线关机恢复” 选项。
在此设置中,当我强制关闭总线(短路CANH和CANL)时,通信按预期停止了。但是,一旦我重新连接总线,即使没有使用任何API调用,恢复过程也会自动发生。
请您澄清一下:
1.这种情况背后的具体恢复机制是什么?
2. 恢复是纯粹由 CAN 控制器硬件处理的(TEC 减量 & 错误活动状态),还是 EB 是否有触发信号恢复的软件机制?
谢谢& 、
赛尚菲雅
你好@Senlent、
谢谢你的澄清。我按照您建议的配置步骤启用自动断开总线恢复,该过程按预期运行。
谢谢& 、
赛尚菲雅
你好,森兰特、
我检查了 CTRL1-> BOFFREC 位并确认已启用自动断开总线恢复。
当我短路CANL和CANH时,发生了总线错误,重新连接后,恢复没有发生。经过分析,我注意到,一旦发生总线关闭,就会触发 can_43_flexcan_processbusOffInterrupt () API,控制器进入停止模式。
为了使自动恢复生效,我是否仍需要明确调用 Can_43_FLEXCAN_SetControllerMode()来重启控制器?
能否请您对此提供支持?
谢谢& 、
赛尚菲雅
你好@赛尚菲雅
请在调试接口中检查 CTRL1-> BOFFREC 是否已启用。
Senlent_0-1755658412820.png
无需额外设置。启用该位后,FLEXCAN 将自动尝试从总线关闭状态恢复到正常状态(假设导致总线断开的外部条件已消除)。