STM32 CAN过滤器配置详解
创作时间:
作者:
@小白创作中心
STM32 CAN过滤器配置详解
引用
CSDN
1.
https://blog.csdn.net/m0_73636161/article/details/128123949
CAN过滤器基础知识
在使用STM32微控制器进行CAN总线通信时,过滤器是一个非常重要的概念。过滤器的主要作用是帮助接收器只接收感兴趣的CAN帧,而忽略其他无关的帧,从而提高系统的效率和可靠性。
过滤器的基本配置
STM32的bxCAN接收时必须使用过滤器接收。根据CAN外设数量的不同,过滤器的数量也会有所不同:
- 只有CAN1:CAN1有14个过滤器
- 有CAN1和CAN2:CAN1和CAN2共享28个过滤器
- 有CAN1~3:CAN1和CAN2共享28个过滤器,CAN3有独立的14个过滤器
过滤器可以过滤CAN总线上帧的ID号,可以不处理不想接收的ID号,只接收想要的ID号。
过滤模式
过滤器总长度为64位,可以分为2个32位单元或4个16位单元。主要有两种过滤模式:
- 掩码模式:由两个单元组成,通过掩码匹配。
- 列表模式:由一个单元组成,ID号完全匹配即通过。
ID号对齐最高位(MSB)。仅32位单元可以过滤扩展ID。在列表模式下,scale为32时,每个过滤器的列表只能写入两个报文ID;若scale为16时,每个过滤器的列表最多可写入4个CAN ID。
掩码模式详解
掩码模式通过按位与运算来实现过滤。例如:
- 匹配ID为0x200,掩码为0x000,则所有ID号都能通过
- 匹配ID为0x200,掩码为0x700,则ID为0x200~0x2FF均可通过
- 匹配ID为0x200,掩码为0x7FF,则只有0x200能通过
过滤器的工作模式包括:
- 32位宽的掩码模式,配置过滤2个不同的ID号
- 32位宽的列表模式,配置过滤4个不同的ID号
- 16位宽的列表模式,配置过滤2个不同的ID号
- 16位宽的掩码模式,配置过滤1个不同的ID号
过滤器的位宽包括16位和32位两种。
双接收中断
每个CAN有两个接收中断,对应两组接收邮箱(FIFO)。每个过滤器可以绑定一个CAN接收中断。经过过滤器过滤的帧会进入该过滤器绑定的接收中断对应的邮箱。匹配时,列表模式的优先级高于掩码模式,其次过滤器编号更小的优先级更高。
实验示例:使用CAN2过滤ID号
以STM32为例,展示如何配置CAN2过滤器:
- 列表模式配置
sFiterconfig.FilterActivation = CAN_FILTER_ENABLE;
sFiterconfig.FilterBank=14; // 过滤器编号,CAN2是14~27
sFiterconfig.FilterFIFOAssignment=CAN_FILTER_FIFO0; // 接收到的报文放入到FIFO0中
sFiterconfig.FilterMode=CAN_FILTERMODE_IDLIST; // 列表模式
sFiterconfig.FilterScale=CAN_FILTERSCALE_32BIT; // 设置32位宽
sFiterconfig.FilterIdHigh=0x200<<5; // 基本ID放入到STID中
sFiterconfig.FilterIdLow=0x201<<5;
sFiterconfig.FilterMaskIdHigh=0x202<<5;
sFiterconfig.FilterMaskIdLow=0x203<<5;
sFiterconfig.SlaveStartFilterBank=14;
- 掩码模式配置
sFiterconfig.FilterActivation = CAN_FILTER_ENABLE;
sFiterconfig.FilterBank=15; // 过滤器编号,CAN2是14~27
sFiterconfig.FilterFIFOAssignment=CAN_FILTER_FIFO1;
sFiterconfig.FilterMode=CAN_FILTERMODE_IDMASK;
sFiterconfig.FilterScale=CAN_FILTERSCALE_16BIT;
sFiterconfig.FilterIdHigh=0x200<<5; // ID和掩码都要移5位
sFiterconfig.FilterMaskIdHigh=0x202<<5;
sFiterconfig.FilterIdLow=0x201<<5;
sFiterconfig.FilterMaskIdLow=0x203<<5;
sFiterconfig.SlaveStartFilterBank=14;
通过上述配置,可以实现对特定ID范围的过滤。
参考资料
- CH4.2 CAN 第2讲 过滤器【南工骁鹰嵌入式软件培训】
- STM32 CAN过滤器配置详解
- 对于can通信过滤器的理解
热门推荐
灵活就业社保缴费压力大?退保得不偿失,这些解决方案请收好
私人购买防弹衣犯法吗?知乎解析及相关法律问题
中国笔画最多的姓氏,能读出来的人不多,从头写到尾一共有30笔
亚航托运行李箱规定
太阳能发电系统中常见的功率单位有哪些?
【健康宣传日】健康体重,理想血压
人形机器人进厂:与工业机器人是替代还是互补?
后赵明时代的荣耀:一场国产手机品牌的“中年危机”
人工智能就业太难了?本科有出路吗?附就业方向及前景
老师没收学生手机是否违法?法律这样规定
2050年世界人口预测:印度16.39亿,中国14亿,美国增加4000万人
2025广东省大学排名 最新本专科院校排行榜【校友会版】
看连环画《哪吒闹海》谈海派连环画的破界之旅
什么是生奶油以及它是如何制作的?
伦敦金交易时间及最佳观察时段分析
《我的世界》VR模式将终止支持 玩家需寻找替代方案
如何查看RAID是否重建完毕
步行者哈利伯顿合同暴涨3637万创历史纪录,携手西亚卡姆剑指未来
如何理解股价发行的机制并分析其影响因素?这种机制存在哪些问题?
兰寿金鱼繁殖全攻略:从产卵到起头的关键要点
妊娠甲减吃哪些东西比较好
氢氧化锂:特性、应用与前景
单水氢氧化锂:性质、用途与安全信息详解
温室种植环境智能控制技术应用
给拱棚(冷棚)增设通风口来提升通风量
婚内协议约定财产归女方所有离婚时如何处理?
男人也需要关爱,爱情中的相互照顾
企业所得税汇算清缴:时间、流程与所需材料全解析
楼面价和房价的关系及楼面价的计算方法
如何计算楼面价?这些计算方法如何影响房地产项目的成本控制?