探究STM32L4在不同时钟配置下的功耗表现
STM32L4系列MCU通过动态电压/频率调节和多种低功耗模式实现了出色的能效表现。测试显示,在80MHz Range1模式下运行电流达11.8mA,而降至4MHz Range2模式时仅需0.59mA。该芯片提供7种低功耗模式,包含FlexPowerControl等技术,支持1.71V低电压工作,特别适合电池供电场景。测试采用OpenHarmony系统,验证了降低频率可显著节省功耗,Range2模
目录
前段时间研究了一下STM32L4在OpenHarmony开源鸿蒙的liteos-m内核下的低功耗特性的移植。但是,一款优秀的低功耗设备,绝不仅仅是在休眠模式下能有出色的功耗表现,在运行状态下,它同样应该具有足够吸引人的功耗表现。STM32L系列是ST专为低功耗应用开发的MCU系列,他的休眠功耗是毋庸置疑的,但是在运行状态下,究竟表现如何,我今天就来验证一下。
STM32L4的低功耗秘诀
验证之前,我们先来了解一下STM32L4为了降低功耗都做了哪些工作。不得不说,ST对STM32L系列的功耗优化确实下了不少功夫。就目前来说,M3\M4内核的低功耗MCU,ST的STM32L和芯科的EFM32系列应该是无出其右。但是EFM32自从前几年芯片荒之后,国内渠道就江河日下了......言归正传,STM32L为了降低功耗,做了很多工作,具体都有什么呢,以下是我从官方摘抄:
STM32L4 系列的微控制器采用新型结构制造,得益于其高度灵活性和高级外设集,实现了一 流的超低功耗性能。STM32L4 系列产品的性能为应用提供最佳能量效率,在超低功耗领域首 屈一指。STM32L4xx 器件基于 ARM ® Cortex ® -M4 ,具有 FPU 内核。它们的工作频率可达 80 MHz ,并实现 了在80 MHz 频率下具有 100 DMIPS 的性能,由于集成了 ART Accelerator™ ,还同时能保持尽 可能小的动态功耗。STM32L4 系列产品具有 FlexPowerControl ,它提高了功耗模式管理上的灵活性,同时降低了 应用的总体功耗。STM32L4xx 器件嵌入了大量智能执行外设,具有多种先进的低功耗模拟功能,并且有多种外 设可使用 低功耗模式。得益于批采集子模式(BAM ), STM32L4 系列的微控制器可在数据与通信外设进行传输时优化功耗,同时其他器件处于低功耗模式。低功耗设计和处理性能的结合使得 STM32L4 器件能够实现行业领先的 EEMBCULPBench™ ® 分数,对于标准产品可达176.7 ,对于 SMPS 版本可达 253 。在 STM32F 和 STM32L 系列产品的雄厚基础上, STM32L4 系列产品集合了多种创新,能够使不 同模式下的功耗减到最小,同时保留大部分现有外设并很好地实现了引脚兼容,能够很容易地从现有产品上进行移植。得益于其内置内部稳压器和电压调节,无论外部供电电压是多少, STM32L4xx 器件在活动模 式下都能保持尽可能小的消耗。这使得这些器件非常适合电池供电的产品,所需供电电压可低至1.71 V 。此外,其多个电压域允许以低电压为产品供电(因而可以降低功耗),同时模数转换器和数模转换器可以更高的电源和参考电压供电,可高达3.6 V 。STM32L4xx 微控制器可支持电池备份域以保持 RTC 运行,并能支持 32 个寄存器(每个寄存器为32 位宽),在失去主电源,备份电池供电时,备份域功能能够保持工作。该可选备份电池可在有主电源时充电。STM32L4xx 器件支持 7 种主要的低功耗模式,其中每种都有多个子模式选项。这使得设计人员可以在低功耗性能、短启动时间、可用外设集与唤醒源最大数量之间实现最佳折中。
以上部分说的比较官方,而且很多地方是我们开发时无需关心的。我主要就我们实际会用到的两点简要说明一下。
两种可选的动态电压和频率范围
首先是STM32L提供了两种不同的电压和频率范围,在这两种不同的范围内,内核运行的效率也是不一样的。
1.Range 1支持高达80 MHz的系统频率。
2.Range 2支持达26 MHz的系统频率,并且效率提高(比Range 1高了15%)。
除以上两种范围外,STM32L在专用低功耗运行模式下(LPRun模式,内核可在2 MHz下运行)效率继续提高,比Range 2高了20%。
下图是STM32L476电流消耗与系统频率的关系图。可以看出,同等条件下,LPRun模式功耗最低,Range 2次之,Range 1消耗最高。

而LPRun模式功耗最低的秘密是因为它有专用的低功耗稳压器。如图

其实除了这2种电压频率范围外,存储器配置也会影响功耗。例如从内部SRAM运行时,电流消耗是最低的。从内部闪存运行时,ART Accelerator™减少了访问存储器的次数,因此可降低总电流消耗。 具体可参考应用笔记AN4621.
多种功耗模式
STM32L4支持的功耗模式有很多:
- 运行模式
- 低功耗运行模式
- 睡眠模式
- 低功耗睡眠模式
- 停止模式0
- 停止模式1
- 停止模式2
- 待机模式
- 关机模式
以上后7种模式都属于低功耗休眠模式,内核停止运行。我本次测试主要关注运行模式。
测试环境
MCU:STM32L4系列。
硬件电路:仅包含最小系统。
高频晶振:外部8Mhz。
低频晶振:外部32.768Khz。
供电电压:3.3V.
功耗测试设备:功耗测试仪。
软件环境:OpenHarmony开源鸿蒙liteos-m 开启低功耗特性,仅建立一个任务,工作3秒,休眠3秒。代码如下:
VOID taskSampleEntry1(VOID) {
while (1) {
LOS_PmLockRequest("test");
LOS_TaskDelay(3000);
LOS_PmLockRelease("test");
LOS_TaskDelay(3000);
}
}
测试方法
在其他条件不变的情况下,仅改变时钟源(或时钟频率)。然后观察系统功耗变化情况。
测试结果
| 序号 | 时钟源 |
PCLK频率 (MHz) |
Range1 运行电流(mA) |
Rang2 运行电流(mA) |
休眠电流(uA) |
| 1 | HSE+PLL | 80 | 11.8 | - | 4.3 |
| 2 | HSE+PLL | 48 | 7.4 | - | 4.3 |
| 3 | MSI | 48 | 6.8 | - | 4.3 |
| 4 | MSI | 24 | 3.5 | 2.9 | 4.3 |
| 5 | MSI | 4 | 0.7 | 0.59 | 3.9 |





测试结论
结论已经很明显了,频率越低功耗越低,Rang2效率确实高于Rang1。有低功耗需求的朋友,确实可以考虑降低频率。(不要担心频率低了不够用,M3/M4内核效率还是比较高的,想想当年51内核就那效率都能干那么多事,你还怕啥。)这里没有测试低功耗运行状态,有兴趣的朋友可以自己测试一下。
更多推荐
所有评论(0)