CAN 总线系列讲座第六讲——SJA1000 的滤波器设置 CAN 总线的滤波器设置就像给总线上的节点设置了一层过滤网,只有符合要求的 CAN 信息帧才可以通过,其余的一概滤除
在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等时,CAN 控制器才允许将已接收信息存入 RXFIFO
验收滤波器由验收代码寄存器(ACRn)和验收屏蔽寄存器 AMRn 定义,要接收的信息的位模式在验收代码寄存器中定义,相应的验收屏蔽寄存器允许定义某些位为“不影响”,即可为任意值
1、BasicCAN 模式下 SJA1000 滤波器 在验收滤波器的帮助下 CAN 控制器能够允许 RXFIFO 只接收同识别码和验收滤波器中预设值相一致的信息,验收滤波器通过验收代码寄存器 ACR 和验收屏蔽寄存器 AMR 来定义
表2-1 验收代码寄存器 ACR BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 AC
0 复位请求位被置高,验收代码寄存器 ACR 可以访问(读/写)
表2-2 验收屏蔽寄存器 AMR BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 AM
0 复位请求位被置高,验收屏蔽寄存器AMR可以访问(读/写)
验收屏蔽寄存器定义验收代码寄存器的相应位对验收滤波器是“相关的”或“无影响的”
滤波的规则是:每一位验收屏蔽分别对应每一位验收代码,当该位验收屏蔽位为“1”的时候(即设为无关),接收的相应帧 ID 位无论是否和相应的验收代码位相同均会表示为接收;当验收屏蔽位为“0”的时候(即设为相关),只有相应的帧 ID 位和相应的验收代码位值相同的情况才会表示为接收