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的報文。