can硬件滤波 stm32cubemx_[转载]STM32的CAN滤波器设置

STM32F103RBT6的CAN中共有14个位宽可变(可配置)的标识符滤波器组,软件通过对它们编程,从而在CAN

收到的报文中选择它需要的报文,而把其它报文丢弃掉。

图2-27

滤波器组位宽设置-寄存器组织框图

在标识符屏蔽模式下,过滤器组x的第1个标识符寄存器(CAN_FxR1)用来保存用于与报文ID比较的完整标识符。第2个标识符寄存器(CAN_FxR2)则用来表示屏蔽位,即表明报文ID

要与第1个标识符寄存器中的哪几位比较,值为1的寄存器位就是屏蔽位(参与比较,位必须匹配才能通过滤波器),值为0的寄存器位不参与比较。

本文的基于STM32的CAN总线学习板程序中运用的是“标识符屏蔽”模式,下面针对此模式做详细解读和举例。

从滤波器的寄存器映像中可知:无论用作哪个模式,标识符寄存器的第0位保留,第1位为报文的RTR位,第2位是报文的IDE位,报文的扩展ID保存在第3

~ 20

位(共18位),报文的标准ID保存在第21 ~

32 位(共11位)。使用时,由开发者根据需要填写相应的设置。

举例1:设置滤波器,采用1个32位滤波器的“标识符屏蔽”模式,将CAN

ID设置为“0x028A”,接收标准帧、数据帧。

解答:详见表2-37所示。

标识符寄存器CAN_FxR1设置:

第0位保留,置位0;第1位为报文的RTR位置0(数据帧);第2位是报文的IDE位置0(

你可能感兴趣的:(can硬件滤波,stm32cubemx)