STM32F4 can 过滤器设置问题

2019-07-20 22:11发布

各位:
   现在要设置can过滤器只接收ID 0x400 ~ ID 0x415 共22个id的标准数据帧数据
   麻烦问下要如何设置can的过滤器?

现在我只研究出了设置只接收一个id的数据的过滤器设置方式,如下:
[mw_shl_code=c,true]CAN_FilterInitTypeDef  CAN_FilterInitStructure;
       
        //配置过滤器
        CAN_FilterInitStructure.CAN_FilterNumber=0;          //过滤器0
          CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位

          CAN_FilterInitStructure.CAN_FilterIdHigh=(((u32)0x415<<21)&0xffff0000)>>16;                //32位ID
          CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x415<<21)|CAN_ID_STD|CAN_RTR_DATA)&0xffff;
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xFFFF;//32位MASK
          CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xFFFF;
       
           CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
          CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化[/mw_shl_code]

麻烦各位帮忙解答下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
ct3paul
1楼-- · 2019-07-21 02:40
麻烦原子哥解答下
civic7366
2楼-- · 2019-07-21 08:10
 精彩回答 2  元偷偷看……
幻幻无穷
3楼-- · 2019-07-21 09:12
 精彩回答 2  元偷偷看……
幻幻无穷
4楼-- · 2019-07-21 13:45
我看网上的CAN_FilterMaskIdHigh、Low要么就是0x0000完全通过,要么就是0xFFFF完全匹配。。。设置过滤一组的代码很少
ct3paul
5楼-- · 2019-07-21 19:18
幻幻无穷 发表于 2016-5-17 13:33
我看网上的CAN_FilterMaskIdHigh、Low要么就是0x0000完全通过,要么就是0xFFFF完全匹配。。。设置过滤一组 ...

正在研究使用标识符列表的方式解决,欢迎一起讨论

一周热门 更多>