OpenEdv-开源电子网

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

stm32 can通信不正常,

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2013-12-16
在线时间
0 小时
发表于 2015-4-22 16:25:47 | 显示全部楼层 |阅读模式
5金钱
       正在实验CAN ,通过电脑把数据发送给实验板CAN在液晶上显示出来,电脑是用的是USB-CAN 转换器。
      现在实验现象很奇怪,如果把过滤器设置成全F,实验板就接收不到数据,进不了中断.如果设置成全0就能通讯,液晶显示正常。在程序上自己实在找不出什么地方出错了,大家帮忙看看,谢谢。

static void CAN_Filter_Config(void)
{
    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)0x1314<<3)&0xFFFF0000)>>16; //0x0000;// 要过滤的ID高位 
    CAN_FilterInitStructure.CAN_FilterIdLow=(((u32)0x1314<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //0x0000; //要过滤的ID低位 
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; //0x0000;// 过滤器高16位每位必须匹配
    CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; //0x0000;// 过滤器低16位每位必须匹配
    CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0 ; //过滤器被关联到FIFO0
    CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //使能过滤器
    CAN_FilterInit(&CAN_FilterInitStructure);
    CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
}

void USB_LP_CAN1_RX0_IRQHandler(void)
{
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
if((RxMessage.ExtId==0x1314) && (RxMessage.IDE==CAN_ID_EXT)&& (RxMessage.DLC==2))
        {
                a=RxMessage.Data[0];
                a<<=8;
                a|=RxMessage.Data[1];
                LED3_ON();
        Delay_10ms(2000);  
                LED3_OFF();
        Delay_10ms(2000);
        }
       CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0); 
}

最佳答案

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

全0代表过滤器不起作用,全是F代表过滤器每位都起作用,ID对应不上就被屏蔽了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

193

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2012-12-19
在线时间
16 小时
发表于 2015-4-22 16:25:48 | 显示全部楼层
全0代表过滤器不起作用,全是F代表过滤器每位都起作用,ID对应不上就被屏蔽了。
回复

使用道具 举报

70

主题

6769

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13197
金钱
13197
注册时间
2012-11-26
在线时间
3820 小时
发表于 2015-4-22 16:55:03 | 显示全部楼层
你自己看对应的寄存器是干嘛的!

光看英语字母  你看到2016年也看不出啥来
学无止境
回复

使用道具 举报

4

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2017-4-5
在线时间
24 小时
发表于 2017-6-24 14:38:14 | 显示全部楼层
有点复杂,
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-17 20:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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