OpenEdv-开源电子网

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

STM32 CAN通信问题

[复制链接]

14

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2014-9-10
在线时间
0 小时
发表于 2014-10-27 11:46:18 | 显示全部楼层 |阅读模式
5金钱
用回环模式测试CAN都是可以的,数据也没问题,但是调到正常模式发送和接收的数据都不对,发送用买的一个k-7120通讯转换模块,现在不知道哪出了问题
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);//使能CAN1时钟
GPIO_PinAFConfig(GPIOA, GPIO_PinSource11,GPIO_AF_CAN1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource12,GPIO_AF_CAN1);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);

//CAN单元设置
CAN_InitStructure.CAN_TTCM=DISABLE; //非时间触发通信模式  
CAN_InitStructure.CAN_ABOM=DISABLE; //软件自动离线管理  
CAN_InitStructure.CAN_AWUM=DISABLE; //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)
CAN_InitStructure.CAN_NART=DISABLE; //禁止报文自动传送 
CAN_InitStructure.CAN_RFLM=DISABLE; //报文不锁定,新的覆盖旧的 
CAN_InitStructure.CAN_TXFP=DISABLE; //优先级由报文标识符决定 
CAN_InitStructure.CAN_Mode= CAN_Mode_Normal;         //模式设置: mode:0,普通模式;1,回环模式; 

//Baudrate 30M/((1+6+8)*2)=1Mbps
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位  CAN_SJW_1tq CAN_SJW_2tq CAN_SJW_3tq CAN_SJW_4tq
CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; //Tbs1=tbs1+1个时间单位CAN_BS1_1tq ~CAN_BS1_16tq
CAN_InitStructure.CAN_BS2=CAN_BS2_6tq;//Tbs2=tbs2+1个时间单位CAN_BS2_1tq ~ CAN_BS2_8tq
CAN_InitStructure.CAN_Prescaler=2;            //分频系数(Fdiv)为brp+1
CAN_Init(CAN1, &CAN_InitStructure);            // 初始化CAN1 
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=0x0000;////32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;//过滤器0关联到FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
CAN_FilterInit(&CAN_FilterInitStructure);//滤波器初始化
CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);//FIFO0消息挂号中断允许.

NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     // 主优先级为1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;            // 次优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
接收数据如下图所示,id,和数据都不对


最佳答案

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

解决了,是K120上位机软件问题没有按标准的CAN协议
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2014-9-10
在线时间
0 小时
 楼主| 发表于 2014-10-27 11:46:19 | 显示全部楼层
解决了,是K120上位机软件问题没有按标准的CAN协议
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-27 13:36:53 | 显示全部楼层
帮顶....
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-10-27 13:54:26 | 显示全部楼层
先找 规律,  明显是 编码顺序高反了 低位在前 变成了 高位在前了

这种状态:
11010001 -> 10001011 

找找哪配置不对吧
回复

使用道具 举报

14

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2014-9-10
在线时间
0 小时
 楼主| 发表于 2014-10-27 16:22:14 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
我怎么感觉是发过来的收据没有<<3,看扩展ID
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-10-27 16:48:09 | 显示全部楼层
回复【4楼】yang627468471:
---------------------------------

哦 ,这个规律 还不完全是 

我光看第一个字节了 还有 都是Bx  -> xD
0XB3: 10110011 0XCD: 11001101
回复

使用道具 举报

14

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2014-9-10
在线时间
0 小时
 楼主| 发表于 2014-10-28 10:26:38 | 显示全部楼层
大神,这个问题困扰我几天了,实在是找不出哪出问题了,项目都搁浅了 啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 16:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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