大家好、
请多多包涵、因为我不是母语英语的人、以下帖子可能不是最容易阅读的帖子。
我目前正在根据我们的一个项目中的自动总线恢复(CANMC.ABO)对 CAN 总线关闭恢复实施进行全面检查。
由于某些技术规格发生了变化、因此需要特定的总线恢复时序、因此也需要重新启动 CAN 传输的时序。 这使得无法使用自动配置。 基本上、恢复时的自动总线速度太快。
我想坚持使用 CANMC.ABO 实现、但到目前为止、我找不到方法向应用软件指示发生了自动总线打开。 因此、我开始检查手动总线恢复。
根据此控制器的"SPRUEU1"、我对总线关闭检测的理解是、在关闭总线关闭通过各种错误级别(EW 和 EP)时、CANTEC 将增大 在最后达到 CANTEC 计数器值256之前、触发总线关闭、并使用 CANES.BO 和 CANMC.CCR 为相应的 CAN 总线标记此状态。
一旦达到总线关闭状态、CANREC 计数器将在 CAN 总线再次正常时提供相关信息。 遗憾 的是、我发现"SPRUEU1"中的描述对什么情况会导致 CANREC 计数器的含义发生变化非常模糊。 什么被视为“总线关闭状态”? CANES.BO 是否需要设置为1?CANMC.CCR 位是否需要设置为1?是否需要将 CANREC 的功能更改为对隐性位进行计数?
根据我的理解、一旦 CANREC 计数器达到128 、总线处于关闭状态、总线就可以被视为正常、而通过将 CANMC.CCR 设置为0、手动总线开启就可以被视为安全。
到目前为止、在我的实施和测试过程中、虽然连续施加总线关闭条件(CAN 高电平和 CAN 低电平短接)、但 CANES.BO 首先设置为1、 CANMC.CCR 设置为1、 但不知怎么说 、CANES.BO 在不对任何手动总线执行任何操作的情况下被复位为状态0 (并且 CANMC.ABO = 0)。 到目前为止、我还没有找到写入 CANES 寄存器的任何代码行。
当总线关闭条件消失 (CAN 高电平和 CAN 低电平不再短接)时、我从未发现 CANREC 计数器被设置为不同的0值。 因此、我不知道何时执行手动总线开启和重新启动发送。
我对识别总线关闭状态以及识别总线打开状态的机制的理解是否正确? 有什么想法可以解释为什么 canes.BO 会更改其值或如何获取信息以启动手动总线恢复?
感谢您阅读这篇相当长的文章。 我会尽量准确地描述我的问题。