OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3606|回复: 6

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

[复制链接]

2

主题

8

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-3-4
在线时间
3 小时
发表于 2019-3-26 21:01:24 | 显示全部楼层 |阅读模式
3金钱
想要实现一个开发板在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);



QQ图片20190326205926.png

最佳答案

查看完整内容[请看2#楼]

授人以鱼不如授人以渔,自己换算下填进去吧 标准id 扩展id除11位剩余 IDE RTR 空 FilterMask[/backcolor]=11111111110 000000000000000000 1 1 0 32位二进制 FilterId =0000001001x xxxxxxxxxxxxxxxxxxxx 0 0 x 32位二进制 x随意 FilterMask为1的位必须匹配 0不关心 所以进来的 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-26 21:01:25 | 显示全部楼层
本帖最后由 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

主题

8

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-3-4
在线时间
3 小时
 楼主| 发表于 2019-3-27 11:02:05 | 显示全部楼层
nashui_sx 发表于 2019-3-27 10:35
授人以鱼不如授人以渔,自己换算下填进去吧                     
                      标准id         ...

大神  x代表随意是吧   我的是标准帧不是扩展帧 该怎么填写呢  
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-27 11:20:04 | 显示全部楼层
而知也无涯 发表于 2019-3-27 11:02
大神  x代表随意是吧   我的是标准帧不是扩展帧 该怎么填写呢

FilterId IDE=0 就是标准帧  x随便填 反正过滤器不关心它
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-3-4
在线时间
3 小时
 楼主| 发表于 2019-3-27 13:37:38 | 显示全部楼层
nashui_sx 发表于 2019-3-27 11:20
FilterId IDE=0 就是标准帧  x随便填 反正过滤器不关心它

如果我需要只接收0x12和0x13 ,那么是不是需要填写两份  FilterMask和Filterid
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-27 13:52:42 | 显示全部楼层
而知也无涯 发表于 2019-3-27 13:37
如果我需要只接收0x12和0x13 ,那么是不是需要填写两份  FilterMask和Filterid

0000001001x  x=0 1不就是 0x12 0x13?
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-3-4
在线时间
3 小时
 楼主| 发表于 2019-3-27 13:56:27 | 显示全部楼层
nashui_sx 发表于 2019-3-27 13:52
0000001001x  x=0 1不就是 0x12 0x13?

多谢 明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 04:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表