筛选模式分两种,分别是标识列表模式和掩码模式,如下:
(1) 列表模式,它把要接收报文的ID列成一个表, 要求报文ID与列表中的某一个标识符完全相同才可以接收,可以理解为白名单管理。
(2) 掩码模式,它把可接收报文ID的某几位作为列表,这几位被称为掩码, 可以把它理解成关键字搜索,只要掩码(关键字)相同,就符合要求,报文就会被保存到接收FIFO。
两种筛选模式用通俗的话来讲,标识列表模式就是把所有的ID放在一个表里,一个一个的去查,查到与标识的ID相同的报文选择接收,其他的报文不接受;掩码模式就是,对应ID的每一个位,都有一个掩码的位去决定,如下掩码:0x7FF ,ID:0x240 二进制转换再进行逻辑与操作:
掩码:0x7FF = 0b 0111 1111 1111
ID: 0x240 = 0b 0010 0100 0000
与操作结果 :0b x010 0100 0000 这个就是筛选出来的ID。
由此可以推出:0b 0010 0100 0000 或者 0b 1010 0100 0000
所以筛选ID为:0x240 、0xA40
当掩码是1时,就表明要接收的报文ID就必须和存储的ID一致,当掩码是0是,就是不关心要筛选的ID这一位可以是0,也可以是1。
模式 | 优点 | 缺点 |
列表模式 | 能精确地过滤每个指定的CAN ID | 有数量限制 |
掩码模式 | 取决于屏蔽码,有时无法完全精确到每一个CANID,部分不期望的CANID有时也会收到 | 数量取决于屏蔽码,最多无上限 |
筛选器的筛选ID长度和筛选模式两两组合,可以产生4种筛选模式,如下图