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