CAN总线寻址如何工作?

时间:2014-11-18 03:15:28

标签: can-bus

CAN总线控制器如何基于此特定消息属于它的消息标识符来决定?是否接收器已经知道如果标识符假设值为5,那么对我而言。我们编程接收器告诉它你应该对价值5感兴趣吗?

3 个答案:

答案 0 :(得分:0)

在CAN协议级别,CAN网络中的所有节点都相同,并决定是否处理消息。 “CAN控制器”是一个更高层次的概念;它仍然需要像任何其他节点一样检查消息标识符。

请注意,“处理”消息与CAN协议消息检查和确认不同。所有节点都参与该处理,除非它们处于“仅监听”模式。

更新

您如何确定要处理的消息取决于您尝试执行的操作以及CAN上使用的更高级别协议。原则上,您将屏蔽掉相关的ID位,然后测试它们以查看是否应该处理该消息。

例如,如果要处理低位4位的5(二进制0101)的所有消息,则掩码为15(二进制1111),二进制 - 这与接收到的消息ID,然后比较结果有五个。

例如:

(msg_id & 15) == 5

是一种编码测试的方法。您关心哪些位,以及您的实现细节取决于许多其他因素。

答案 1 :(得分:0)

CAN节点中的软件必须根据网络规范决定它感兴趣的消息ID,网络规范通常是某种文档或其他电子表示,其中的消息包含哪些类型的信息。如果消息到达时没有意义,它就不会处理它,软件会在消息到达之前返回它正在做的事情(假设中断驱动的CAN处理)。

某些CAN控制器(即执行CAN协议传输和接收的芯片部分)具有消息过滤功能,这意味着可以在到达软件之前丢弃不感兴趣的消息。其他控制器具有消息过滤功能,可以将其设置为仅接受特定“消息框”中的单个消息ID,并且这些消息过滤可以配置为接受您感兴趣的消息。同样,其他消息也将被丢弃。有些控制器同时具有过滤器和消息框。

答案 2 :(得分:0)

特定于PDU1(协议数据单元)消息,指定了目标地址(字节3)。如果设备收到未发送给它的消息,则可以将其忽略。地址是由各种标准分配的,或者制造商可以临时分配它们。

在一般情况下,CAN-ID(字节0-4)包含有关消息类型的所有详细信息,并且设备可以检查特定字段以决定是否关心消息。例如,变速箱控制器可能不在乎电池状态消息,也不在乎电量计是否锁了哪些门。