OpenEdv-开源电子网

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

STM32F4 can 过滤器设置问题

[复制链接]

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-4-13
在线时间
57 小时
发表于 2016-5-12 12:35:16 | 显示全部楼层 |阅读模式
1金钱
各位:
   现在要设置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]

麻烦各位帮忙解答下,谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-4-13
在线时间
57 小时
 楼主| 发表于 2016-5-12 14:46:54 | 显示全部楼层
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2016-5-12 15:39:28 | 显示全部楼层
好像沒辦法設定剛剛好
目標設    0x415
mask設  0xF00 這樣會變成0x400-0x4FF都收到

一次用很多個filter哩..?  
例如:
filter0
目標設    0x0400
mask設  0xFFF0 這樣會0x400-0x40F都收到

filter1
目標設    0x0410
mask設  0xFFF8 這樣會0x410-0x417都收到

多點filter應該可以弄到剛剛好 ...
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-12-2
在线时间
7 小时
发表于 2016-5-17 13:30:46 | 显示全部楼层
你好,我也面临你提的一模一样的问题。。让一个特定的标识符通过没有问题,如果通过一组泽恩设置呢?CAN_FilterMaskIdHigh、Low怎么配置?请问,你解决这个问题没??
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-12-2
在线时间
7 小时
发表于 2016-5-17 13:33:01 | 显示全部楼层
我看网上的CAN_FilterMaskIdHigh、Low要么就是0x0000完全通过,要么就是0xFFFF完全匹配。。。设置过滤一组的代码很少
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-4-13
在线时间
57 小时
 楼主| 发表于 2016-5-17 15:14:26 | 显示全部楼层
幻幻无穷 发表于 2016-5-17 13:33
我看网上的CAN_FilterMaskIdHigh、Low要么就是0x0000完全通过,要么就是0xFFFF完全匹配。。。设置过滤一组 ...

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 06:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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