打印
[技术问答]

保证MCU低功耗

[复制链接]
2044|53
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenci2013|  楼主 | 2024-12-30 19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 平时我们在做产品的时候,基本的功能实现很简单,但只要涉及低功耗的问题就比较棘手了,比如某些可以低到微安级的MCU,而自己设计的低功耗怎么测都是毫安级的,电流竟然能够高出标准几百到上千倍,遇到这种情况千万不要怕,只要认真你就赢了。下边咱们仔细分析一下这其中的原因。

  第一条:掐断外设命脉——关闭外设时钟

  先说最直观的,也是工程师都比较注意的方面,就是关闭MCU的外设时钟,对于现在市面上出现的大多数的MCU,其外设模块都对应着一个时钟开关。只需要打开这个外设的时钟,就可以正常的使用这个外设了,当然,此外设也就会产生相应的功耗;反之,如果想要让这个外设不产生功耗,只需关闭它的时钟即可。

第二条:让工作节奏慢下来——时钟不要倍频

  除了外设模块功率消耗之外,还有一个功耗大户需要注意一下,这就是PLL和FLL模块。PLL和FLL主要是用来对原始的时钟信号进行倍频操作,从而提高系统的整体时钟,相应的,其功耗也会被提上去。所以在进入低功耗之前,需要切换是种模式,旁路掉PLL和FLL模块,从而尽可能的降低MCU的功耗,等到MCU唤醒之后再把时钟切换回去。

第三条:围堵涓涓细流——注意I/O口的电平状态

  如果认为只要关闭外设时钟就能够保证外设不再耗电,那么你就太天真了。如果IO口没有做好处理的话,它就会在暗地里偷走功耗,而你却浑然不知。具体原因是这样的,一般的IO的内部或者外部都会有上下拉电阻,举个例子,如下图所示,假如某个IO口有个10KΩ的上拉电阻,把引脚拉到3.3V,然而当MCU进入低功耗模式的时候,此IO口被设置成输出低电平,根据欧姆定律,此引脚就会消耗3.3V/10K=0.33mA的电流,假如有四、五个这样的IO口,那么几个mA就贴进去了,太可惜了。所以在进入低功耗之前,请逐个检查IO口的状态:

  如果此IO口带上拉,请设置为高电平输出或者高阻态输入;

  如果此IO口带下拉,请设置为低电平输出或者高阻态输入;

总之一句话,不要把上好的电流浪费在产生热量的功能上,咱可不靠这点温度去暖手。

  第四条:睦邻友好合作——注意I/O与外设IC的统筹

  IO口的上下拉电阻消耗电流这一因素相对比较明显,下边咱来说一个不明显的因素:IO口与外部IC相连时的电流消耗。假如某个IO口自带上拉,而此与IO相连的IC引脚偏偏是自带下拉的,那么无论这个引脚处于什么样的电平输出,都不可避免的产生一定的电流消耗。所以凡是遇见这一类的情况,首先需要阅读外设IC的手册,确定好此引脚的的状态,做到心中有数;然后在控制MCU睡眠之前,设置好MCU的IO口的上下拉模式及输入输出状态,要保证一丝儿电流都不要被它消耗掉。

  第五条:断开调试器连接,不要被假象所迷惑

  还有一类比较奇特,检测出来的电流消耗很大,可实际结果是自己杞人忧天,什么原因呢?是因为在测试功耗的时候MCU还连接着调试器呢!这时候大部分电流就会被调试器给掳走,平白无故的让工程师产生极度郁闷的心情。所以在测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。


使用特权

评论回复
沙发
eefas| | 2025-1-5 10:28 | 只看该作者
大多数MCU的外设模块都有对应的时钟开关。关闭未使用的外设时钟可以显著降低功耗。

使用特权

评论回复
板凳
robertesth| | 2025-1-5 11:26 | 只看该作者
避免频繁的中断处理,因为中断会打断正常的程序流程并消耗额外的能量。

使用特权

评论回复
地板
bestwell| | 2025-1-5 13:41 | 只看该作者
在不使用时,关闭外设,如ADC、DAC、UART、SPI等。
对于必须保持的外设,尝试将其置于低功耗模式。

使用特权

评论回复
5
geraldbetty| | 2025-1-5 14:55 | 只看该作者
使用电源管理IC来控制MCU的供电,可以根据需要开启或关闭电源。
在不需要时关闭或降低电压到外设和IO端口。

使用特权

评论回复
6
vivilyly| | 2025-1-5 15:43 | 只看该作者
选择具有低功耗特性的MCU是实现低功耗设计的第一步。市场上有许多专为低功耗应用设计的MCU,它们在待机、运行和睡眠模式下都具有较低的功耗。

