我接受了采访。面试官问我:CAN会发生什么?
如果两个节点发送两个具有不同数据的相同标识符(0x100)的消息,谁将赢得仲裁?巴士上有哪条消息?
如果节点1赢了,那么节点2的消息呢?节点2的消息何时会被发送?
我接受了采访。面试官问我:CAN会发生什么?
如果两个节点发送两个具有不同数据的相同标识符(0x100)的消息,谁将赢得仲裁?巴士上有哪条消息?
如果节点1赢了,那么节点2的消息呢?节点2的消息何时会被发送?
我找到了答案Controller Area Network - CAN Information。
网络上的两个节点不允许发送具有相同ID的消息。如果两个节点试图同时发送具有相同ID的消息,则仲裁将不起作用。相反,其中一个发送节点将检测到他的消息在仲裁领域之外失真。然后节点将使用CAN的错误处理,在这种情况下最终将导致发送节点中的一个被关闭(总线关闭模式)。
这里有2案件
CASE 1:当两个节点都试图传送相同的ID和相同的数据字段,CAN将它视为一条消息,并将它发送到CAN总线上。在这里,你真的不能说节点1是发送还是节点2正在发送,因为两者都有相同的ID和数据。
CASE 2:这里的数据字段是不同的。在仲裁领域之前不会有问题。由于两个节点的数据都不相同,所以会出现总线错误。这是因为您的数据字段受CRC保护,位填充也会出现在图片中。
在一个CAN N/W中,如果2个设备具有相同的节点ID,则两个设备都不会检测到&不会发生消息的解除/响应。 (没有什么可以工作,比如Bit Bit Stuffing,Arbitration,Error Detection,Bit monitoring,ACK,CRC)。
在N/W如果我们有不同的ID,那么我们可以传输相同或不同的消息。为了控制CAN N/W,我们使用仲裁概念。
感谢您的更新 –