STM32CAN控制器每个筛选器组由两个32位的寄存器组成。
根据所需位宽的不同,各个筛选器可配置成16位或32位模式(如下图,当FSCx=1为32位模式,FSCx=0时为16位模式)。同时,筛选器的模式可配置成掩码模式和列表模式(FBMx=0为掩码模式,FBMx=1为列表模式)。
掩码模式:对报文ID的每一位可选择必须相同和不管它。
列表模式:只给出接收的ID,其它的一概不接收。
下面将这四种情况分别介绍一下:
1、1个32位筛选器——掩码模式
第一个筛选器写入报文ID,第二个筛选器规定对应的每个位是检查它(置1)还是不管它(置0)。
例如,第一个筛选器设置为0x0000,这时候如果第二个筛选器设置0xFFFF,就意味着对每个位都检查,即只接收ID是0x0000的报文。如果第二个筛选器设置0xFFFE,就是对最后一位不管,这时候0x0001和0x0000都可以被接收啦。
2、2个32位筛选器——列表模式
第一个筛选器写入报文ID,第二个也写标准的报文ID。此时只接收ID为这俩的报文。
例如,第一个筛选器设置0x0000,第二个筛选器设置0x0001。此时只能接收ID为0x0000和0x0001的报文了。
3、2个16位筛选器——掩码模式
和第一种情况差不多,只不过位宽减小到了16位,只支持标准ID格式,但是可以筛选的ID数增大到了两个。
4、4个16位筛选器——列表模式
拆分成的4个16位筛选器允许写入4个标准ID,只接收这4个ID的报文。
关键字:STM32 CAN总线
引用地址:
STM32 CAN总线筛选器的四种情况
推荐阅读最新更新时间:2024-11-06 18:14
stm32使用HX711读电子秤的值
使用HX711变送器模块+5kg的传感器。 #define HX711_DATA PEin(0) #define HX711_SCK PEout(1) void HX711_init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.G
[单片机]
基于STM32的多种printf用法
在调试代码的时候,最常用的就是使用printf函数来输出一些打印信息,提示自己代码的执行情况。 如果你的UART串口不够用,还要用printf,此时该怎么办? 解决方法:使用SWO/SWV。 SWO:Serial Wire Output,串行线输出 SWD:Serial Wire Viewer,串行线查看器 一、常见printf输出 1.UART打印 2.Keil MDK-ARM Viewer输出 3.IAR EWARM终端输出 4.ST-LINK Utility SWV输出 二、UART映射printf 使用硬件UART串口映射,实现printf打印输出。 #include stdio.h int fp
[单片机]
STM32的GPIO的复用功能和重映射功能
1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚) STM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。 2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变到其他的引脚上! 直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。 如:USART1: 0: 没有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)。 (参考AFIO_MAPR寄存器介
[单片机]
ubuntu中安装配置STM32开发环境
笔者做嵌入式开发的,主要用到linux系统来做开发,有时候遇到既要开发arm linux,又要挂载MCU的情况(主要是STM32这款),这两个芯片跨平台,指令不兼容。以前开发STM32是在windows下的IDE,使用keil或者IAR来开发,自从搞arm linux以来,很少开windows系统,两个系统切来切去着实麻烦。这篇文章主要针对长期使用Linux系统的用户,有什么不对的地方,欢迎指正。 接下教教大家怎么在linux下部署STM32开发环境 首先安装一个stm32cubemx,该软件可以在st官网下载,要注册账号,还要搞邮件的乱七八糟的步骤就不说了,自行解决 下载下来的文件中就用到下面两个文件 Setup
[单片机]
STM32定时器的输入滤波机制
STM32的定时器输入通道都有一个滤波单元,分别位于每个输入通路上(下图中的黄色框)和外部触发输入通路上(下图中的兰色框),它们的作用是滤除输入信号上的高频干扰。 具体操作原理如下: 在TIMx_CR1中的CKD 可以由用户设置对输入信号的采样频率基准,有三种选择: 1)采样频率基准fDTS=定时器输入频率fCK_INT 2)采样频率基准fDTS=定时器输入频率fCK_INT/2 3)采样频率基准fDTS=定时器输入频率fCK_INT/4 然后使用上述频率作为基准对输入信号进行采样,当连续采样到N次个有效电平时,认为一次有效的输入电平。 实际的采样频率和采样次数可以由用户程序根据需要选择;外部触发输入通道的滤波参数
[模拟电子]
STM32内部温度传感器实验——串口 delphi上位机
家里气温15度 我对着芯片使劲哈气 把他哈到了 20度 下位机关键代码 int main(void) { double v,temp,Value; /* System clocks configuration ---------------------------------------------*/ RCC_Configuration(); /* GPIO configuration ------------------------------------------------------*/ GPIO_Configuration(); /* USARTx configured as follow: - Bau
[单片机]
CAN总线混合动力汽车电控系统的设计与实现
混合动力汽车是一种由内燃机和电动机混合驱动的汽车,其主要特点是节能、环保。这种汽车在起步时用电动机驱动,消除了内燃机起步时由于燃烧不充分而排黑烟的现象。在汽车减速或刹车时,利用发电机把动能转化成电能,贮存到蓄电池中,实现能量回收达到节能的目的。由于这种汽车是内燃机和电动机两种动力并存,仅用传统的针对内燃机的电控系统无法实现两种动力的最佳配合,因此开发混合动力车的全新电控系统是十分必要的.本文以一种电机并联式混合动力汽车成功实现为背景,从系统角度介绍了混合动力汽车电控系统结构、功能及效果。 并联式混合动力驱动结构简介 并联式混合动力汽车的驱动系统结构见图1。发动机通过机械传动装置与驱动桥连接,电动机通过动力复合装置
[汽车电子]
STM32-蜂鸣器实验
一,蜂鸣器介绍 蜂鸣器分有源蜂鸣器和无源蜂鸣器,这里的源指的是震荡源 一般我们使用有源蜂鸣器,如图: 有两个引脚,较长的一端为正极,较短的一段为负极 二,蜂鸣器硬件连接: 蜂鸣器负极连接在STM32的PB8引脚: 错误的连接方法: IO口接蜂鸣器接地 错误的臆想: IO口输出高电平,蜂鸣器正负极产生电压差,蜂鸣器发出声响 错误分析: STM32IO口电流驱动能力非常有限,不能通过IO口驱动大功率硬件,需要通过三极管来驱动(三极管的放大作用),将IO口输出的小电流放大为大电流(放大倍数β) R38作用: STM32芯片复位后IO口默认为浮空状态,IO口电平是不确定的,有可能跳边的电流经过三极管被放大使蜂鸣器
[单片机]