当前位置:首页 > 电源 > 功率器件
[导读]CAN控制器,提供了28个可配置的筛选器组(F1仅互联型才有28个,其他的只有14个),STM32 CAN控制器每个筛选器组由2个32位寄存器组成(CAN_FxR1和CAN_FxR2,x=0~27)。根据位宽不

CAN控制器,提供了28个可配置的筛选器组(F1仅互联型才有28个,其他的只有14个),

STM32 CAN控制器每个筛选器组由2个32位寄存器组成(CAN_FxR1和CAN_FxR2,x=0~27)。根据位宽不同,每个筛选器组可提供:

● 1个32位筛选器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位

● 2个16位筛选器,包括:STDID[10:0]、IDE、RTR和EXTID[17:15]位

对于组, 可以将其配置成屏蔽位模式, 这样 CAN_FxR0中保存的就是标识符匹配值,

CAN_FxR1中保存的是屏蔽码,即 CAN_FxR1中如果某一位为1,则 CAN_FxR0中相应

的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器; CAN_FxR1中为0的位表

示 CAN_FxR0中的相应位可不必与收到的帧进行匹配。 过滤器组还可以被配置成标识符列

表模式,此时 CAN_FxR0和 CAN_FxR1中的都是要匹配的标识符,收到的帧的标识符必

须与其中的一个吻合才能通过过滤。

 

 

注意:CAN_FilterIdHigh 是指高16位 CAN_FilterIdLow 是低16位应该将需要得到的帧

的和过滤器的设置值左对齐起。

一般我们用的都是普通型的,所以在本文中可以说 STM32有14组过滤器组。

根据配置,每1组过滤器组可以有1个,2个或4个过滤器。

这些过滤器相当于关卡,每当收到一条报文时,CAN 要先将收到的报文从这些过滤器上”

过”一下,能通过的报文是有效报文,收进 FIFO,不能通过的是无效报文(不是发给”我”

的报文),直接丢弃。

所有的过滤器是并联的,即一个报文只要通过了一个过滤器,就是算是有效的。

每组过滤器组有两种工作模式:标识符列表模式和标识符屏蔽位模式。

在标识符列表模式下,收到报文的标识符必须与过滤器的值完全相等才能通过。

在标识符屏蔽位模式下,可以指定标识符的哪些位为何值时就算通过。这其实就是限定了

处于某一范围的标识符能够通过。

在一组过滤器中,整组的过滤器都使用同一种工作模式。

另外,每组过滤器中的过滤器宽度是可变的,可以是32位或16位。

按工作模式和宽度,一个过滤器组可以变成以下几中形式之一:

(1) 1个32位的屏蔽位模式的过滤器。

(2) 2个32位的列表模式的过滤器。

(3) 2个16位的屏蔽位模式的过滤器。

(4) 4个16位的列表模式的过滤器。

所有的过滤器是并联的,即一个报文只要通过了一个过滤器,就是算是有效的。

每组过滤器组有两个32位的寄存器用于存储过滤用的”标准值”,分别是 FxR1,FxR2。

在32位的屏蔽位模式下:

有1个过滤器。

FxR2用于指定需要关心哪些位,FxR1用于指定这些位的标准值。

在32位的列表模式下:

有两个过滤器。

FxR1指定过滤器0的标准值,收到报文的标识符只有跟 FxR1完全相同时,才算通过。

FxR2指定过滤器1的标准值。

在16位的屏蔽位模式下:

有2个过滤器。

FxR1配置过滤器0,其中,[31-16]位指定要关心的位,[15-0]位指定这些位的标准值。

FxR2配置过滤器1,其中,[31-16]位指定要关心的位,[15-0]位指定这些位的标准值。

在16位的列表模式下:

有4个过滤器。

FxR1的[15-0]位配置过滤器0,FxR1的[31-16]位配置过滤器1。

FxR2的[15-0]位配置过滤器2,FxR2的[31-16]位配置过滤器3。

STM32的 CAN 有两个 FIFO,分别是 FIFO0和 FIFO1。为了便于区分,下面 FIFO0写作

