CAN筛选器之ID配置

12 篇文章 1 订阅
11 篇文章 0 订阅

目录

列表模式

16位列表模式

32位列表模式

掩码模式

16位掩码模式

32位掩码模式


       初次理解,如有错误,请多多指教,欢迎交流!

         CAN通信的ID有标准ID和扩展ID,其有四种模式,即列表模式和掩码模式(两种模式的区别网上资源较多,此处不做具体区别,其主要却别是列表模式下的ID较为具体(每一位都是明确的),而掩码ID),其中列表模式和掩码模式各有16位宽和32位宽。可能说的不够准确,如下图:

 下面说明下四种ID的寄存器的配置。

备注:1、标准ID有10位,扩展ID是29位。

2、位宽为16的ID,是没有扩展ID的。

列表模式

16位列表模式

比如,

StdId =0x6af;              


0x6af:            0110 1010 1111
0x6af<<5:    1101 0101 1110 0000   

32位列表模式

StdId =0x6af;              
ExtId =0x1803f601;


0x6af:            0110 1010 1111
0x6af<<5:    1101 0101 1110 0000    (高16)

             0000 0000 0000 0000
           | 0000 0000 0000 0000     (低16) 
其中低16位等价于 0 | CAN_Id_Standard
因为#define CAN_Id_Standard   ((uint32_t)0x00000000) 
----------------------------------------------------------------
0x1803f601:                    0001 1000 0000 0011 1111 0110 0000 0001
0x1803f601<<3:                 1100 0000 0001 1111 1011 0000 0000 1000 
(0x1803f601<<3)>>16:           0000 0000 0000 0000 1100 0000 0001 1111   
(0x1803f601<<3)>>16 & 0xffff:  0000 0000 0000 0000 1100 0000 0001 1111    (高16(取低16位))


0x1803f601<<3:                   1100 0000 0001 1111 1011 0000 0000 1000 

0x1803f601<<3 & 0xffff:          1100 0000 0001 1111 1011 0000 0000 1000   
(ExtId<<3)&0xffff | CAN_ID_EXT: 1100 0000 0001 1111 1011 0000 0000 1100  (低16(取低16位)
其中 #define CAN_Id_Extended   ((uint32_t)0x00000004) 

掩码模式

16位掩码模式

StdId =0x6af;              


0x6af:            0110 1010 1111
0x6af<<5:    1101 0101 1110 0000   

mask:         1111 1111 1111 1111
筛选后:      1101 0101 1110 0000 
  
mask中某一位为1时,必须一致,举例如下
验证码: 0110 0001 1100
掩码:   1100 0011 1010
则筛选后的ID为:01xx xx01 1x0x (其中x可以为1或者0),则ID在100 0001 1000 ~ 111 1101 1101范围内的ID都会被筛选。

32位掩码模式


参考博客:

 (4条消息) 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结_bonson2004的博客-CSDN博客

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在STM32F1系列微控制中,CAN是一个常用的通信协议,它可以在不同的设备之间进行高速、可靠的通信。在配置STM32F1的CAN引脚时,需要进行以下步骤: 1. 确定CAN通信模式:CAN分为两种模式,即CAN通信和CAN引导模式。通信模式用于实际的数据传输,而引导模式用于配置CAN控制的参数。将CAN控制配置为所需的模式。 2. 选择CAN引脚:在STM32F1系列微控制中,每个CAN控制都有多个引脚可供选择。根据实际需求,选择合适的引脚。 3. 配置引脚模式:将选择的CAN引脚配置为CAN模式。可以在GPIO配置寄存中设置引脚的模式为CAN模式。通过设置寄存中的位,可以将引脚设置为输入、输出或复用功能,以实现CAN通信。 4. 配置引脚速率:CAN总线通常以一定的速率进行数据传输。通过设置CAN控制的时间触发寄存,可以配置引脚的速率。这些设置包括时间段的长度、同步线的触发边缘等。 5. 配置过滤:CAN控制可以设置过滤筛选接收的数据帧。通过配置过滤寄存,可以选择要接收的数据帧的特定ID或组ID,以便满足特定条件。 6. 初始化CAN控制:在配置完引脚和其他参数后,需要初始化CAN控制以使其准备好进行通信。可以通过CAN控制的初始化寄存设置各种控制位。 以上是配置STM32F1的CAN引脚的一般步骤,具体配置的细节可能会有所不同,取决于实际的应用需求和具体的STM32F1系列微控制型号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值