使用特权

评论回复
7
pmp| | 2025-1-5 16:06 | 只看该作者
在不处理任务时,将MCU置于睡眠模式。
对于更长的休眠时间,使用深度睡眠或休眠模式,这些模式可能会关闭大部分或全部的MCU功能。

使用特权

评论回复
8
yeates333| | 2025-1-5 16:36 | 只看该作者
深入了解 MCU 所支持的各种低功耗模式,如睡眠模式、深度睡眠模式和待机模式等。在任务执行的间隙,让 MCU 进入合适的低功耗模式。例如,当 MCU 完成一次数据处理和传输后,并且在下次任务到来之前有较长时间间隔,将其置于深度睡眠模式,此时 MCU 的大部分内部模块会被关闭,仅保留少量用于唤醒的电路。

使用特权

评论回复
9
chenci2013|  楼主 | 2025-1-5 17:18 | 只看该作者
在设备空闲时,尽可能让MCU进入低功耗模式,避免不必要的功耗。

使用特权

评论回复
10
belindagraham| | 2025-1-5 18:09 | 只看该作者
选择低功耗的外围设备,如传感器和通信模块。例如,选用具有低功耗休眠模式的传感器,在不需要采集数据时,传感器自动进入休眠状态,减少能耗。对于蓝牙或 Wi-Fi 通信模块,选择带有节能模式的产品,并且合理设置其工作模式和通信间隔。

使用特权

评论回复
11
wilhelmina2| | 2025-1-5 18:35 | 只看该作者
不同的MCU芯片本身具有不同的功耗特性。例如,一些专门为物联网设备设计的MCU,像小华半导体的部分产品,在架构上就采用了低功耗技术,其内核在空闲状态或执行简单任务时能保持较低的能耗。

使用特权

评论回复
12
ulystronglll| | 2025-1-5 19:32 | 只看该作者
避免频繁的中断。虽然中断是实现实时响应的重要手段,但过于频繁的中断会导致 MCU 频繁地从低功耗模式唤醒,增加功耗。因此,合理设置中断触发条件和优先级,减少不必要的中断。例如,将多个相似的中断源进行合并,或者通过软件滤波的方式减少误触发的中断。

使用特权

评论回复
13
jimmhu| | 2025-1-5 20:41 | 只看该作者
选择支持多种低功耗模式的MCU,如待机模式、睡眠模式、深度睡眠模式等。这些模式可以在不需要高性能时降低功耗。

使用特权

评论回复
14
hearstnorman323| | 2025-1-7 19:34 | 只看该作者
通过测量各个模块的功耗,找出潜在的优化空间,如关闭未使用的外设或降低时钟频率。

使用特权

评论回复
15
beacherblack| | 2025-1-8 00:11 | 只看该作者
PLL(锁相环)和FLL(频率锁定环)模块用于对原始时钟信号进行倍频操作,提高系统时钟频率。在低功耗模式下,应旁路这些模块,降低系统时钟频率,从而减少功耗。

使用特权

评论回复
16
youtome| | 2025-1-9 21:18 | 只看该作者
合理布置滤波电容,减少电源纹波。小的高频滤波电容可以滤除高频噪声,大的电解电容则能稳定直流电压。

使用特权

评论回复
17
eefas| | 2025-1-11 16:35 | 只看该作者
根据 MCU 的工作电压范围和功耗需求,挑选合适的输出电压和电流规格的 PMIC。如对于低功耗 MCU,其工作电压可能较低,此时应选择能够精确输出低电压的电源管理芯片,并且要考虑芯片在不同负载条件下的效率曲线。

使用特权

评论回复
18
robertesth| | 2025-1-11 17:16 | 只看该作者
当I/O口与外部IC相连时,可能会产生额外的电流消耗。应仔细阅读外设IC的手册,确保在低功耗模式下,I/O口的配置不会导致不必要的电流消耗。

使用特权

评论回复
19
1988020566| | 2025-1-17 12:41 | 只看该作者
对于MCU的外设模块,通常都有一个对应的时钟开关。在不需要使用外设时,通过关闭其时钟可以有效降低功耗。

使用特权

评论回复
20
maqianqu| | 2025-1-17 20:03 | 只看该作者
根据任务的频率和响应要求合理设置唤醒周期。如果任务周期较长,可以选择较长的唤醒间隔,避免频繁进入较高功耗模式。

使用特权

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

本版积分规则

113

主题

6446

帖子

4

粉丝