文章目录
简介
STM32的CAN控制器可以对接收到的数据报文进行过滤。
- 只接收指定
CAN ID的数据。 - 对于其他
CAN ID发送过来的数据,则不再触发CAN中断。
根据芯片的不同,可以有不同数量的CAN控制器:
- 如果
STM32只有一个CAN控制器,则可以配置14个过滤器组,对应的编号为0 ~ 13。 - 如果
STM32拥有两个CAN控制器,则可以配置28个过滤器组:
- 对于
CAN 1,对应的过滤器组编号为0 ~ 13。 - 对于
CAN 2,对应的过滤器组编号为14 ~ 27。
CAN过滤有如下模式:
屏蔽位模式标识符列表模式
相关寄存器
和CAN过滤相关的寄存器为CAN_FxR1和CAN_FxR2:

如果只想接收CAN ID为0x317的标准帧,则设置方法如下:

0110 0010 111:0x317对应的二进制位。1111 1111 111:收到的数据帧中相应的ID位必须和设置的ID位一样。00和11:只接收标准帧,不接收扩展帧。
如果想接收CAN ID为0x310至0x317的标准帧,则设置方法如下:

代码实例
只过滤一个CAN ID
如果需要让CAN 2只接收CAN ID为0x713的报文,则代码如下:
CAN_FilterInitTypeDef CAN_FilterInitStructure;
CAN_FilterInitStructure.CAN_FilterNumber = 14;
CAN_FilterInitStructure.CAN_FilterMo

本文介绍了STM32控制器如何对CAN数据报文进行过滤,讲解了如何配置过滤器组以接收特定ID的报文,包括单个ID过滤和多个ID过滤,并给出了具体的代码实例。

5451

被折叠的 条评论
为什么被折叠?



