基于STM32的CAN总线通信笔记理解

这篇博客介绍了如何改进STM32的CAN总线通信中帧ID和过滤器ID的配置方法,解决格式不统一的问题。针对标准帧和扩展帧,分别展示了如何正确右移位并设置过滤器ID,确保32位过滤ID与帧ID的左对齐,以实现更精确的过滤功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记博文

基于STM32的CAN总线通信学习笔记

过滤器(筛选器)配置方法的改进

改进由于给帧ID和过滤器ID赋值格式不统一的问题,对取标准/扩展帧ID和过滤器ID的赋值进行如下改进(最严格情况:掩码模式对所有位都要关心):

  1. 举例(标准帧),如程序可设置标准帧ID宏定义为:0xABC(取前11位,最后一位必须取0,不作为标准ID位)。但是,将其写入StdId时,需右移动一位,取出高11位作为有效位:

StdId = 0xABC>>1; //(取出11位)
CAN_FilterIdHigh= 0xABC<<4; //11个有效位移动到最左端(使32位过滤ID与11位标准帧的左对齐)

在这里插入图片描述
2. 举例(扩展帧):如程序可设置扩展帧ID宏定义为:0xABCDEF98(取前29位,最后3位必须取0,不作为标准ID位),但是,将其写入ExtId为时,需右移动3位,取出高29位作为有效位:
ExtId = 0xABCDEF98>>3;(取出29位)
CAN_FilterIdHigh = 0xABCDEF98>>16;
CAN_FilterIdLow = 0xABCDEF98&0x0000FFF8 ;//29个有效位移到最高位(使32位过滤ID与29位标准帧的左对齐)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值