打印

STM32休眠唤醒的问题

[复制链接]
12445|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stealth|  楼主 | 2010-3-18 16:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我用STM32F103,AD的参考电平要是没接,是不能下载调试的。问题是这个参考电平是接在一个可控制开关的LDO的输出的,而这个LDO的开关由单片机IO控制,所以单片机要是没跑起来,那LDO就没输出,LDO没输出单片机就不能下载调试。:Q 我现在只能先把AD的参考电平接单片机的电源(另一个一直开的LDO提供的电源,从不关闭),烧好程序再改成接可控LDO的输出。这样问题来了,休眠后(STOP MODE),外部中断唤醒经常不成功(有时可以,多数时候不行),但如果我要是放弃了去控制LDO,AD的参考电平一直有电的话,休眠后唤醒是100%成功的。但这样做不能关掉可控LDO的,省电效果大打折扣。问题出在哪里呢,各位DX救急啊!!
沙发
ST_ARM| | 2010-3-18 16:37 | 只看该作者
STM32F103是多少引脚的?AD的参考电平是哪个引脚?

使用特权

评论回复
板凳
stealth|  楼主 | 2010-3-18 16:43 | 只看该作者
QFP64的,AD参考电平是13脚VDDA.

使用特权

评论回复
地板
香水城| | 2010-3-18 21:35 | 只看该作者
STM32中AD参考电平是Vref+,64脚的封装上没有引出这个信号,在芯片内部把Vref+连接到VDDA,所以不能认定VDDA就是AD参考电平。除此之外,VDDA主要提供复位电路,唤醒电路和所有模拟部分的供电。

STM32的手册中有明确的描述。下面是数据手册中的一张图,图中的虚线就是64脚和少于64脚封装的内部连接:

STM32_Power_Scheme.GIF (16.49 KB )

STM32_Power_Scheme.GIF

使用特权

评论回复
5
香水城| | 2010-3-18 21:37 | 只看该作者

使用特权

评论回复
6
yybj| | 2010-3-18 21:45 | 只看该作者
如果用内部AD,VDD就是参考电平,应外部就不是了

使用特权

评论回复
7
stealth|  楼主 | 2010-3-18 22:08 | 只看该作者
VDDA电源是所有模拟部分的电源我知道,在64脚封装下还是AD的参考电平.只是我现在的状况是,按下按键,应该是外部中断唤醒的,但实际上只是电流增大了瞬间,然后仍旧休眠.不知道是不是休眠的时候关掉了VDDA上的电源,那中断进去后,本来应该是控制管教IO开电的,但由于VDDA没电,IO控制不了.
如果VDDA和单片机数字部分的电源用同一电源,且一直不关闭,那个LDO一样的关掉,那唤醒是完全没问题的,但是这样一来,休眠时候的电流却要大上很多,不知道哪里消耗了.

使用特权

评论回复
8
香水城| | 2010-3-18 22:22 | 只看该作者
退出停止模式时,HSI RC振荡器被选为系统时钟;如果退出停止模式时没有VDDA,则CPU将没有系统时钟,当然不能工作。

STM32_Exit_STOP_Mode.GIF (23.17 KB )

STM32_Exit_STOP_Mode.GIF

使用特权

评论回复
9
stealth|  楼主 | 2010-3-18 22:28 | 只看该作者
哦!
但之前休眠VDDA上没电时,电流只有二三十uA,现在VDDA上一直连这电,别的一样,电流有100多uA,哪里多出来这么多的电流呢?我只开了AD,休眠前也已经关掉了.

使用特权

评论回复
10
香水城| | 2010-3-18 22:30 | 只看该作者
请问休眠的时候电压调节器是否处于低功耗模式?

使用特权

评论回复
11
stealth|  楼主 | 2010-3-18 22:43 | 只看该作者
单片机里面的电压调节器一直运行,因为我要保持SRAM里面的内容.

使用特权

评论回复
12
stealth|  楼主 | 2010-3-18 23:00 | 只看该作者
我没把电压调节器设成低功耗模式,如果设成低功耗模式的副作用只是唤醒的延迟大点而已吧?
不过VDDA一直有电还是之前的休眠就没电我都是一样的设置啊,要多耗电流也应该一起多才对.

