STM32单片机对CAN过滤器的设置方法

发布者:ananan一二三四五最新更新时间:2023-09-01 来源: elecfans关键字:STM32  单片机  CAN过滤器  设置方法 手机看文章 扫描二维码
随时随地手机看文章

在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器了,这个关系到是否能够接收到想要的数据。下面针对几种不同情况对CAN过滤器(Filter)进行设置。

STM32单片机对CAN过滤器的设置方法

CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//标示符屏蔽模式

CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;

1、对扩展数据帧进行过滤:(只接收扩展数据帧)

CAN_FilterInitStructure.CAN_FilterIdHigh=(EXT_ID》》13)&0xFFFF;

CAN_FilterInitStructure.CAN_FilterIdLow=((EXT_ID《《3)|(0x04))&0xFFFF;

//这里设置|0x04(0b0100)就是为了IDE=1,RTR=0,

//这里也可以写为(EXT_ID《《3)|CAN_ID_EXT|CAN_RTR_ROMOTE,效果一样,下同

CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;

CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;

2、对扩展远程帧过滤:(只接收扩展远程帧)

CAN_FilterInitStructure.CAN_FilterIdHigh=(EXT_ID》》13)&0xFFFF;

CAN_FilterInitStructure.CAN_FilterIdLow=((EXT_ID《《3)|(0x06)&0xFFFF;

//这里设置|0x06(0b0110)就是为了IDE=1,RTR=1

CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;

CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;

3、对标准远程帧过滤:(只接收标准远程帧)

CAN_FilterInitStructure.CAN_FilterIdHigh=((STD_ID《《21)&0xFFFF0000)》》16;

CAN_FilterInitStructure.CAN_FilterIdLow=((STD_ID《《21)|(0x0))&0xFFFF;

//这里设置|0x0(0b0000)就是为了IDE=0,RTR=0

CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFE0;//0xFFE0表示要关注11位的STD_ID

CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0006;//0110,表示要关注IDE和RTR位,只接受标准,不接受扩展

4、对标准数据帧过滤:(只接收标准数据帧)

CAN_FilterInitStructure.CAN_FilterIdHigh=((STD_ID《《21)&0xFFFF0000)》》16;

CAN_FilterInitStructure.CAN_FilterIdLow=((STD_ID_ID《《21)|(0x06))&0xFFFF;

//这里设置|0x02(0b0010)就是为了IDE=0,RTR=1

CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFE0;

CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0006;//只接受标准数据帧,不接受扩展数据帧


关键字:STM32  单片机  CAN过滤器  设置方法 引用地址:STM32单片机对CAN过滤器的设置方法

上一篇:浅析STM32调试过程中的几个相关问题
下一篇:一种基于STM32的最小系统及串口通信的实现

推荐阅读最新更新时间:2024-11-17 16:15

STM32原有的MDK工程下移植到GCC环境
1. 增加 STM32F429IGTx_FLASH.ld 这个文件存放芯片内存信息 STM32F429IGTx_FLASH.ld主要存放的是芯片内存的信息,堆栈大小,RAM,Flash大小, MEMORY{ }中存放的内存段,程序中有使用明确内存的地址的地方要在这里定义。 /* Entry Point */ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = 0x20020000; /* end of RAM */ /* Generate a link error if heap and stack don&
[单片机]
stm32_2.GPIO的主要寄存器
基本结构 GPIO 寄存器结构, GPIO_TypeDef 和 AFIO_TypeDef,在文件“stm32f10x_map.h”中定义如下: typedef struct { vu32 CRL; vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; } GPIO_TypeDef; typedef struct { vu32 EVCR; vu32 MAPR; vu32 EXTICR ; } AFIO_TypeDef; 寄存器 描述 CRL 端口配置低寄存器 CRH 端口配置高寄存器 IDR 端口输入数据寄存器 ODR 端口输出数据寄存器 BSRR 端口位设置/复
[单片机]
单片机交通灯PCB板图与仿真源码(MAX7219+数码管显示)
单片机交通灯源程序如下: #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define DIG0 0x01 // 定义数码管1 #define DIG1 0x02 // 定义数码管2 #define DIG2 0x03 // 定义数码管3 #define DIG3 0x04 // 定义数码管4 void delay(uint i); void T0_init(); void MAX7219(uchar addr,uch
[单片机]
<font color='red'>单片机</font>交通灯PCB板图与仿真源码(MAX7219+数码管显示)
STM32编码器模式详解(一)---理论
一、编码器接口模式 选择编码器接口模式的方法是:如果计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的SMS=001;如果只在TI1边沿计数,则置SMS=010;如果计数器同时在TI1和TI2边沿计数,则置SMS=011。 通过设置TIMx_CCER寄存器中的CC1P和CC2P位,可以选择TI1和TI2极性;如果需要,还可以对输入滤波器编程。 两个输入TI1和TI2被用来作为增量编码器的接口。参看表77,假定计数器已经启动(TIMx_CR1寄存器中的CEN=’1’),计数器由每次在TI1FP1或TI2FP2上的有效跳变驱动。TI1FP1和TI2FP2是TI1和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波
[单片机]
<font color='red'>STM32</font>编码器模式详解(一)---理论
stm32使用 ST-LINK Utility量产,程序读保护、写保护
一、下载 ST-LINK Utility 去ST官网下载ST-LINK Utility,下载链接,安装。 二、使用ST-Link链接板子,打开ST-LINK Utility,点连接,如果正常,则stm32的相关信息会被读出来显示。 三、开始量产 “Target”-“Automatic Mode” 勾选相关设置,比如是否全片擦除、是否检验、是否配置Option bytes、下载完成是否自动运行 如果要使能读保护和写保护,先勾选复选框,然后点击“Configure...”,弹出设置: 选择使能读保护,下面几个复选框一般勾上即可,比如WDG_SW是控制是否打开硬件看门狗的,如果不勾,就会打开,造成芯片一段时间后
[单片机]
<font color='red'>stm32</font>使用 ST-LINK Utility量产,程序读保护、写保护
STM32 Flash操作(擦写)过程中器件复位导致数据丢失问题
1.问题描述 产品在运行过程中需要保存一些断电不丢失的数据,为此将数据保存在STM32内部的flash中。但是测试人员在测试的过程中,修改了数据参数,直接断电重启机器,并没有等待flash的操作时间,导致原有的数据丢失。 2. 原理分析 本产品硬件平台是基于STM32F429,采用HAL库开发。在操作内部flash这部分中,查看数据手册得知: 对于操作128KB的扇区擦写32位数据需要的时间,典型值是1S。最大值是2S。才能保证操作完成。 而在参考手册中提到:在Flash操作期间发生器件复位,则无法保证flash中的内容, 为此,我特地在擦写过程中,断电,然后看flash中的数据是什么,经过
[单片机]
<font color='red'>STM32</font> Flash操作(擦写)过程中器件复位导致数据丢失问题
pic单片机的各种汇编语言指令解析
pic 单片机为最常用单片机之一,许多程序均基于 pic 单片机进行开发。因此,熟练 pic 单片机编程尤为重要。为保证大家能准确、熟练掌握 pic 单片机的使用,本文特带来 pic 单片机的各种汇编语言指令的讲解上篇,下篇将在后期文章中予以讲解。如果你对本文即将讲解的内容充满兴趣,不妨继续往下阅读哦。 一、pic 的指令系统 pic8 位单片机共有三个级别,有相对应的指令集。基本级 pic 系列芯片共有指令 33 条,每条指令是 12 位字长;中级 pic 系列芯片共有指令 35 条,每条指令是 14 位字长;高级 pic 系列芯片共有指令 58 条,每条指令是 16 位字长。其指令向下兼容。 二、pic 汇编语言指令格
[单片机]
pic<font color='red'>单片机</font>的各种汇编语言指令解析
放眼MCU 演绎多元化趋势
  统帅了数十年的智能化技术领域的微控制器(MCU),无疑扮演着控制中枢的关键角色,它的研发与应用是一个常新的话题。越来越复杂的单体功能,越来越多变的门类应用常常使我们眼花缭乱。消费电子用MCU高中低端竞相发展,汽车用MCU从低端不断向高端演进。无处不在的小小MCU云集了众多国际厂商,那么,MCU未来的多元化趋势将如何演绎呢?   集合最新技术的多元领域——消费电子   在众多的微控制器应用中,消费性电子产品可谓是变化最多端的一个领域,各大厂商纷纷抓住这个市场上最大的蛋糕,锁定不同应用的MCU产品不断推陈出新。   爱特梅尔针对消费电子、通信、工业和医疗等方面提供用于有线、无线网络、用户界面设备的接口技术,以及与其MCU相辅
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved