STM32 的 CAN总线滤波器设置问题 求大神帮忙

2019-07-20 02:57发布

想要实现一个开发板在CAN总线上,只接受CAN的ID为0x12 与 0X13的数据帧    请问在滤波器中该如何设置
代码如下 ,希望大神在帮忙改一下代码  多谢


        CAN_FilterInitStructure.CAN_FilterNumber=0;       
          CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
          CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
          CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
           CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
          CAN_FilterInit(&CAN_FilterInitStructure);



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
nashui_sx
1楼-- · 2019-07-20 07:08
本帖最后由 nashui_sx 于 2019-3-27 10:45 编辑

授人以鱼不如授人以渔,自己换算下填进去吧                     
                      标准id             扩展id除11位剩余               IDE   RTR   空
FilterMask=11111111110     000000000000000000             1        1     0     32位二进制
FilterId    =0000001001x     xxxxxxxxxxxxxxxxxxxx             0        0     x     32位二进制 x随意
FilterMask为1的位必须匹配 0不关心 所以进来的一定是0000001001x     xxxxxxxxxxxxxxxxxxxx             0        0     x    (x随意 )
即:id=00000010010 00000010011   0x12 0x13 的IDE=0标准帧 RTR=0数据帧


而知也无涯
2楼-- · 2019-07-20 08:55
 精彩回答 2  元偷偷看……
nashui_sx
3楼-- · 2019-07-20 09:11
而知也无涯 发表于 2019-3-27 11:02
大神  x代表随意是吧   我的是标准帧不是扩展帧 该怎么填写呢

FilterId IDE=0 就是标准帧  x随便填 反正过滤器不关心它
而知也无涯
4楼-- · 2019-07-20 14:32
nashui_sx 发表于 2019-3-27 11:20
FilterId IDE=0 就是标准帧  x随便填 反正过滤器不关心它

如果我需要只接收0x12和0x13 ,那么是不是需要填写两份  FilterMask和Filterid
nashui_sx
5楼-- · 2019-07-20 16:51
 精彩回答 2  元偷偷看……
而知也无涯
6楼-- · 2019-07-20 19:45
nashui_sx 发表于 2019-3-27 13:52
0000001001x  x=0 1不就是 0x12 0x13?

多谢 明白了

一周热门 更多>