您的位置 首页 IOT

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

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

在运用STM32CAN控制器进行数据收发,当用到位屏蔽形式的时分,就要设置过滤器了,这个关系到是否能够接纳到想要的数据。下面针对几种不同状况对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;//只承受规范数据帧,不承受扩展数据帧

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部