STM32的CAN过滤器详解
STM32普通芯片的CAN有14組過濾器組,互聯型有28組過濾器組,每組過濾器有2個可配置的32位寄存器:CAN_FxR0和CAN_FxR1。用以對收到的幀進行過濾,以此判斷是否接收該幀。
?
每組過濾器組有兩種工作模式:標識符列表模式,標識符屏蔽位模式。
??????? 標識符列表模式:收到的標識符必須與過濾器的值完全相等,才能通過。
??????? 標識符屏蔽位模式:只要標識符的某些位符合,就算通過。
?
每組過濾器的過濾寬度是可變的,有兩種類型:32位,16位。
?
可以通過配置工作模式和寬度,將一個過濾器組配置為如下4種形式:
??????? 32位的屏蔽位模式:1個過濾器。
??????????????? CAN_FxR1用于指定需要關心哪些位
??????????????? CAN_FxR0用于指定這些位的值
??????? 32位的列表模式:2個過濾器
??????????????? CAN_FxR0用來指定過濾器0的標準值
??????????????? CAN_FxR0用于指定過濾器1的標準值
??????? 16位的 屏蔽位模式:2個過濾器
??????????????? CAN_FxR0用來配置過濾器0,[31-16]位指定需要關心的位,[15-0]指定這些位的值
??????????????? CAN_FxR1用來配置過濾器1,[31-16]位指定需要關心的位,[15-0]指定這些位的值
??????? 16位的列表模式:4個過濾器
??????????????? CAN_FxR0的[15-0]位用來配置過濾器0,[31-16]位用來配置過濾器1
??????????????? CAN_FxR1的[15-0]位用來配置過濾器2,[31-16]位用來配置過濾器3
?
STM32有兩個接收FIFO,分別是FIFO0,FIFO1。每組過濾器組必須關聯且只能關聯一個FIFO,復位都關聯到FIFO0。所謂關聯就是一旦報文通過過濾器,就會存到事先關聯的FIFO中。
?
下面具體看一下,CAN_FxR0和CAN_FxR1各中模式下各位的定義:
??????? 32位的屏蔽位模式:
???????????????
??????? 32位的列表模式:
???????????????
??????? 16位的屏蔽位模式:
???????????????
??????? 16位的列表模式:
???????????????
總結
以上是生活随笔為你收集整理的STM32的CAN过滤器详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开关电源之EMI设计
- 下一篇: 秒杀奥斯卡的“第四块广告牌”就在你身边!