STM32 CAN总线过滤器设置

这篇具有很好参考价值的文章主要介绍了STM32 CAN总线过滤器设置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CAN-关于CAN过滤器的一些设置方法

                                                                                                     CAN过滤器配置以及常见问题总结
过滤器组
在具有两个CAN的产品中,CAN1和CAN2分享28个过滤器组,只有一个CAN的系列产品中有14个过滤器组,用以对接收到的帧进行过滤。
• 设置为掩码模式主要是为了过滤出一组(多个)符合要求的ID;
• 设置为列表模式主要是为了过滤出一个或多个符合要求的ID;
• 设置16位过滤器只能用来过滤标准帧ID;
• 设置32位过滤器一般用来过滤扩展帧ID(当然也可以过滤标准帧);

一个过滤器组是由两个32位寄存器组成,可以将其配置为:
• 四个16位列表模式的过滤器,可以过滤出来四个ID号的信息;
• 两个16位掩码模式过滤器
• 一个32位掩码模式过滤器

下面介绍下掩码模式:
当我们设置为掩码模式时:一般我们称CAN_FxR1寄存器为ID寄存器(或者验证码寄存器),CAN_FxR1为掩码寄存器。

stm32f429 can设置过滤白名单,stm32

具体代码体现为:(315,316,317,318,均是需要左移五位填入相应寄存器的。注意32位掩码模式具体怎么移位可参考下面的32位列表ID怎么移位的)

stm32f429 can设置过滤白名单,stm32

掩码模式的过滤器计算逻辑为:其实就是掩码位与ID位对应,掩码位为1的通过,掩码位为0的随意。可参考如下示例:假设ID和掩码分别为
ID码: 11 0001 0110 //0x316
掩码: 11 0001 0111//0x317
那么计算结果就为:
1 1 x x x 1 x 1 1 0 ,(x可为0,可为1)这些数据均可通过过滤器。
如此可自行计算上面可通过的ID是什么?

下面介绍下列表模式:

可过滤出一个标识。此时CAN_FxR0和CAN_FxR1中的都是要匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。注意:CAN_FilterIdHigh是指高16位CAN_FilterIdLow是低16位应该将需要得到的帧的和过滤器的设置值左对齐。
所有的过滤器是并联的,即一个报文只要通过了一个过滤器,就是算是有效的。
按工作模式和宽度,一个过滤器组可以变成以下几中形式之一:
(1) 1个32位的屏蔽位模式的过滤器。
(2) 2个32位的列表模式的过滤器。
(3) 2个16位的屏蔽位模式的过滤器。
(4) 4个16位的列表模式的过滤器。
如下面配置,四个16位ID(0x314,0x315,0x316,0x317)都可通过

stm32f429 can设置过滤白名单,stm32

那么32ID该怎么配置呢,此时不是简单像上述16位模式左移五位实现,具体参考如下(我们以32位列表为例,下面配置则通过的ID为0x12345678),至于为什么这样移位这里不再赘述,想知道的具体可看下寄存器手册

stm32f429 can设置过滤白名单,stm32

总结:我们发现ID是通过移位来实现的,具体原因参考手册中此寄存器

stm32f429 can设置过滤白名单,stm32

那么可对比列表模式和掩码模式优缺点:

 

stm32f429 can设置过滤白名单,stm32

常见CAN配置问题:
1.怎么配置多个过滤器?

stm32f429 can设置过滤白名单,stm32

像上面那种配置则表示过滤器组0,1与fifo0绑定,每个过滤器独立,可随意配置,如过滤器0可绑定fifo0,也可绑定fifo1。

2.CAN最多可配置几个过滤器组?

如果设备只有一个CAN,则最多14个(0-13),若有两个CAN,则最多27个(程序若不进行配置则默认CAN1可用0-13,CAN2可用14-27),可配置CAN2过滤器开始组,需注意CAN2使用的过滤器组好默认为开始组以后。
具体参考代码如下:如果这里填9,那么CAN1能使用的过滤器组为0-8,CAN2为9-27。

stm32f429 can设置过滤白名单,stm32

3.例程改为CAN2不能使用?

可参考上面的问题,需注意CAN2使用的过滤器组好默认为开始组以后,如果不进行配置则按照默认值分配。相关寄存器如下,可看到默认值为01110,则CAN2默认开始组为14。

 

stm32f429 can设置过滤白名单,stm32文章来源地址https://www.toymoban.com/news/detail-798701.html