FIFO_0,FIFO1写作 FIFO_1。

每组过滤器组必须关联且只能关联一个 FIFO。复位默认都关联到 FIFO_0。

所谓“关联”是指假如收到的报文从某个过滤器通过了,那么该报文会被存到该过滤器相连

的 FIFO。

从另一方面来说,每个 FIFO 都关联了一串的过滤器组,两个 FIFO 刚好瓜分了所有的过

滤器组。

每当收到一个报文,CAN 就将这个报文先与 FIFO_0关联的过滤器比较,如果被匹配,就

将此报文放入 FIFO_0中。

如果不匹配, 再将报文与 FIFO_1关联的过滤器比较, 如果被匹配, 该报文就放入 FIFO_1

中。

如果还是不匹配,此报文就被丢弃。

每个 FIFO 的所有过滤器都是并联的,只要通过了其中任何一个过滤器,该报文就有效。

如果一个报文既符合 FIFO_0的规定,又符合 FIFO_1的规定,显然,根据操作顺序,它

只会放到 FIFO_0中。

每个 FIFO 中只有激活了的过滤器才起作用,换句话说,如果一个 FIFO 有20个过滤器,

但是只激话了5个,那么比较报文时,只拿这5个过滤器作比较。

一般要用到某个过滤器时,在初始化阶段就直接将它激活。

需要注意的是,每个 FIFO 必须至少激活一个过滤器,它才有可能收到报文。如果一个过

滤器都没有激活,那么是所有报文都报废的。

一般的,如果不想用复杂的过滤功能, FIFO 可以只激活一组过滤器组,且将它设置成 32

位的屏蔽位模式,两个标准值寄存器(FxR1,FxR2)都设置成0。这样所有报文均能通过。

(STM32提供的例程里就是这么做的! )

STM32 CAN 中,另一个较难理解的就是过滤器编号。

过滤器编号用于加速 CPU 对收到报文的处理。

收到一个有效报文时, CAN 会将收到的报文 以及它所通过的过滤器编号, 一起存入接

收邮箱中。CPU 在处理时,可以根据过滤器编号,快速的知道该报文的用途,从而作出相

应处理。

不用过滤器编号其实也是可以的, 这时候 CPU 就要分析所收报文的标识符, 从而知道报

文的用途。

由于标识符所含的信息较多,处理起来就慢一点了。

STM32使用以下规则对过滤器编号:

(1) FIFO_0和 FIFO_1的过滤器分别独立编号,均从0开始按顺序编号。

(2) 所有关联同一个 FIFO 的过滤器,不管有没有被激活,均统一进行编号。

(3) 编号从0开始,按过滤器组的编号从小到大,按顺序排列。

(4) 在同一过滤器组内,按寄存器从小到大编号。FxR1配置的过滤器编号小,FxR2配置

的过滤器编号大。

(5) 同一个寄存器内,按位序从小到大编号。[15-0]位配置的过滤器编号小,[31-16]位

配置的过滤器编号大。

(6) 过滤器编号是弹性的。 当更改了设置时,每个过滤器的编号都会改变。

但是在设置不变的情况下,各个过滤器的编号是相对稳定的。

这样,每个过滤器在自己在 FIFO 中都有编号。

在 FIFO_0中,编号从0 – (M-1), 其中 M 为它的过滤器总数。

在 FIFO_1中,编号从0 – (N-1),,其中 N 为它的过滤器总数。

一个 FIFO 如果有很多的过滤器,,可能会有一条报文, 在几个过滤器上均能通过,这时

候,,这条报文算是从哪儿过来的呢?

STM32在使用过滤器时,按以下顺序进行过滤:

(1) 位宽为32位的过滤器,优先级高于位宽为16位的过滤器。

(2) 对于位宽相同的过滤器,标识符列表模式的优先级高于屏蔽位模式。

(3) 位宽和模式都相同的过滤器,优先级由过滤器号决定,过滤器号小的优先级高。

按这样的顺序,报文能通过的第一个过滤器,就是该报文的过滤器编号,被存入接收邮箱

中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