当前位置: 首页 > wzjs >正文

做网站推广需要多少费用西安做网站的公司

做网站推广需要多少费用,西安做网站的公司,如何做隐藏网站的二维码,中国最大的b2c平台是在STM32F103的CAN总线应用中,硬件过滤器(Filter)承担着关键角色。 本章将从寄存器层面深入剖析CAN接收过滤器的工作机制与配置方法,帮助理解如何高效筛选关键信息,减轻CPU负担。 通过合理使用过滤器,不仅能…

在STM32F103的CAN总线应用中,硬件过滤器(Filter)承担着关键角色。 本章将从寄存器层面深入剖析CAN接收过滤器的工作机制与配置方法,帮助理解如何高效筛选关键信息,减轻CPU负担。 通过合理使用过滤器,不仅能提升系统整体运行效率,还能显著降低接收溢出风险。 文章将结合HAL库操作与直接寄存器配置,全面构建底层视角下的CAN接收优化思路。

CAN接收过滤器的作用

当总线上来的每一帧CAN报文到达CAN接收器时,先用硬件进行"筛选",只留下感兴趣的报文,才存入FIFO(FIFO0或FIFO1)和SRAM,其他无关的报文直接丢弃,不打扰CPU。

  • 需要的报文 → 硬件自动搬入FIFO队列,触发中断或等待软件取走
  • 不需要的报文 → 直接被硬件丢弃,不占用CPU,不占用SRAM

在这里插入图片描述

为什么一定要学会使用CAN接收过滤器?

  1. 减少CPU负担

CAN总线是广播式通讯(所有节点都能接收到所有消息);
如果不用过滤器,所有的报文(不管有没有用)都会进入FIFO,CPU必须逐条检查ID、丢弃无关数据,极大浪费性能。
尤其是总线上有大量节点、流量很大时,如果不用过滤器,CPU完全忙不过来,很快FIFO溢出。

  1. 防止FIFO溢出()

STM32F1的CAN模块,FIFO只有3个邮箱容量,如果无关报文都塞进来,真正有用的报文可能还没到,FIFO就满了,造成丢帧。
硬件过滤器提前丢掉不关心的报文,让FIFO只存自己关心的ID的数据,提高可靠性。

  1. 快速响应重要数据()

重要的报文,比如控制指令、状态回报,需要快速响应
通过过滤器配置,只接收这些关键信息,提升系统响应速度和确定性。

本次实验

在这里插入图片描述
如上所示,本次实验旨在使用CAN滤波器1与CAN滤波器2对CAN总线报文进行过滤,使开发板仅接收特定的CAN ID。开发板只有接收到以上CANID时,才会触发系统中断。

项目地址:
github:

  • HAL库: https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_hal_library21_Can_Rx_Filter
  • 寄存器方式: https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_ll_library21_Can_Rx_Filter

gitee(国内):

  • HAL库: https://gitee.com/wallace89/MCU_Develop/tree/main/stm32f103_hal_library21_Can_Rx_Filter
  • 寄存器方式: https://gitee.com/wallace89/MCU_Develop/tree/main/stm32f103_ll_library21_Can_Rx_Filter

一、过滤器方案的4种组合


组合FM1R 位值FS1R 位值每个 Bank 可过滤的内容典型用途
① Mask 32-bit0(Mask 模式)1(32 bit)1 条 “ID + 掩码”
(完整 11 bit 置于 [31:21],可用掩码一次性选中一段 ID)
只接收0x200 ~ 0x20F这类连续 ID 归到同一通道
② List 32-bit1(List 模式)1(32 bit)2 个 离散 ID只关心极少数关键帧(如 0x123、0x456)
③ Mask 16-bit0(Mask 模式)0(16 bit×4)2 组 “ID + 掩码”
(每组占 16 bit)
只接收两段不同 ID 区间(0x2000x20F或0x3000x30F)
④ List 16-bit1(List 模式)0(16 bit×4)4 个离散 ID批量白名单(只接收):0x100/101/102/103
总之,不考虑拓展帧,只考虑11bit标准帧时,组合3~组合4是最优解决方案。

二、用组合③Mask 16-bit实现只接收0x2000x20F与0x3000x30F


2.1、寄存器CAN_FM1R与寄存器CAN_FS1R

在这里插入图片描述
在这里插入图片描述
如上所示,将寄存器CAN_FS1R的FSCx设置0,寄存器CAN_FM1R的FBMx设置0时,CAN过滤器x进入组合③Mask 16-bit模式。

