【问题标题】:What will happen in CAN?CAN会发生什么?
【发布时间】:2012-05-28 11:06:47
【问题描述】:

我接受了采访。面试官问我:

如果两个节点发送两条具有相同标识符(0x100)但数据不同的消息,谁将赢得仲裁?巴士上会显示哪条消息?

如果节点 1 获胜,那么节点 2 的消息呢?节点2的消息什么时候发送?

【问题讨论】:

    标签: ipc communication can-bus


    【解决方案1】:

    这里有两种情况

    1. 相同的 ID 和相同的 DATA 字段
    2. 具有不同 DATA 字段的相同 ID

    CASE 1:当两个节点试图传输相同的 ID 和相同的数据字段时,CAN 会将其视为单个消息,并将其发送到 CAN 总线上。在这里你真的不能说是节点 1 发送还是节点 2 发送,因为两者具有相同的 ID 和数据。

    案例 2:这里的数据字段不同。直到仲裁领域都不会有问题。由于两个节点的数据不同,您将收到总线错误。这是因为您的数据字段受CRC 保护,并且位填充也会出现。

    【讨论】:

      【解决方案2】:

      在 CAN N/W 中,如果 2 个设备具有相同的节点 ID,则两个设备都不会检测到并且不会发生消息的请求/响应。 (什么都行不通……像位填充、仲裁、错误检测、位监控、ACK、CRC)。

      在 N/W 中,如果我们有不同的 ID,那么我们可以传输相同或不同的消息。为了控制 CAN N/W,我们使用仲裁的概念。

      【讨论】:

        【解决方案3】:

        我在Controller Area Network - CAN Information中找到了答案。

        不允许网络上的两个节点发送具有相同 ID 的消息。如果两个节点试图同时发送具有相同 ID 的消息,仲裁将不起作用。相反,其中一个发送节点将检测到他的消息在仲裁域之外被扭曲。然后节点将使用 CAN 的错误处理,在这种情况下最终将导致其中一个传输节点被关闭(总线关闭模式)。

        【讨论】:

          猜你喜欢
          • 2014-05-03
          • 1970-01-01
          • 2012-01-26
          • 2010-09-26
          • 2020-01-30
          • 2011-07-07
          • 2013-06-08
          • 2016-12-26
          • 2015-09-23
          相关资源
          最近更新 更多