STM32U系列主打的是超低功耗,功耗要比L系列的功耗更低,为了实现更低的功耗,芯片内部做了很多的优化,一起来看看都有哪些优化措施。这篇文章参考的是官方手册AN5652。
一、芯片内部的功耗优化措施
在STM32U575后缀带Q的芯片内部包含一个开关电源SMPS。可以使用这个开关电源代替内部的LDO为核心供电,已达到节省功耗的目的,但是SMPS有一定的噪声,有可能干扰一些功能。从下图可以看出,使用SMPS比使用LDO更加省电。
LPBAM低功耗后台自主模式,许多外设可以正常工作,并自主进入停机模式,并直接访问内存。
不同的低功耗模式要在:低功耗性能、短启动时间、可用外设集与唤醒源的最大数量直接实现最佳的折中。
芯片支持动态电压调节,可以根据不同的工作频率调节为逻辑供电的主LDO的电压。
可以看出运行频率越低,需要的电压就越小,可以更省电。
SMPS和LDO都可以作为内部的调压器使用,调压器分种两种模式:主调压器和低功耗调压器。主调压器在需要性能的时候使用。
ICACHE是指令缓存,缓存来自处理器的指令提取负载。ICACHE只管理读,不管理写。从ICACHE上读指令,比在FLASH上读要省电。ICACHE有预取功能和单/双路模式,对应的电流消耗也不同,但是开着ICACHE更省电,开预取功能更省电,单路更省电。
在低功耗模式下,FLASH的读取时间会更长。
从上面可以看出低功耗的措施有:SMPS、ICACHE、动态VCORE电压调节、FLASH的低功耗读取(会增加Flash读操作的时间)
二、低功耗模式
STM32U5系列还有多种不同的低功耗模式,可以根据唤醒源、唤醒时间等方面综合考虑使用哪一种。
-
睡眠模式,cpu时钟关闭,但是其它外设还可以运行,包括内核外设(NVIC、Systick),发生中断或事件时唤醒。
-
停机模式,核心域中的所有时钟停止,禁用PLL、MSIS、MSIK、HSI16和HSE振荡器。外设可以启用MSIS、MSIK和HSI16。这个模式还有多个模式,不同的模式提供的最大数量活动外设和唤醒源不同,唤醒时间也不同。
LPBAM也是这个模式的,一些外设时自主的可以启用时钟、总线、并搭配DMA传输数据。
-
待机模式,关闭内部调压器和核心域,关闭大部分时钟,RTC课保持激活状态,同时SRAM2的一部分区域也可以保持,也可以保持IO电平。唤醒后的时钟是MSIS,最高4MHz。
-
关断模式,几乎全部关闭,可以借助唤醒引脚或复位引脚唤醒。由LSE定时的RTC也能唤醒。
三、功耗优化
官方推荐的功耗优化方法如下:
- ICACHE的使用。其中配置为直接映射的单路模式最省电。
- 内部的Flash有2个存储区(bank),可以在运行和睡眠模式下,选择将某个bank置于掉电模式。也支持低功耗读取模式,低功耗读取会增加读取的时长,因此要综合考虑。
- 电源控制的优化。可以将BOR配置为不连续模式。也可以切换到SMPS。
- 低功耗模式下的RCC。
- IO状态:配置未使用的GPIO为默认输入比较省电。禁用不用IO的时钟。
- 内部RAM。有5个,其中1、2、3为主RAM,4用于在停机2模式下的LPBAM。可以选择的关闭一些SRAM。在停机模式下SRAM的内容可以保存。进入待机模式SRAM和寄存器内容将丢失。但是可以配置SRAM2的一部分保持。
- 运行和停机模式下的时钟控制。可以关闭不用的时钟,不过Flash、SRAM等内存单元的时钟除外。可以通过SMEN位使外设在处理器进入休眠模式时自动关闭。
四、LPBAM的使用
LPBAM可以使外设在停机0、1、2模式下工作并保持自主,也就是不通过CPU,而是使用DMA,直接将数据读取到内存中。这样CPU不用唤醒。
支持LPBAM的外设如下图所示,注意不同的停机模式,可以使用的外设也不一样。