使用特权

评论回复
13
ST_ARM| | 2010-3-19 10:18 | 只看该作者
我觉得你的描述不太清晰,尤其是你的LDO的作用和连接,能否将你的SCH贴出来?

使用特权

评论回复
14
zaizia| | 2010-3-19 10:21 | 只看该作者
退出停止模式时,HSI RC振荡器被选为系统时钟;如果退出停止模式时没有VDDA,则CPU将没有系统时钟,当然不能工作。

使用特权

评论回复
15
stealth|  楼主 | 2010-3-19 10:57 | 只看该作者
我那LDO本来是想用做AD的参考电平的,因为它给几个传感器供电,传感器都要标定的。如果直接用给单片机数子部分供电的电源,那会造成标定的数据和实际的有出入的。
我现在只有两条路可以走,一是仍然用LDO给ADDA供电,但这样做怎么才能唤醒呢?二是ADDA改用和单片机数字部分一样的电源,这样唤醒没问题,但是除了传感器使用上可能有的问题之外,还存在休眠时的电流过大,比第一种情况大上几倍。电流为什么会大这么多我真是百思不得其解啊,我现在进休眠前把AD和可以关的IO的时钟都关掉了,在防真器里调的时候,关了这些电流确实小了不少。但到实际运行的时候,不论我有没有关这些,休眠电流都是恒定的111uA左右.

使用特权

评论回复
16
stealth|  楼主 | 2010-3-19 10:57 | 只看该作者
我那LDO本来是想用做AD的参考电平的,因为它给几个传感器供电,传感器都要标定的。如果直接用给单片机数子部分供电的电源,那会造成标定的数据和实际的有出入的。
我现在只有两条路可以走,一是仍然用LDO给ADDA供电,但这样做怎么才能唤醒呢?二是ADDA改用和单片机数字部分一样的电源,这样唤醒没问题,但是除了传感器使用上可能有的问题之外,还存在休眠时的电流过大,比第一种情况大上几倍。电流为什么会大这么多我真是百思不得其解啊,我现在进休眠前把AD和可以关的IO的时钟都关掉了,在防真器里调的时候,关了这些电流确实小了不少。但到实际运行的时候,不论我有没有关这些,休眠电流都是恒定的111uA左右.

使用特权

评论回复
17
香水城| | 2010-3-19 11:13 | 只看该作者
可以考虑用唤醒的信号在唤醒MCU的同时唤醒给VDDA供电的LDO,在唤醒的信号上加一个简单的延时电路,延迟时间只要维持到MCU唤醒后输出了打开LDO的信号即可。

使用特权

评论回复
18
ST_ARM| | 2010-3-19 11:31 | 只看该作者
首先,你必须将Vdda连接到STM32的Vdd上,这时STM32进入STOP模式时,STM32的最大功耗分两种:内部电源调节器开启时为35uA和关闭时为25uA(这与芯片有关,我列出的是功耗最大的那种芯片,其他的要比这个小,具体到你的芯片,你可以查看对应的STM32的数据手册),至于你说你的电路在此时电流有100多uA,那有可能是你的电路或代码有问题。

使用特权

评论回复
19
stealth|  楼主 | 2010-3-19 17:36 | 只看该作者
本帖最后由 stealth 于 2010-3-19 17:41 编辑

之前直接关VDDA上的电时,休眠电流只有三十多uA,现在VDDA一直有电的情况下休眠,电流一直有上百uA。之前低我估计是因为所有用VDDA的部分因为VDD掉电都强制关掉了所以低电流,所以我现在把用到VDDA的部分都关了,可是怎么休眠时还有上百uA啊。我关了AD,PLL,IO,甚至把本来没用到的LSI,TEMP sensor,PVD,DAC都禁止了.HSI进stop时自己停了(我只用了HSI,无HSE,LSE)。怎么还是这么高的电流呢,一丁点都不变少。:'(:@
而且进stop模式时,不论把电压调节器设成开还是低功耗方式,消耗的电流都完全一样,真神了!:funk:

使用特权

评论回复
20
pkat| | 2010-3-19 18:18 | 只看该作者
按楼上说的,是有点很奇怪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

87

帖子

1

粉丝