OpenEdv-开源电子网

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

STM32低功耗测试及睡眠问题

[复制链接]

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-6-19
在线时间
5 小时
发表于 2012-8-5 13:08:17 | 显示全部楼层 |阅读模式
用STM32F103RBT6芯片做一短信卡,所用资源:串口1,2,3;定时器2,4;外加几个IO口(有一发光管指示)。使用8M晶振。
在系统时钟72M时实测GSM模块启动后电流40~45mA。
降低系统时钟为40M时电流:28~34 mA。
降低系统时钟为24M时电流: 23~28 mA。
此时还有一耗电大户LED,IO推挽输出电阻220欧,电流大概8 mA ((3.3-1.4)/220),改电阻为1.6K
实测24M时电流为:19 mA 。到现在为止跟手册上的电流功耗基本接近(毕竟有外部电路IO口工作)。
GSM模块工作是电流在10 mA左右(手册上说明),根据上面测试频率降低16M时工作电流减少大概5 mA,降低IO口频率不大明显,毕竟我只有一个LED输出。
为了进一步降低功耗,使系统进入睡眠模式,关闭通用定时器后设置
*(u32*)0xE000ED10 &= ~(1<<2);   //SLEEPDEEP =0  这个最重要,绝对是睡眠还是深度睡眠(停止或待机)模式
*(u32*)0xE000ED10 &= ~(1<<1);   //SLEEPONEXIT =0     
PWR->CR |= (1<<3); //CSBF 后面4个设置不重要   
PWR->CR |= (1<<2); //CWUF
PWR->CR &= ~(1<<1); //PDDS
PWR->CR &= ~(1<<0); //LPDS
WFI_SET();
通过串口指令,控制进入睡眠模式,测试整机电流降至15mA。
但串口激活睡眠模式时发现系统不是继续运行,而是复位运行。

查看中英文手册,确认休眠模式不会产生系统复位,经反复测试及仿真,发现执行完 WFI_SET(); 后系统所有寄存器变成0XAAAAAAAA,
这样 SLEEPONEXIT =1,PDDS=1,SBF=1,这是待机标志啊?







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

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-6-19
在线时间
5 小时
 楼主| 发表于 2012-8-5 13:17:40 | 显示全部楼层
官方的资料也只有待机模式和停止模式,并没有普通睡眠模式。我只是希望平时没数据处理的时候低功耗工作,延长电池待机时间。保持RAM内数据不变而已,显然待机模式和停止模式都不适合
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-5 16:12:53 | 显示全部楼层
进入睡眠模式后,JTAG读取的数据应该不是真实值了.
这个你做个试验吧.
验证真的是复位重启,还是从进入睡眠模式前的代码处开始执行.
最好排除一切干扰进行测试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-6-19
在线时间
5 小时
 楼主| 发表于 2012-8-5 17:13:26 | 显示全部楼层
不仿真,通过串口控制进入休眠模式,串口接收中断开,再次发任意数据时系统复位重启,RAM的内容也被复位了。
系统重启时需要初始化模块的一些参数,这样的话本该正常接收的数据(退出休眠时发的串口数据)丢失
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-5 19:45:49 | 显示全部楼层
那可能睡眠模式退出后,也是从复位开始运行吧...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2011-10-17
在线时间
0 小时
发表于 2012-8-7 10:47:02 | 显示全部楼层
   我玩过stop模式退出后是从进入stop模式的地方继续运行程序的。。。
回复 支持 反对

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-6-19
在线时间
5 小时
 楼主| 发表于 2012-8-9 15:52:40 | 显示全部楼层
手册上说stop模式和待机可能会触发复位,休眠模式不会触发复位的(在芯片复位章节有介绍所有复位)。停止和待机必须外部中断唤醒,这个在无人控制的设备中(无外部中断触发)不能用,有点鸡肋了。
回复 支持 反对

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2013-4-24
在线时间
6 小时
发表于 2013-4-24 12:35:26 | 显示全部楼层
我也遇到这样的问题 从停机模式唤醒以后 系统就跟复位了一样
回复 支持 反对

使用道具 举报

2

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2015-9-24
在线时间
41 小时
发表于 2016-5-31 17:11:39 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-6-20
在线时间
2 小时
发表于 2017-6-20 15:20:07 | 显示全部楼层
我也碰到了这问题,睡眠后唤醒,直接就是复位
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2017-6-23
在线时间
3 小时
发表于 2017-7-24 10:41:24 | 显示全部楼层
我想问问楼主,你的jtag接口如何配置的?
回复 支持 反对

使用道具 举报

2

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1472
金钱
1472
注册时间
2014-4-8
在线时间
172 小时
发表于 2017-11-21 11:42:02 | 显示全部楼层
是虽然是挖坟贴,但是我也遇到这个问题了,睡眠(sleep模式)唤醒后复位,并且不执行主函数
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 20:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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