OpenEdv-开源电子网

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

stm32F4 can 接收标准帧扩展帧

[复制链接]

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
发表于 2017-9-6 17:18:47 | 显示全部楼层 |阅读模式
1金钱
对于同一个ID能不能即接收标准帧又接收扩展帧?我使用了2个滤波器,但是好像不能还是只能接收扩展帧。。。。。

CAN_FilterInitStructure.CAN_FilterNumber=0;          //过滤器0
          CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位
                #if ID_EXT_En//扩展帧滤波器全部匹配
                CAN_FilterInitStructure.CAN_FilterIdHigh   = (((u32)0x0013<<3)&0xFFFF0000)>>16;
    CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x0013<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF;
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh  = 0xFFFF;//0x0000;//
    CAN_FilterInitStructure.CAN_FilterMaskIdLow   = 0xFFFF;//0x0000;//

        CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
          CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化

CAN_FilterInitStructure.CAN_FilterNumber=1;          //过滤器1
          CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位
               
                CAN_FilterInitStructure.CAN_FilterIdHigh=(((u32)0x0013<<21)&0xffff0000)>>16;//0x0012;////32位ID
          CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x0013<<21)|CAN_ID_STD|CAN_RTR_DATA)&0xffff;//0x0012;
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh= 0xFFFF;//0x0000;//32位MASK
          CAN_FilterInitStructure.CAN_FilterMaskIdLow= 0xFFFF;//0x0000;
       
           CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO1;//过滤器0关联到FIFO1
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
          CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化


最佳答案

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

你这是设置的屏蔽位模式,全部设置1,说明都要关心,如果不匹配,则丢弃。自然只能收到一个ID了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-6 17:18:48 | 显示全部楼层
你这是设置的屏蔽位模式,全部设置1,说明都要关心,如果不匹配,则丢弃。自然只能收到一个ID了
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11577
金钱
11577
注册时间
2014-4-1
在线时间
1321 小时
发表于 2017-9-6 21:12:05 | 显示全部楼层

十几年前用过CAN,
忘差不多了。

帮顶。

回复

使用道具 举报

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
 楼主| 发表于 2017-9-7 08:08:42 | 显示全部楼层
正点原子 发表于 2017-9-6 17:18
你这是设置的屏蔽位模式,全部设置1,说明都要关心,如果不匹配,则丢弃。自然只能收到一个ID了

我设置的两个滤波器,应该是先对滤波器0进行比较,如果不满足在对滤波器1进行比较有一个满足就接收,两个都不满足才丢掉吧!!!
回复

使用道具 举报

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
 楼主| 发表于 2017-9-7 08:21:47 | 显示全部楼层
我这样配置可以接收两个扩展帧的ID报文,但是配置成一个扩展帧一个标准帧就接收不到。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 21:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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