sdkdwyb的个人空间 https://bbs.21ic.com/?788420 [收藏] [复制] [RSS]

日志

STM32 CAN滤波器的详细设置

已有 1900 次阅读2016-9-30 16:34 |个人分类:STM32|系统分类:单片机

滤波器的详细设置
(以下都是在屏蔽位模式)

1、对扩展数据帧进行过滤:(只接收扩展数据帧)

     CAN_FilterInitStructure.CAN_FilterIdHigh   =(((u32)slave_id<<3)&0xFFFF0000)>>16;

     CAN_FilterInitStructure.CAN_FilterIdLo=(((u32)slave_id<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0xFFFF;

(注:标准帧数据帧、标准远程帧和扩展远程帧均被过滤)

2、对扩展远程帧过滤:(只接收扩展远程帧)

     CAN_FilterInitStructure.CAN_FilterIdHigh   = (((u32)slave_id<<3)&0xFFFF0000)>>16;

     CAN_FilterInitStructure.CAN_FilterIdLow  = (((u32)slave_id<<3)|CAN_ID_EXT|CAN_RTR_REMOTE)&0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0xFFFF;

3、对标准远程帧过滤:(只接收标准远程帧)

     CAN_FilterInitStructure.CAN_FilterIdHigh   =(((u32)slave_id<<21)&0xffff0000)>>16;

     CAN_FilterInitStructure.CAN_FilterIdLow  = (((u32)slave_id<<21)|CAN_ID_STD|CAN_RTR_REMOTE)&0xffff;

      CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0xFFFF;

4、对标准数据帧过滤:(只接收标准数据帧)

     CAN_FilterInitStructure.CAN_FilterIdHigh   =(((u32)slave_id<<21)&0xffff0000)>>16;

     CAN_FilterInitStructure.CAN_FilterIdLow  = (((u32)slave_id<<21)|CAN_ID_STD|CAN_RTR_DATA)&0xffff;

     CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0xFFFF;

5、对扩展帧进行过滤:(扩展帧不会被过滤掉)

     CAN_FilterInitStructure.CAN_FilterIdHigh   =(((u32)slave_id<<3)&0xFFFF0000)>>16;

     CAN_FilterInitStructure.CAN_FilterIdLow  = (((u32)slave_id<<3)|CAN_ID_EXT)&0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0xFFFF;

      CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0xFFFC;

6、对标准帧进行过滤:(标准帧不会被过滤掉)

     CAN_FilterInitStructure.CAN_FilterIdHigh   =(((u32)slave_id<<21)&0xffff0000)>>16;

     CAN_FilterInitStructure.CAN_FilterIdLow  = (((u32)slave_id<<21)|CAN_ID_STD)&0xffff;

      CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0xFFFF;

     CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0xFFFC;

注:slave_id为要过滤的id号。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)