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通信过滤器的理解
热门推荐
乒乓球套胶的选择与使用技巧(为你解析乒乓球套胶的特点、种类和重要性)
创始人持股比例与公司控制权的关系是什么
个人用什么望远镜比较好?三种主流天文望远镜详解
全面了解CC攻击和防范策略
探亲假是否包含年休假:法律界的相关规定与实践解读
健身房哑铃训练动作详细解析提高训练效果
解密日本干预日元贬值的操作细节
重庆限行规定2024年 重庆车辆限行时间和范围
人才争夺,一线大厂伸向职校
数字孪生的大方向趋势及未来
《猎天使魔女》游戏评测:白金工作室的匠心之作
四神元气花卷:一道营养丰富的发面美食
加快土地流转 提升规模经营 推进农业现代化发展进程!
日本海洋研究教育机构海洋环境科学系详细介绍
内存大小对电脑性能的影响
湖南永州有名的10大当地特色美食,每一道都是味觉享受
圣家族大教堂:巴塞罗那的未完成杰作
种植蒲公英的前景与技术要点:经济价值高,管理简单
全新升级!武汉汉口火车站网约车候车区,让出行变得更简单!
生成式AI管理者指南:如何通过“协同思考”解锁AI潜能
耳机使用时间久了,音质会变差吗?
全面追赶美国,中国004型航母承前启后,到底有多强悍?
南京地铁“换乘王”7号线今天全线通车 首日连续多趟座无虚席
魔兽世界TBC版本小德赚钱攻略:五大优势全面解析
如何根据预算智慧选择CPU显卡,打造高性能游戏主机指南
偏头痛急性期治疗指南(第一版)发布:科学应对,缓解痛苦
FPS全解析:从每秒帧数到第一人称射击,你了解多少?
春晚小品不好笑?这个问题很重要
人类首次直接探测到引力波 印证广义相对论
如何在社交媒体上优化隐私设置:5个关键步骤