OpenEdv-开源电子网

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

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

[复制链接]

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2019-5-8 15:50:53 | 显示全部楼层 |阅读模式
1金钱
首先,我以前用过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功能呀。

最佳答案

查看完整内容[请看2#楼]

因为低功耗调试的难点是如何排除硬件中的漏电流,因为你把外围设备都去掉了,大部分引脚即使默认配置不合理,外部也是悬空的,也不会产生漏电流,你这种测试方法,在实际开发中这种情况没有任何意义,因为产品中必要功能是不能缺失的,如何在保留这些外围器件的情况下,尽可能的降低功耗才是目的,这是涉及器件选型,硬件电路设计,软件调试的综合工程。 至于降低频率,降低的是芯片的运行时功耗,和待机停机功耗是两个概念。你这 ...
自在随心
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2019-5-8 15:50:54 | 显示全部楼层
本帖最后由 zc123 于 2019-5-9 14:40 编辑

因为低功耗调试的难点是如何排除硬件中的漏电流,因为你把外围设备都去掉了,大部分引脚即使默认配置不合理,外部也是悬空的,也不会产生漏电流,你这种测试方法,在实际开发中这种情况没有任何意义,因为产品中必要功能是不能缺失的,如何在保留这些外围器件的情况下,尽可能的降低功耗才是目的,这是涉及器件选型,硬件电路设计,软件调试的综合工程。
至于降低频率,降低的是芯片的运行时功耗,和待机停机功耗是两个概念。你这做工作的相当于测试芯片的待机电流,和低功耗没有任何关系。
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2019-5-8 15:52:07 | 显示全部楼层
求大家帮我分析一下,或者说说你们做低功耗时的步骤和想法。我现在非常困惑,不知道应该怎么调了。
自在随心
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2019-5-8 16:17:40 | 显示全部楼层
大佬们,你们说点儿啥呗,解答一下我的疑惑,我快不行了
自在随心
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-5-8 19:17:13 | 显示全部楼层
3.6ua就是最低了?
一分耕耘一分收获。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-5-9 01:52:35 | 显示全部楼层
你的IO如果都是悬空,自然怎么配置,都影响不大。但是如果你的IO是外接了外设,那就会有影响。
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2019-5-9 08:09:29 | 显示全部楼层
yklstudent 发表于 2019-5-8 19:17
3.6ua就是最低了?

手册称2.5uA最低
自在随心
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2019-5-9 15:39:08 | 显示全部楼层
zc123 发表于 2019-5-9 14:37
因为低功耗调试的难点是如何排除硬件中的漏电流,因为你把外围设备都去掉了,大部分引脚即使默认配置不合理 ...

多谢!
1、也就是说降低频率和升高频率都不会影响待机停机状态下的功耗呗?
2、我现在新画的板子上有好几个485芯片、232芯片、flash芯片,都是不可扔的。如果这些芯片一直供着电,我认为功耗根本降不下来,比如一个485在无负载情况下典型电流是900uA,那只要我还给它供着电就降不下来。所以新画的板子上都是直接用单片机去控制这些外围芯片的供电,单片机本身不断电,我直接把外围断开了,就相当于您一开始说的外部悬空了吧?这样做是否可行?
自在随心
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2019-5-9 16:07:20 | 显示全部楼层
本帖最后由 zc123 于 2019-5-9 16:09 编辑
yuzeyuan1 发表于 2019-5-9 15:39
多谢!
1、也就是说降低频率和升高频率都不会影响待机停机状态下的功耗呗?
2、我现在新画的板子上有好 ...

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

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2019-5-9 16:59:22 | 显示全部楼层
zc123 发表于 2019-5-9 16:07
1.是对的
2.可行,功率是可以降下来的,外围的模块休眠时全断开是低功耗实现方式的一种(也是比较简单的 ...

还有一个问题:
我测试深度休眠模式下,无法保存引脚状态,如果引脚外部是悬空的话,它就是低电平,如果外部是高电平的话,引脚就是高电平(这里就比如原子板子上的小灯,休眠模式下引脚会变成高电平,外部也是高电平,就无法让灯亮起来。)。
停机模式下,可以保存引脚状态。
所以我之前在网上搜的教我如何如何配置引脚,是不是都是在停机模式的前提下用的呀?休眠模式下配了也白配呀。
自在随心
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-5-10 02:17:38 | 显示全部楼层
yuzeyuan1 发表于 2019-5-9 16:59
还有一个问题:
我测试深度休眠模式下,无法保存引脚状态,如果引脚外部是悬空的话,它就是低电平,如果 ...

如果确实这样,那就避免出现高低打架的情况
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2019-5-10 08:30:22 | 显示全部楼层
yuzeyuan1 发表于 2019-5-9 16:59
还有一个问题:
我测试深度休眠模式下,无法保存引脚状态,如果引脚外部是悬空的话,它就是低电平,如果 ...

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 22:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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