待机和停机模式,怎么能降低板子功耗?现在对原子的待机休眠例程感觉很奇怪,附上我今天测试的效果,请大家帮我分析一下。

2019-07-21 01:41发布

首先,我以前用过F103和F407的休眠和唤醒,用着挻好的,但是板子上一堆芯片供着电,所以没具体考虑过将功耗降到最低。前几天在网上搜了一下讨论低功耗的各种帖子、博文。网友的大概意思是要注意以下几点:
1、所有的IO引脚,根据高阻状态的电平配置成上拉输入或下拉输入,意思是降低引脚自身的内部电阻消耗。据说一个电阻约30mA.
2、降低系统时钟频率,这个应该在system_stm32f4xx.c中,通过配置PLL_M、PLL_N、PLL_P、PLL_Q的值,去更改主频。
3、休眠时改用内部晶振,而不再用外部晶振,对于STM32F4来说,应该是要控制PH0 PH1,让它俩变成普通IO,具体的我也没试,至于为什么还没试,请往下看。
4、把jtag引脚配置成普通IO,禁止SWD功能,我也没配置,原因请往下看。
5、使用一些芯片时,看好手册和参考电路,把电路上该有的上拉电阻、下拉电阻给加上。
6、其它方法请坛友们再给加一加。。。

问题在于,我今天测试时非常的奇怪,用自己画的板子跑了一个正点原子的待机唤醒例程,发现休眠后有16mA电流,我认为可以按上面5条来一点一点儿改了,于是去改jtag引脚,配置成普通IO口,发现无论我怎么改,这休眠电流就是不少,反而会有0.1mA的不断上下浮动,不知道为什么会浮动,但肯定与我引脚配置无关。
于是我焊掉板子上的485芯片、232芯片和flash芯片,还剩15mA,又去掉了485芯片部分的两个电阻和小灯上的一个电阻和一个电压转换芯片。这时候休眠电流竟然只剩下了3.6uA。虽说外围电路基本全光光了,只剩下一大堆不工作的电容电阻,但是所有引脚我还都没有配置,怎么就没有电流了呢?
我想起来例程里本身就啥也没配置,于是我又跑了个以前的代码,把待机休眠的三个函数放进去。发现休眠后依然是3.6uA。我这套代码里用了二十几个IO口,什么485、232、TTL、SPI、I2C、单总线、灯、中断全都有。然后我又发现休眠函数里有一句复位所有IO口,我去掉它之后,休眠电流依然是3.6uA。
我现在很蒙逼,不是因为功耗降不下来,而是因为功耗为什么这么低。我还什么都没有配置,没做过低功耗,但很颠覆我以前的认知。我就是感觉现在的测试是有问题的。请问大家几个问题:
1、为什么别人做低功耗废了几天时间去一个引脚一个引脚配,而我这测试直接一步到位呢?原子例程里多写了什么东西吗?休眠后只有3.6uA,虽然手册上说最低2.5uA左右,但毕竟板子做的很随意,3.6已经很满足了。
2、降低系统时钟频率,可以明显降低工作时的功耗,但是休眠后就跟这个频率无关了吗?我不需要在休眠之前把主频调到最低吗?(事实测试是,不管调成啥,功耗都是3.6uA,很颠覆我的认知。)
3、休眠之前的配置了引脚,在休眠之后还会保持原状态吗?比如某IO口引脚芯片给主动拉高了,休眠后它会变成低还是维持高电平?(这个我没测,不大方便测,但是我记得以前写代码是可以保持高电平的)
4、网友说要配置jtag引脚,配成普通IO口,这样能进一步降低功耗,但是原子例程里好像只是复位了一下,理论上等于依然是SWD功能呀。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
yuzeyuan1
1楼-- · 2019-07-22 02:30
 精彩回答 2  元偷偷看……
zc123
2楼-- · 2019-07-22 07:19
本帖最后由 zc123 于 2019-5-9 16:09 编辑
yuzeyuan1 发表于 2019-5-9 15:39
多谢!
1、也就是说降低频率和升高频率都不会影响待机停机状态下的功耗呗?
2、我现在新画的板子上有好 ...

1.是对的
2.可行,功率是可以降下来的,外围的模块休眠时全断开是低功耗实现方式的一种(也是比较简单的一种),包括不限于直接的引脚控制关断,或者搭配模拟电路进行源端的控制。低功耗本身就是各方面综合解决的问题,方式多种多样,如某些电路选用大电阻,选型时考虑更低功率器件,模拟电路设计控制,软件引脚模块关断,芯片低功耗管理等,不过实际开发中要考虑设计板的体积,根据需求来实现才会遇到这些困难,没有这些前置条件,谈论低功耗自然没什么难度。
yuzeyuan1
3楼-- · 2019-07-22 08:27
zc123 发表于 2019-5-9 16:07
1.是对的
2.可行,功率是可以降下来的,外围的模块休眠时全断开是低功耗实现方式的一种(也是比较简单的 ...

还有一个问题:
我测试深度休眠模式下,无法保存引脚状态,如果引脚外部是悬空的话,它就是低电平,如果外部是高电平的话,引脚就是高电平(这里就比如原子板子上的小灯,休眠模式下引脚会变成高电平,外部也是高电平,就无法让灯亮起来。)。
停机模式下,可以保存引脚状态。
所以我之前在网上搜的教我如何如何配置引脚,是不是都是在停机模式的前提下用的呀?休眠模式下配了也白配呀。
正点原子
4楼-- · 2019-07-22 11:30
 精彩回答 2  元偷偷看……
zc123
5楼-- · 2019-07-22 17:30
yuzeyuan1 发表于 2019-5-9 16:59
还有一个问题:
我测试深度休眠模式下,无法保存引脚状态,如果引脚外部是悬空的话,它就是低电平,如果 ...

       你所得深度休眠是待机模式吧,这种模式下大部分引脚都会进入高阻态,此时电路就由外部电压控制,配置的意义在于控制运行时功耗,对待机功耗来说没影响,你理解的没问题。

一周热门 更多>