历史上的今天
返回首页

历史上的今天

今天是:2025年07月10日(星期四)

正在发生

2018年07月10日 | stm32 Can通讯过滤器寄存器设置

2018-07-10 来源:eefocus

起因:在使用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代表远程帧; 


那么,我们给个例子:



标识符列表 ID = 0x09  拓展帧 :


 CAN1->sFilterRegister[0].FR1=0x09<<3|0x04;     //id=0x01,拓展帧数据

 CAN1->sFilterRegister[0].FR2=0x09<<3|0x04;  //标识符列表,相同

过滤寄存器如此设置就能过滤拓展帧的id为0x09的数据了

         标识符屏蔽  ID = 0x11  标准帧 :


CAN1->sFilterRegister[1].FR1=0x11<<21|0x04;  //标准id, 0x04为屏蔽模式,

CAN1->sFilterRegister[1].FR2=0xffc00004;    //id全部屏蔽,IDE屏蔽,RTR屏蔽

过滤器如此设置就能过滤标准帧id为0x11的数据。

到这里基本上写完了,这些都是通过验证得到的。如果有问题的欢迎交流。


推荐阅读

史海拾趣

General Instrument公司的发展小趣事
检查线路是否存在异常干扰信号、断路、对地漏电等问题,并进行修复。
Fairview Microwave Inc公司的发展小趣事

随着公司业务的不断拓展,Fairview Microwave开始面临来自同行的竞争压力。为了保持竞争优势,公司决定从源头抓起,严格把控产品质量。他们投入大量资金引进先进的生产设备和技术人才,建立起一套完善的质量管理体系。同时,公司还积极开展与高校和科研机构的合作,不断吸收新技术、新工艺,确保产品的技术领先性和可靠性。这些努力使得Fairview Microwave的产品在市场上获得了广泛认可,逐渐树立起了高品质的品牌形象。

Bliley Technologies Inc公司的发展小趣事

在Bliley的发展历程中,技术创新始终是推动其不断前进的重要动力。从最初的石英晶体生产,到后来的恒温控制晶体振荡器(OCXO)、温度补偿晶振(TCXO)和压控晶体振荡器(VCXO)等先进产品的开发,Bliley始终站在行业技术的最前沿。公司拥有一支专业的研发团队,致力于开发更高效、更稳定、更精确的频率控制产品。这些技术创新不仅提升了Bliley的产品竞争力,也推动了整个电子行业的发展。

迪一电子公司的发展小趣事

在技术创新的基础上,迪一电子公司开始积极拓展市场。公司积极参加国内外电子展会和博览会,与全球各地的客户建立联系。同时,公司还注重品牌建设,通过广告宣传、赞助活动等方式提高品牌知名度和美誉度。这些努力使迪一电子的产品逐渐打入国际市场,赢得了更多客户的认可。

BROTHER公司的发展小趣事

在电子行业的发展过程中,技术创新始终是BROTHER公司的重要驱动力。公司注重研发投入,拥有一支高素质的研发团队,不断推出具有创新性和竞争力的新产品。同时,BROTHER还积极与高校、科研机构等合作,开展产学研合作,推动技术创新和产业升级。通过技术创新,BROTHER不仅提升了产品质量和性能,还降低了生产成本,提高了市场竞争力。

Electromagnetic Industries Llp公司的发展小趣事

EMI公司成立于20世纪80年代初,当时正值电子行业的快速发展期。创始人李先生凭借对电磁技术的深厚理解和市场洞察,决定投身电磁产品的研发与生产。初创时期,公司面临着资金短缺、技术难题和市场认可度低等多重挑战。然而,李先生和他的团队并没有放弃,他们通过夜以继日的研发,不断攻克技术难关,同时积极寻找合作伙伴,拓展销售渠道。经过几年的努力,EMI公司逐渐在市场上站稳了脚跟。

问答坊 | AI 解惑

ARM单片机串口数据寄存器不能读写的问题

我直接给串口数据寄存器赋值(如0X31),在调试过程中该寄存器一直为0,不知到底哪里出问题,帮帮啊。…

查看全部问答>

51单片机输入口吸收电流大如何设置?

我在用AT89C2051做个小装置。输入口高电平有效。所以在程序的开始将输入口置零,但是发现吸收电流较大,只有加一级三极管放大电流才能正常工作。有没有其它的方法解决?谢谢!!…

查看全部问答>

我的串口通信程序只能接收几个字节?救我!

为什么我的串口通信程序只能接收几个字节,接收几十个字节时就接收不正确了! 我接收几个字节时都能正确接收,现在要接收30多个字节,这时就接收不了! 有谁遇到过类似的问题啊?到底什么原因阿?帮帮我!谢谢 ! 波特率:38400 bps 起始位:1 ...…

查看全部问答>

哪位高人知道,在Windows Mobile 6.0 SDK环境下,如何用DirectShow 和 DirectDraw 使用overl

哪位高人知道,在Windows   Mobile   6.0   SDK环境下,如何用DirectShow   和   DirectDraw   使用overlay2开发camera应用程序。谢谢了。…

查看全部问答>

LM3S8962评估板原理图分析(连载中。。。)

最近有一个板子刚好要用到群星系列的MCU,看到坛子有这个活动,就认领了分析原理图的任务,和大伙一起讨论。 初步想法:把原理图分成几个模块,一步一步分析,先最小系统,再其他单元,最后单板接口。 我是ARM-Cortex-M3初学者,手上也没有这块板 ...…

查看全部问答>

一种基于MSP430的可充电脑起搏器的设计

在运动障碍性疾病(Movement Disorders)中,帕金森病(Parkinson Disease,PD)以肌张力增高、运动减少为主要临床特征,因首先由英国人帕金木(Janes Parkinson)于1817年描述而得名。据不完全统计,目前我国约为120~130万帕金森病患者,而全世界 ...…

查看全部问答>

请教:汇编调用C,不能执行for循环体内语句

代码如下: ;/*-----------------------------------------------------------------------*/ ;/*********实现从汇编语言中使用B或BL命令跳转到C语言程序的main()函数********/ ;/********************从main()函数调用delay()函数********** ...…

查看全部问答>

“学模拟+《运算放大器噪声优化手册》的研读

本帖最后由 dontium 于 2015-1-23 11:22 编辑 已收到《运算放大器噪声优化手册》实在是一本不可多得的好书,其从不同角度不同应用中解析不同噪声对运放电路造成的不同影响,每章小结更是清晰的列明本章要点,如更进一步巩固知识还有相关习题,本书 ...…

查看全部问答>

EK-TM4C123GXL突然下载不了程序,提示如图的错误。各位遇到的请说下怎么解决

我换了一块板子可以正常下载。而且这个提示错误的板子芯片中有的程序能正常运行就是下载不了程序。提示如图的错误。各位有遇到这种问题吗。怎么解决的。愿闻其详!!!感谢!!! …

查看全部问答>