stm32 Can通讯过滤器寄存器设置(实验验证)

本文介绍了在STM32单片机中进行CAN通信时遇到的过滤器设置问题。通过理解CAN过滤器的格式,解析了CAN1->sFilterRegister[x].FR1和CAN1->sFilterRegister[x].FR2寄存器的设置方法。内容包括IDE和RTR的含义,以及如何根据标识符列表和屏蔽模式配置寄存器,以过滤特定标准ID和扩展ID的数据帧。
摘要由CSDN通过智能技术生成

起因:在使用stm32单片机can通讯时,参考手册的介绍与寄存器封装有差别,不好理解怎么去设置寄存器。在参考一些代码时,对怎么去设置过滤器还是难以理解。

解决:

       在寄存器封装库中,我们发现CAN过滤器设置寄存器封装有CAN1->sFilterRegister[ x ].FR1 和 CAN1->sFilterRegister[ x ].FR2 两个寄存器,其封装如下:

typedef struct
{
  __IO uint32_t FR1;
  __IO uint32_t FR2;
} CAN_FilterRegister_TypeDef;

我所碰到的问题便是这两个寄存器的如何设置问题。

首先我们得理解过滤器的格式,如下:

我们所要设置的寄存器CAN1->sFilterRegister[ x ].FR1便是如上图所说的标识符屏蔽模式中的 ID,

而CAN1->sFilterRegister[ x ].FR2, 就是屏蔽寄存器; 在标识符列表模式中,两者都是ID。

我们按上面的格式去设置寄存器: 标准ID / 拓展ID + IDE + RTR + x 。

已知 IDE = 0 代表标准ID,  IDE =1 代表拓展ID;  RTR = 0代表数据帧,RTR = 1代表远程帧;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值