OpenEdv-开源电子网

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

CAN通信求助

[复制链接]

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-11-7
在线时间
9 小时
发表于 2016-11-7 20:16:25 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 水龙王2016 于 2016-11-7 21:55 编辑

原子,你好:,我在学习STM32F103的CAN通信,我想设置我的板子ID为1,切只接收发送ID为1的邮件,应该怎么设置?我反复看了CAN通信例程,也搜索了论坛有关CAN的帖子,也没有搞懂,希望你能帮助我,谢谢!!

extern u8 table[20][8];
            

u8 CAN_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)
{
        u16 i=0;
         if(tsjw==0||tbs2==0||tbs1==0||brp==0)return 1;
        tsjw-=1;
        tbs2-=1;
        tbs1-=1;
        brp-=1;

        RCC->APB2ENR|=1<<2;            
        GPIOA->CRH&=0XFFF00FFF;
        GPIOA->CRH|=0X000B8000;         
  GPIOA->ODR|=3<<11;
                                            
        RCC->APB1ENR|=1<<25;     
        CAN->MCR=0x0000;            
        CAN->MCR|=1<<0;               
        while((CAN->MSR&1<<0)==0)
        {
                i++;
                if(i>100)return 2;   
        }
        CAN->MCR|=0<<7;               
        CAN->MCR|=0<<6;               
        CAN->MCR|=0<<5;               
        CAN->MCR|=1<<4;               
        CAN->MCR|=0<<3;               
        CAN->MCR|=0<<2;               
        CAN->BTR=0x00000000;   
        CAN->BTR|=mode<<30;      
        CAN->BTR|=tsjw<<24;
        CAN->BTR|=tbs2<<20;
        CAN->BTR|=tbs1<<16;      
        CAN->BTR|=brp<<0;         
                                                
        CAN->MCR&=~(1<<0);                     
        while((CAN->MSR&1<<0)==1)
        {
                i++;
                if(i>0XFFF0)return 3;
        }
        
        CAN->FMR|=1<<0;                        
        CAN->FA1R&=~(1<<0);               
        CAN->FS1R|=1<<0;               
        CAN->FM1R|=0<<0;               
        CAN->FFA1R|=0<<0;               
        CAN->sFilterRegister[0].FR1=0x00000001;    //32&#206;位ID,对吗?
        CAN->sFilterRegister[0].FR2=0xffffffff;        //32&#206;位MASK,对吗?
        CAN->FA1R|=1<<0;               
        CAN->FMR&=0<<0;                        

#if CAN_RX0_INT_ENABLE
         
        CAN->IER|=1<<1;                              
        MY_NVIC_Init(1,0,USB_LP_CAN_RX0_IRQChannel,2);
#endif
        return 0;
}

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

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11559
金钱
11559
注册时间
2014-4-1
在线时间
1318 小时
发表于 2016-11-7 21:09:02 | 显示全部楼层

应当就是在屏蔽寄存器里设置。

回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-11-7
在线时间
9 小时
 楼主| 发表于 2016-11-7 21:53:40 | 显示全部楼层
具体怎么设置?我试了不同的组合,也不行
回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-11-7
在线时间
9 小时
 楼主| 发表于 2016-11-8 18:56:36 | 显示全部楼层
有谁知道吗?谢谢你们啦
回复

使用道具 举报

10

主题

172

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1479
金钱
1479
注册时间
2016-1-25
在线时间
260 小时
发表于 2016-11-8 19:22:00 | 显示全部楼层
你还是没有好好的看原子哥的can通信程序  其实里面的数据的接收中就已经提到这个了
回复

使用道具 举报

8

主题

206

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-4-6
在线时间
234 小时
发表于 2016-11-8 21:09:03 | 显示全部楼层
楼主,可以数据手册上的这个图,都是通过这个图设置过滤器的赛选的。
QQ图片20161108210446.png
回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-11-7
在线时间
9 小时
 楼主| 发表于 2016-11-16 19:10:54 | 显示全部楼层

具体怎么设置?我试了不同的组合,也不行,谢谢你们啦
回复

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2016-11-14
在线时间
16 小时
发表于 2016-11-17 08:14:11 | 显示全部楼层
支持一下子,
回复

使用道具 举报

33

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
587
金钱
587
注册时间
2015-1-9
在线时间
80 小时
发表于 2016-11-17 08:33:49 | 显示全部楼层
你怎么知道不行?实验过程是?实验结果是?
君子性非异也,善假于物也
不知常,妄作,凶
纵浪大化中,不喜亦不惧,应尽便须尽,无复独多虑
路漫漫其修远兮,吾将上下而求索
菩萨畏因,凡夫畏果
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 20:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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