2012-05-28 66 views
2

我接受了采访。面试官问我:CAN会发生什么?

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

如果节点1赢了,那么节点2的消息呢?节点2的消息何时会被发送?

回答

0

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

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

2

这里有2案件

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

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

CASE 2:这里的数据字段是不同的。在仲裁领域之前不会有问题。由于两个节点的数据都不相同,所以会出现总线错误。这是因为您的数据字段受CRC保护,位填充也会出现在图片中。

+0

感谢您的更新 –

0

在一个CAN N/W中,如果2个设备具有相同的节点ID,则两个设备都不会检测到&不会发生消息的解除/响应。 (没有什么可以工作,比如Bit Bit Stuffing,Arbitration,Error Detection,Bit monitoring,ACK,CRC)。

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