到了这里,关于STM32 CAN总线过滤器设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeIDE开发(二十六), STM32的CAN总线开发要点

    目录 一、CAN总线简介         1.1 CAN概述         1.2 CAN总线较其他串行通信优势         1.3 CAN总线通信          1.4 报文种类及格式          1.5 CAN应用 二、CAN工程创建及配置         2.1 工程设计及原理框图          2.2 工程创建接配置 三、代码设计

    2023年04月15日
    浏览(49)
  • STM32的CAN总线调试经验分享

    CAN总线简易入门教程 CAN总线显性电平和隐性电平详解 STM32的CAN总线调试经验分享 最近负责的一个项目用的主控芯片是 STM32F407IGT6 ,需要和几个电机控制器进行通讯,有很多参数需要进行监控。负责固件开发的同事一直搞不定一个问题。就是开启 CAN 的接收中断,接收不到数据

    2024年01月20日
    浏览(44)
  • CAN总线详解及STM32的CAN通信编程指南

    对于CAN通信而言,本人之前也未接触了解过,由于实习的技术要求,因此也花费了一段时间对CAN通信进行学习,并且实现了基于STM32的CAN环回静默模式通信,因此写一遍比较详细的文章对该内容进行总结。本文的参考资料有STM32的中文参考手册、协议手册等。话不多说开始吧!

    2024年02月11日
    浏览(44)
  • CAN总线基础详解以及stm32的CAN控制器

    目录 CAN简介 CAN总线拓扑图 CAN总线特定 CAN应用场景 CAN的物理层 CAN的协议层 CAN数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 stm32的CAN控制器 CAN控制器介绍 CAN控制器模式 CAN控制器框图 接收过滤器 CAN控制器波特率计算 CAN相关寄存器 CAN主控制寄存器(

    2024年01月25日
    浏览(48)
  • STM32+收发器实现CAN和485总线

    RS485总线是一种常见的(Recommended Standard)串行总线标准(485是它的标识号),采用平衡发送与差分接收的方式,因此具有抑制共模干扰的能力。CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络,属于CSMA(多路载波侦听)/CD(冲突检测

    2024年02月05日
    浏览(52)
  • STM32基于CAN总线协议控制步进电机

    如上图所示,实现了以下功能: 1.两块stm32单片机通过CAN控制器与收发器进行半双工通信; 2.stm32主机通过检测按键,切换不同的模式,将不同模式的case值发送给stm32从机; 3.stm32从机根据收到的case值,控制步进电机进行不同的运动操作; 4.OLED用于显示收发内容与按键状态等

    2024年01月19日
    浏览(50)
  • CAN总线学习笔记 | STM32CubeMX配置CAN环回测试

    CAN基础知识介绍文中介绍了CAN协议的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,来实现CAN通讯的环回测试 CAN是挂载在APB1总线上,设置PCLK1时钟频率到最大45MHz 激活CAN1,配置位时序参数,其他基本参数以及工作模式(此处

    2024年02月11日
    浏览(37)
  • STM32 基础知识(探索者开发板)--159讲 CAN总线

    CAN基础知识:ISO国际标准化的串行通信协议,为了减少线束的数量 a.多主控制  每个设备都可以主动发送数据 b.通信速度较快,通信距离远。最高1Mbps(距离小于40M),最远可达10KM(速率低于5Kbps) c.具有错误检测、错误通知和错误恢复功能 d.故障封闭功能  能发现故障,且可以把故

    2024年01月17日
    浏览(48)
  • 【STM32】标准库与HAL库对照学习教程十四--CAN总线

    STM32全部教程 :【STM32】标准库与HAL库对照学习系列教程大全 本篇介绍如何使用STM32的标准库与HAL库对CAN总线的使用,由于我那块普中的STM32F103ZET6开发板送人了,因此我这边用STM32F103C8最小系统板,进行简单的演示一下功能,最主要的还是需要理解CAN总线的原理,在本篇中,

    2024年02月15日
    浏览(45)
  • STM32F407 CAN模块发送接收数据异常

    现象: 1、CAN模块初始化成CAN_MODE_LOOPBACK模式 CAN模块通过HAL_CAN_AddTxMessage发送数据时,TX管脚能够发出数据,示波器也可以测量到数据波形,CAN使用中断接收HAL_CAN_ActivateNotification或者查询接收HAL_CAN_GetRxMessage都可以接收到正确的数据(和发送的数据一致),但是CAN接口却没有波

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包