CAN转储实用程序过滤器和掩码ID

问题描述 投票:0回答:1

任何人都可以通过示例帮助我了解 can_id 和 can_mask 之间的区别 我试图通过浏览手册页来理解,但我仍然无法理解它。 请帮助我

linux embedded embedded-linux can-bus soc
1个回答
0
投票

ID 是负责识别 CAN-Bus 网络中设备的元素。 CAN总线上的每个设备必须拥有唯一的ID以防止数据冲突。另外,ID表示通信阶段的优先级,ID值越低,其消息优先级越高。

对于使用

CAN ID作为标识的方法,之前定义了一个ID List,如果消息的ID与List中的ID匹配,则消息被接受,否则被忽略。

在解释CAN掩码之前,先解释一下CAN过滤器的概念。

CAN Filter 负责指定设备应主动监控和处理的消息类型。

现在,关于

CAN 掩码,它的功能就像一个选择工具,它定义过滤器中的哪些位必须匹配以及哪些位可以忽略。

例如: 我们以一个配置为例,其中

Filter 为 0x55Mask 为 0xDC

在二进制中,我们有:

0b01010101 Filter. 0b11011100 Mask.
所以我们来执行一个 AND 运算,首先,Mask 中为 0 的值将充当非关心位,在结果中我们放置一个 X。

所以我们得到以下结果:

0b01X101XX
您可以将 X 替换为 1 或 0,因此任何符合该值的值都将由具有该过滤器和掩码选择的设备读取。

例如,下面列出的所有 ID 都将读取其数据

0b01X101XX 0b01110101 -> 0x75 0b01010111 -> 0x57 0b01010101 -> 0x55 0b01010100 -> 0x54
总而言之,与 

CAN-ID 相比,CAN-Mask 允许广泛的 ID 选择,后者的列表允许添加非常有限数量的 ID。

© www.soinside.com 2019 - 2024. All rights reserved.