【问题标题】:Recovery from CAN Bus-off State从 CAN 总线关闭状态恢复
【发布时间】:2017-10-05 04:11:50
【问题描述】:

在 CAN 网络中。如果一个节点进入总线关闭状态,它必须等待 128 次出现 11 个连续隐性位。所以我的问题是为什么只有 11 个隐性位,是否有任何具体理由遵循该标准?

【问题讨论】:

    标签: embedded can-bus


    【解决方案1】:

    数据框

    11 位 = 1 位 ACK 分隔符 + 7 帧结束 + 3 IFS

    错误帧:

    11 位 = 8 个错误分隔符 + 3 个 IFS

    所以这意味着你需要等待:

    • 128 次成功的数据帧或错误帧。
    • 或者只是 11 个连续隐性位的 128 次出现。

    从总线关闭中恢复。

    最好的情况是处于空闲状态(当总线状态为隐性时),假设波特率为1Mb/s(所以1位时间为1us),总共需要等待128*11*1us = 1408us。

    【讨论】:

    • 谢谢。我还有一个疑问,CAN 节点应该成功接收 128 次上述帧才能从 Bus-Off 中恢复。我的问题是,有什么特别的理由要保持 128 次吗? @Nik
    • @Arun 这是经验练习,他们发现 128 次就足够了。实际上,人们不会使用此规则从总线关闭中恢复,大多数 Can Controller 允许使用实现您自己的规则(例如等待 40ms 恢复)。
    • 谢谢@Nik。他们将在此期间做什么,他们将等待或他们将遵循的任何恢复机制?如果他们只是等待,这意味着同样的问题会再次重复,那么有什么必要等待而不是停止传输其他消息以等待恢复时间。
    • @Arun 他们只会等待一段时间后,他们会尝试回到公共汽车上。如果错误不断发生,他们将需要一种机制来报告错误,例如:在 Autosar 中,他们尝试进行快速恢复和慢速恢复,如果仍然总线关闭,则将其报告给错误管理模块。请参阅 7.7 autosar.org/fileadmin/user_upload/standards/classic/3-0/…
    【解决方案2】:

    当 REC 值达到 256 时进入 BUS OFF 状态,从那 128 次 11 隐性位需要发送恢复,128 是 256 的一半,它将进入主动故障状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多