打印

STM32F,低功耗何时是个头?(我所遇到的)

[复制链接]
7840|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
peterwei2010|  楼主 | 2010-8-6 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是这样的,这是一个奇怪的现象! 在项目中,用到STM32F103C8这款IC,需要进行低功耗设计(STOP模式,其中RTC模式也需要用),根据数据手册上的低功耗设计可以做到14UA(典型值)。
现在问题来了,系统WFE进入STOP模式后,瞬间电流可以达到14UA左右,但是,! 它竟然不会停在某个值,也就是它不会稳定,每隔几秒,十几秒,据估测,电流均以2UA的电流增加,似乎这是规律一样! 就是这样电流从十几微安,不会过多久就会飙升,20,22,24,26。。。40。。。50.。。60。。。70.。。? 目前10分钟左右后,(69,71,73,69UA,阶段来回整)。

心都凉了~~~
沙发
IJK| | 2010-8-6 15:10 | 只看该作者
STM32F103的低功耗状态下电流,14uA的STOP模式电流我能稳定的得到,是通过WFI指令实现的。
建议LZ用WFI试试看。

另外,“RTC模式也需要用”是什么意思?通过RTC定时唤醒STM32?
建议先不要唤醒,试试看

使用特权

评论回复
板凳
shizaigaole| | 2010-8-6 16:32 | 只看该作者
IO端口没有处理好,
有IO开关电流产生。

使用特权

评论回复
地板
peterwei2010|  楼主 | 2010-8-6 16:55 | 只看该作者
本帖最后由 peterwei2010 于 2010-8-6 17:08 编辑

更正一下,我原本用的是WFI指令。
TO: IJK
谢谢,你的建议,我用WFI指令看看
RTC模块,也就是同时在跑RTC,
不是用RTC唤醒,只是,需要实时时钟。
TO: shizaigaole
IO开关电流,是的,IO的最后状态很重要, 我基本尝试过所有的模式了,硬件外围也没多少个元件。
最后发现还是用 IPU这个模式有效(VCC-VCC),其他会有很大漏电
现在的问题是,功耗不稳定!一直有往上涨的趋势!
不知道是外设引起的,还是内核引起的。。。

谁有这方面经历,交流,交流。

使用特权

评论回复
5
IJK| | 2010-8-6 17:18 | 只看该作者
问题最好不要纠缠在一起,最好先把STOP模式下的电流搞好,不开RTC。
另外,我记得为了得到理想的STOP模式电流,我把IO配置成模拟输入(AIN),部分代码如下(针对high density STM32):

  // Enable all GPIOs clock
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB
                         | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD
                         | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF
                         | RCC_APB2Periph_GPIOG| RCC_APB2Periph_AFIO, ENABLE);

  
  // Disable the Serial Wire Jtag Debug Port SWJ-DP
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);

  // PA
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

使用特权

评论回复
6
shizaigaole| | 2010-8-6 17:23 | 只看该作者
低功耗时候,无关的IO口一般要100k上拉,并且把口线置为输入。
外围电路的输出如果在休眠期间不关闭,也有可能对IO输入造成影响。

使用特权

评论回复
7
peterwei2010|  楼主 | 2010-8-6 17:37 | 只看该作者
:)好建议

使用特权

评论回复
8
香水城| | 2010-8-7 10:26 | 只看该作者
低功耗时候,无关的IO口一般要100k上拉,并且把口线置为输入。
外围电路的输出如果在休眠期间不关闭,也有可能对IO输入造成影响。
shizaigaole 发表于 2010-8-6 17:23


不用使用100K上拉,直接接到VCC即可。

使用特权

评论回复
9
McuPlayer| | 2010-8-7 11:10 | 只看该作者
直接拉到VDD也有风险,万一跑飞了一堆IO直接输出0,哈哈哈

使用特权

评论回复
10
香水城| | 2010-8-7 11:19 | 只看该作者
直接拉到VDD也有风险,万一跑飞了一堆IO直接输出0,哈哈哈
McuPlayer 发表于 2010-8-7 11:10


STM32中有端口配置锁寄存器,在配置好GPIO端口后可以上锁,防止程序跑飞时,意外地改变I/O配置状态,避免发生烧坏器件的情况出现。某个端口一旦被上锁,只有系统复位才能结锁,十分安全。

所以楼上的担心是多余的,哈哈哈 :lol

使用特权

评论回复
11
shizaigaole| | 2010-8-7 11:35 | 只看该作者
用内部弱上拉或者弱下拉应该也行,

反正只要有固定的电平,防止IO不断翻转产生开关电流即可。

使用特权

评论回复
12
peterwei2010|  楼主 | 2010-8-7 11:37 | 只看该作者
好消息, 我现在可以做到15UA左右了, 而且可以稳定。由于用到USB功能,在进入功耗前,多加了一个SUSPPEND()函数(记得以前加这个会效果好一点),我现在把它屏蔽掉,它就能稳定了。另外至于IO的状态,可能要根据板子来设置了(但是从我个人的经历来看,这似乎不是很关键,有的说是,GND对GND,VCC-对VCC, STM手册说的是AIN)
总结一下,我现在做的:
用WFI进入STOP模式。
各IO设置成AIN输入模式。

使用特权

评论回复
13
kgsz| | 2010-8-7 12:18 | 只看该作者
学习下,也用这款IC 做低功耗

使用特权

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

本版积分规则

9

主题

50

帖子

1

粉丝