您的位置 首页 测评

STM32-CAN总线滤波器的运用

stm32的屏蔽滤波功能对ID是有要求的,在STM32这里ID必须进行移位处理对照下表:我们这里全部设置成1,也就是只接受CAN_Filter中设置的节

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);

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/258405.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部