OpenEdv-开源电子网

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

Can2 退出初始化模式失败

[复制链接]

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2015-4-6
在线时间
9 小时
发表于 2018-12-12 11:21:02 | 显示全部楼层 |阅读模式
1金钱
请问各位大大,我的 can2 初始化过程如下,但在最后退出初始化模式时确失败,是哪不对吗?

u16 i=0;
if(tsjw==0||tbs2==0||tbs1==0||brp==0)return 1;
tsjw -= 1; // 先减去1.再用于设置
tbs2 -= 1;
tbs1 -= 1;
brp -= 1;

RCC->AHB1ENR|=1<<1; // 使能PORT B时钟
GPIO_Set(GPIOB,PIN5|PIN6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);
// PA5,PA6,复用功能,上拉输出
GPIO_AF_Set(GPIOB,5,9);
// PA5,AF9
GPIO_AF_Set(GPIOA,6,9);
// PA6,AF9

RCC->APB1ENR |= 1<<26; // 使能CAN2时钟 CAN2使用的是APB1的时钟(max:42M)
CAN2->MCR = 0x0000; // 退出睡眠模式(同时设置所有位为0)
CAN2->MCR |= 1<<0; // 请求CAN进入初始化模式
while((CAN2->MSR&1<<0)==0)
{
i++;
if(i>100)return 2; // 进入初始化模式失败
}
CAN2->MCR |= 0<<7; // 非时间触发通信模式
CAN2->MCR |= 0<<6; // 软件自动离线管理
CAN2->MCR |= 0<<5; // 睡眠模式通过软件唤醒(清除CAN1->MCR的SLEEP位)
CAN2->MCR |= 1<<4; // 禁止报文自动传送
CAN2->MCR |= 0<<3; // 报文不锁定,新的覆盖旧的
CAN2->MCR |= 0<<2; // 优先级由报文标识符决定
CAN2->BTR = 0x00000000; // 清除原来的设置.
CAN2->BTR |= mode<<30; // 模式设置 0,普通模式;1,回环模式;
CAN2->BTR |= tsjw<<24; // 重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位
CAN2->BTR |= tbs2<<20; // Tbs2=tbs2+1个时间单位
CAN2->BTR |= tbs1<<16; // Tbs1=tbs1+1个时间单位
CAN2->BTR |= brp<<0; // 分频系数(Fdiv)为brp+1
// 波特率:Fpclk1/((Tbs1+Tbs2+1)*Fdiv)
CAN2->MCR &= ~(1<<0); // 请求CAN退出初始化模式
while((CAN2->MSR & 1<<0)==1)
{
i++;
if(i>0XFFF0)return 3; // 退出初始化模式失败
}

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

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-12-12 15:11:45 | 显示全部楼层
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-1-29
在线时间
4 小时
发表于 2019-1-29 19:22:17 | 显示全部楼层
注意阿波罗STM32F4的开发板的PB12管脚连接有问题。注意原理图PB12脚好像一直被上拉(温湿度传感器那里),好像还接了一块芯片引脚上把它断开
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 14:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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