stm32的屏蔽滤波功能对ID是有要求的,在STM32 这里ID必须进行移位处理.
对照下表:
我们这里全部设置成1,也就是只接受CAN_Filter中设置的节点的数据
STM32共有14组过滤器,用以对接收到的帧进行过滤。每组过滤器包括了2个可配置的32位寄存器:CAN_FxR0和CAN_FxR1。对于过滤器组,可以将其配置成屏蔽位模式,这样CAN_FxR0中保存的就是标识符匹配值,CAN_FxR1中保存的是屏蔽码,即CAN_FxR1中如果某一位为1,则CAN_FxR0中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器;CAN_FxR1中为0的位表示CAN_FxR0中的相应位可不必与收到的帧进行匹配。过滤器组还可以被配置成标识符列表模式,此时CAN_FxR0和CAN_FxR1中的都是要匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。
注意:CAN_FilterIdHigh是指高16位CAN_FilterIdLow是低16位应该将需要得到的帧的和过滤器的设置值坐对齐起。
例如:
CAN_FilterInitStructure.CAN_FilterNumber=0; //第一组过滤器
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; //屏蔽位模式
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位
CAN_FilterInitStructure.CAN_FilterIdHigh=(0x0635<<5); //接收ID为635的消息 11位帧ID 标准帧因此左移5
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff; //
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0; //第一组过滤器指向FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);
CAN_FilterInitStructure.CAN_FilterNumber=1; //第二组过滤器
CAN_FilterInitStructure.CAN_FilterIdHigh=(0x06DB<<5); //接收ID位6db的消息
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO1; //第二组过滤器指向FIFO1
CAN_FilterInit(&CAN_FilterInitStructure);
CAN_ITConfig(CAN_IT_FMP0,ENABLE);
CAN_ITConfig(CAN_IT_FMP1,ENABLE);
关键字:STM32 CAN总线 滤波器
引用地址:
STM32-CAN总线滤波器的使用
推荐阅读最新更新时间:2024-03-16 14:34
基于CAN总线的电力抄表系统设计
CAN总线简介
CAN为多主方式工作,网络上任一节点均可以在任意时刻主动向网络上其他节点发送信息;CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求; CAN采用非破坏性总线仲裁技术;CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据;CAN的直接通信距离最远可达 10km(速率5kbit/s以下),通信速率最高可达1Mbit/s(此时通信距离最长为40m);CAN的每帧信息都有CRC校验及其他检错措施,保证了数据出错率极低;CAN的通信介质可为双绞线、同轴电缆或光缆,选择灵活。
系统方案设计
系统由以下部分组成:脉冲电度表、电量采集器、CAN转换
[嵌入式]
STM32 Cubemax(二)——串口实现HC-05蓝牙模块与手机通信
使用的蓝牙 本文使用的蓝牙是市面上常用的HC-05蓝牙模块 其引脚和STM32的连接为 STM32Cubemax配置 前面配置时钟树的基础操作就不演示了 配置串口通信,注意波特率要选择9600,一般出厂的HC-05的默认与单片机通信波特率为9600 我这里还开启了DMA,方便测试蓝牙的接收功能 然后直接生成工程就ok了 手机连接蓝牙 若正常连接上电时,蓝牙模块会有红灯快闪,表示未连接。 手机使用蓝牙调试助手,可以自行在商店下载,然后可以看到出现蓝牙HC-05的名称(默认名称是蓝牙HC-05) 选择连接后,若成功连接,蓝牙模块的红灯会变成一秒两闪,表示连接成功 代码编写 重写printf函数,方便发送
[单片机]
STM32学习之I2C读写EEPROM学习
I2C通信协议之间常用连接方式如下: 一个I2C只使用两条总线线路,一条双向串行数据线,一条串行时钟线,数据线用来表示数据,时钟线用来同步数据收发。 每个连接到总线的设备都有一个独立的地址,主机利用这个地址进行不同设备之间的访问。 总线通过上拉电阻连接到电源。当I2C设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定哪个设备占用总线。 三种传输模式:标准模式传输速率为100Kps;快速模式为400Kbps;高速模式可达到3.4Mbps;但是目前绝大多数I2C设备不支持高速模式。 I2C基本读写操作:
[单片机]
基于C的CAN总线切换方案
引言:
CAN(Control Area Network)总线最初是由德国Bosch公司开发的,它是一种支持分步式实时控制系统的串行通信局域网,具有如下优点:
a. 通信方式灵活,可以多主方式工作,网络上任意节点均可以在任意时刻主动地向总线上其他节点发送信息,而不为主从。 b. 采用非破坏性总线仲裁技术,当2个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,避免了总线冲突。 c. 总线上的节点信息可以分成不同的优先级,以满足不同的实时要求。 d. 可以用点对点、一点对多点及全局广播等几种方式发送和接收数据。 e. CAN 的直接通信距离最远可达10km(速率5kb
[嵌入式]
一种用于数字下变频的高阶分布式FIR滤波器及FPGA实现
摘 要: 设计了一种用于数字下变频的256阶分布式FIR滤波器。通过分析分布式FIR滤器结构给实现电路所需资源和运算速度带来的影响,确定了适用于Cyclone III系列FPGA的实现结构。在Cyclone III系列EP3C40F484C6N芯片上实现该算法并分析了资源消耗与电路速度。 关键词: FPGA;FIR滤波器;分布式算法 随着通信、雷达等技术的发展,软件无线电技术已经被广泛的用于无线基站、雷达信号处理、军用电台等多个领域。数字下变频技术作为软件无线电技术的重要组成部分,主要完成中频信号数模转换后的变频、滤波以及重采样等工作。数字下变频的主要硬件框图如图1所示 。 根据不同的性能需求,滤波器组中采用以FI
[嵌入式]
这8种STM32中GPIO工作模式,你都知道吗?
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 二、开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。开漏形式的电路有以下几个特点: 1、利用外部电
[单片机]
stm32 系统时钟设置
如图1:时钟树,可见Stm32有5个时钟源。 8M HSI RC:内部时钟,从图上看,有两路分支,一个是直接作为系统时钟SYSCLK使用,另一个是先二分频后,再通过PLLMUL倍频作为系统时钟SYSCLK 4-16M HSE OSC:外部晶振作为时钟源,可以看做有3路分支,第一是直接作为系统时钟SYSCLK使用,第二个通过PLL倍频后作为系统时钟SYSCLK,第三个是128分频后作为RTC时钟输入 32.768kHz LSE OSC:低速外部时钟源,可直接用作RTC时钟输入 40kHz LSI RC:低速内部时钟源,有两路分支,一个用作RTC时钟,一个用作看门狗时钟 PLLCLK:可以直接看做倍频器,也不能说得上是时钟源,和以上某
[单片机]
一种基于CAN总线的局部风机监控系统
前言 煤矿瓦斯事故是我国矿产资源开采事故的一种。为了杜绝或减少瓦斯事故,国家煤矿安全监察局提出了明确的12字瓦斯灾害防治方针,提出了3种瓦斯治理的标准方案。井下通风是瓦斯灾害的关键因素,只有保证井下通风,监控井下瓦斯体积分数,采取相应的措施,才能保证煤矿企业的安全生产。局部风机就是指井下风机,是煤矿企业生产的最重要通风设备之一,局部风机能有效地调节井下工作面的瓦斯体积分数,有效地避免瓦斯爆炸,同时也保证了工作面工作人员的生命安全。随着计算机技术、通信技术和网络技术的发展,瓦斯监控系统得到广泛应用,文中提出一种基于CAN总线的煤矿局部风机监控系统。 1 局部风机与局部风机监控 煤矿通风系统中最关键的设备就是井下风机或局
[单片机]