目录

STM32L4的低功耗秘诀

两种可选的动态电压和频率范围 

多种功耗模式

测试环境

测试方法

测试结果

测试结论


    前段时间研究了一下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内核就那效率都能干那么多事,你还怕啥。)这里没有测试低功耗运行状态,有兴趣的朋友可以自己测试一下。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