2.2、代码(HAL库)

2.2.1、myCanDrive.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3、测试代码

在这里插入图片描述
如上所示,CAN分析仪发送CANID0x200~0x20F到开发板。然后,全局变量g_RxCount = 16证明开发板收到16个CAN报文。
在这里插入图片描述
如上所示,CAN分析仪发送CANID0x100 - 0x10F到开发板。全局变量g_RxCount仍然为16,未发生变化,证明未接收到CAN报文。CANID0x100~0x10F被过滤了,这是我们的目的。
在这里插入图片描述
如上所示,CAN分析仪发送CANID0x300~0x30F到开发板。全局变量g_RxCount变成32,证明开发板收到16个CAN报文。
实验证明,CAN过滤波器2只能接收两个区间的CANID,分别是0x2000x20F与0x3000x30F。

2.4、代码(寄存器方式)

2.4.1、myCanDrive_reg.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5、测试代码

在这里插入图片描述
如上所示,程序的效果跟HAL库一样,开发板只能接收CANID:0x2000x20F与0x3000x30F。其他CANID都没办法进入FIFO1触发CAN接收挂号中断。

三、用组合④List 16-bit实现只接收4个白名单CANID


3.1、寄存器CAN_FM1R与寄存器CAN_FS1R

在这里插入图片描述
在这里插入图片描述

3.2、代码(HAL库)

3.2.1、myCanDrive.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3、测试代码

在这里插入图片描述
如上所示,使用CAN分析仪发送CANID0x058~0x067,一共16帧CAN报文给开发板。从全局变量g_RxCount看来,开发板只收到一个CANID(0x058)的报文。
在这里插入图片描述
如上所示,使用CAN分析仪发送CANID0x158~0x167,一共16帧CAN报文给开发板。从全局变量g_RxCount看来,开发板只收到一个CANID(0x158)的报文。
同理,0x258和0x358的实验结果相同。

3.4、代码(寄存器方式)

3.4.1、myCanDrive_reg.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5、测试代码

在这里插入图片描述
如上所示,使用CAN分析仪一共发送54条不同CANID的CAN报文给开发板。从全局变量g_RxCount = 4看到,开发板只收到4个CAN报文(CANID分别是0x058、0x158、0x258、0x358)。
在这里插入图片描述
如上所示,原来滤波器2的滤波器功能还是正常的。说明滤波器1与滤波器2一起工作,筛选合适的CANID到FIFO1。实验成功!!

http://www.dtcms.com/wzjs/333944.html

相关文章:

  • 上海建设人才网站手机怎么做网站
  • 设计营销型网站seo网站内容优化
  • 大连网站推广公司网络营销的方式和方法
  • 网站建设 睿达科深圳网站设计十年乐云seo
  • html手机网站开发教程网站维护工作内容
  • 长沙有做网站的吗网页设计收费标准
  • 经营性网站备案 注册资金大数据营销的概念
  • 旅游网站怎么做百度一下百度搜索首页
  • 重庆传媒公司前十名莱阳seo排名
  • 自己开外销网站怎么做搜索引擎关键词seo优化公司
  • 网站建设排名软件网络营销个人感悟小结
  • 高端网站建设流行风高端网站建设公司排名
  • 昆山建设监察网站长尾关键词挖掘词
  • 网站建设补助关键词筛选
  • 保险网站建设优缺点如何创建一个属于自己的网站
  • 怎么申请做网站石家庄网站seo
  • 内蒙古城乡建设厅网站市场营销主要学什么
  • 厦门市建设工程交易中心网站首页关键词排名
  • 如何在网站上做404页面外链的作用
  • 建设项目竣工验收公告网站甲马营seo网站优化的
  • 怎么把wordpress后台设置成中文网站搜索排名优化怎么做
  • 高性能网站建设指南 京东营销推广软件有哪些
  • 北京网站设计排名如何注册一个域名
  • 网站模板在线演示怎么做网络策划是做什么的
  • 北京++网站建设咨询顾问公司线上营销方式主要有哪些
  • wordpress 总浏览数量信息如何优化上百度首页
  • 搭建影视网站违法东莞网站制作公司联系方式
  • wordpress默认模板目录在哪里深圳seo排名优化
  • 三九手机网手机响应式网站模版seo优化自学
  • 个人做网站备案多少钱全网营销系统怎么样