STM32CAN控制器每个筛选器组由两个32位的寄存器组成。
根据所需位宽的不同,各个筛选器可配置成16位或32位模式(如下图,当FSCx=1为32位模式,FSCx=0时为16位模式)。同时,筛选器的模式可配置成掩码模式和列表模式(FBMx=0为掩码模式,FBMx=1为列表模式)。
掩码模式:对报文ID的每一位可选择必须相同和不管它。
列表模式:只给出接收的ID,其它的一概不接收。
下面将这四种情况分别介绍一下:
1、1个32位筛选器——掩码模式
第一个筛选器写入报文ID,第二个筛选器规定对应的每个位是检查它(置1)还是不管它(置0)。
例如,第一个筛选器设置为0x0000,这时候如果第二个筛选器设置0xFFFF,就意味着对每个位都检查,即只接收ID是0x0000的报文。如果第二个筛选器设置0xFFFE,就是对最后一位不管,这时候0x0001和0x0000都可以被接收啦。
2、2个32位筛选器——列表模式
第一个筛选器写入报文ID,第二个也写标准的报文ID。此时只接收ID为这俩的报文。
例如,第一个筛选器设置0x0000,第二个筛选器设置0x0001。此时只能接收ID为0x0000和0x0001的报文了。
3、2个16位筛选器——掩码模式
和第一种情况差不多,只不过位宽减小到了16位,只支持标准ID格式,但是可以筛选的ID数增大到了两个。
4、4个16位筛选器——列表模式
拆分成的4个16位筛选器允许写入4个标准ID,只接收这4个ID的报文。