OpenEdv-开源电子网

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

求一个Can接收指定ID数据的例程,万谢!!!

[复制链接]

96

主题

558

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3419
金钱
3419
注册时间
2016-1-7
在线时间
565 小时
发表于 2017-4-28 11:52:22 | 显示全部楼层 |阅读模式
20金钱
第一次Can通讯,做的协议按232格式做的,发现接收8帧数据开始就出现了异常。结果看Can通讯,说是接收ID报文,我初始程序也改了,接收中断中也判断了Rxceive.ExtId==0x1234,后面接着处理canbuf中的数据。但是发现接收不到数据。折腾几天了,不知问题出哪儿了? 哪位有例程,求一个,万谢!!!stm32F1或stm32f4的都可以,起码能调通,顺利接收指定ID的数据。

最佳答案

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

#define EXID1 0x0001 #define EXID2 0x0002 #define EXID3 0x0003 #define EXID4 0x0004 CAN_FilterInitStructure.CAN_FilterNumber=0; //1yÂËÆ÷0 CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList; CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32λ CAN_FilterInitStructure.CAN_FilterIdHigh= (( ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

96

主题

558

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3419
金钱
3419
注册时间
2016-1-7
在线时间
565 小时
 楼主| 发表于 2017-4-28 11:52:23 | 显示全部楼层
challenger 发表于 2017-4-29 10:25
#define EXID1  0x4321
        #define EXID2  0x1234
               

                #define EXID1  0x0001
                #define EXID2  0x0002
                #define EXID3  0x0003
                #define EXID4  0x0004
               

               
          CAN_FilterInitStructure.CAN_FilterNumber=0;          //1yÂËÆ÷0
                CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32λ
   
          CAN_FilterInitStructure.CAN_FilterIdHigh= ((((u32)EXID1<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
          CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)EXID1<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;
               
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=((((u32)EXID2<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
          CAN_FilterInitStructure.CAN_FilterMaskIdLow= (((u32)EXID2<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;
               
          CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0 ;                                //é&#184;&#209;&#161;&#198;÷±&#187;1&#216;áaμ&#189;FIFO0
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;                        //ê1&#196;üé&#184;&#209;&#161;&#198;÷
    CAN_FilterInit(&CAN_FilterInitStructure);
                               
          CAN_FilterInitStructure.CAN_FilterNumber=1;          //1y&#194;&#203;&#198;÷0
                CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32&#206;&#187;

          CAN_FilterInitStructure.CAN_FilterIdHigh= ((((u32)EXID3<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
          CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)EXID3<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;

          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=((((u32)EXID4<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
          CAN_FilterInitStructure.CAN_FilterMaskIdLow= (((u32)EXID4<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;
       
          CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0 ;                                //é&#184;&#209;&#161;&#198;÷±&#187;1&#216;áaμ&#189;FIFO0
          CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;                        //ê1&#196;üé&#184;&#209;&#161;&#198;÷
    CAN_FilterInit(&CAN_FilterInitStructure);

此问题,已经解决,研究好久,在网上找了不少资料。看了原子哥视频,然后再看野火的视频,终于解决了。答案贴在上面了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-4-28 18:13:55 | 显示全部楼层
帮顶
回复

使用道具 举报

96

主题

558

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3419
金钱
3419
注册时间
2016-1-7
在线时间
565 小时
 楼主| 发表于 2017-4-29 10:25:56 | 显示全部楼层
本帖最后由 challenger 于 2017-4-29 10:54 编辑

               
        #define EXID1  0x4321
        #define EXID2  0x1234
               
        #define EXID3  0x2345
        #define EXID4  0x3456
               
               
CAN_FilterInitStructure.CAN_FilterIdHigh= ((((u32)EXID1<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)EXID1<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;

  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=((((u32)EXID2<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterMaskIdLow= (((u32)EXID2<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;


CAN_FilterInitStructure.CAN_FilterIdHigh= ((((u32)EXID3<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)EXID3<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;

  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=((((u32)EXID4<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterMaskIdLow= (((u32)EXID4<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;



CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0 ;                                //é&#184;&#209;&#161;&#198;÷±&#187;1&#216;áaμ&#189;FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;                        //ê1&#196;üé&#184;&#209;&#161;&#198;÷

CAN_FilterInit(&CAN_FilterInitStructure);

原子哥,这样设置怎么只能收到0x2345,0x3456后面两组,0x4321,0x1234前面两组怎么收不到呢?求教,还有哪个地方没设置对?难道最多只能指定两组ID吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 18:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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