
引言" F7 l- m- q# i% O STM32U575/585 微控制器(MCU)基于具有 Arm® TrustZone®和 FPU 的高性能 Arm® 32 位 Cortex®‑M33CPU。这些 MCU 采用新型结构制造,得益于其高度灵活性和高级外设集,实现了一流的超低功耗性能。STM32U575/585 器件可为应用实现极高的能效。$ i8 E% u( Q7 s9 v6 y( H1 A9 k* c 带有“Q”后缀的 STM32U575/585 器件(例如 STM32U5xxxxQ)支持在运行和低功耗模式下使用内部 SMPS,从而能够设计出非, L+ K- o( H2 v, Z5 | 常高效的低功耗应用& W) C2 ?- o, A2 O/ g' j) ^ 通过集成 ART 加速器 8 KB 指令缓存,STM32U575/585 MCU 可在高达 160MHz 的频率下运行,实现 240 DMIPS 性能,同时保 持极低的动态功耗。 STM32U575/585 器件嵌入了大量智能高性能外设,具有多种先进的超低功耗模拟功能。借助于 LPBAM(低功耗后台自主模5 L9 x! A/ s+ j/ {2 }. q 式),许多外设(包括通信、模拟、定时器和音频)均可正常工作并自主进入停机模式,并直接访问内存。 超低功耗设计和处理性能的组合使这些器件能够达到行业领先的 EEMBC® ULPBench™得分,最高达到 535 ULPMark™。 STM32U575/585 MCU 集合了多种创新,能够使不同模式下的功耗减到最小,同时保留大部分现有外设并很好地实现了引脚兼! V% Z$ `. r3 C 容,能够很容易地从现有产品上进行移植。! Q% a: D; _; b 得益于其内置内部稳压器和电压调节,无论外部供电电压是多少,在活动模式下都能保持尽可能小的消耗。这使得这些器件非常适合电池供电的产品,所需供电电压可低 至 1.71 V。 此外,它们具有多电压域,允许产品以低压供电,同时模数和数模转换器可在高达 3.6V 的高电源电压和参考电压下工作。 STM32U575/585 器件可支持电池备份域以保持 RTC(实时时钟)运行,并能支持 32 个寄存器(每个寄存器为 32 位宽)的组,该寄存器组在失去电源时能够保持内容。该可选备份电池可在有主电源时充电。3 o; e- d2 a* }7 d 这些器件支持多种主要的低功耗模式,其中每种都有多个子模式选项。这使得设计人员可以在低功耗性能、短启动时间、可用外设集与唤醒源最大数量之间实现最佳折中。 1.概述 本应用说明适用于基于 Arm® Cortex®内核的 STM32U575/585 微控制器。$ E3 j- {2 U4 {7 y; a8 |) z5 C 提示 Arm 是 Arm Limited(或其子公司)在美国和/或其他地区的注册商标。 参考文档, Y; k$ S4 {; Z [1] 参考手册:基于 Arm®的 STM32U575xx 和 STM32U585xx 高级 32 位 MCU(RM0456), s' p# ?. u" T [2] STM32U575xx(DS13737)和 STM32U585xx(DS13086)的数据表 [3] 应用笔记用于硬件设置和低功耗的 STM32 微控制器 GPIO 配置(AN4899)' `3 z7 P1 o2 j* e [4] 应用笔记使用 LPBAM 进行的 STM32U575/585 功耗优化(AN5645)! P2 Y2 c k0 d& q Z 2.高能效处理 由于使用了关联到其存储器接口的 Cortex‑M33 核,因而在运行模式下获得了很高的处理性能(以 DMIPS/MHz 表 示)。为确保实现最大工作频率下的高性能工作,STM32U575/585 器件嵌入了 ART 加速器指令缓存7 f" V- Y# R% H9 j7 a/ m (ICACHE),通过其屏蔽 Flash 访问等待状态。无论系统时钟频率是多少,都可达到 1.5 DMIPS/MHz 的处理性 能。* s- f V$ e1 l! A2 A8 U; y( {9 Z STM32U575/585 器件支持动态电压调节,以便优化其在运行模式下的功耗。可根据系统的最高操作频率,调节为 逻辑(VCORE)供电的主稳压器提供的电压。更多详细信息,请参见参考文档[1]。 主调压器在以下范围内运行:* E& X- b8 x [+ b& N0 p6 |, ^ • Range 1(V 内核 = 1.2 V),其中 CPU 和外设运行频率高达 160 MHz% M) h) ~& x5 }; G/ w • Range 2(V 内核 = 1.1 V),其中 CPU 和外设运行频率高达 110 MHz% E( W/ T* ?7 R8 P* J • Range 3(V 内核 = 1.0 V),其中 CPU 和外设运行频率高达 55 MHz • Range 4(V 内核 = 0.9 V),其中 CPU 和外设运行频率高达 25 MHz 除非另有说明,否则本应用笔记中使用的所有功耗数据均基于从参考文档[2]中提取的 TA = 25 ° C 且 VDD = 3.0 V 时的典型规格。" o& }: Q% C% ~- G$ j8 T 5 G' I9 ~% c7 U+ o 提示 使用低功耗调压器时,根据软件配置,系统时钟可以是频率高达 24MHz(默认为 4MHz)的 MSIS,也可以是0 }3 j; r0 v8 N" T0 h: B/ P HSI16。 2.1 内部调压器效率 STM32U575/585 器件嵌入了两个内部调压器,可在应用运行时根据应用要求进行选择: • SMPS 降压转换器' [2 h+ \# p8 k: l • 线性调压器(LDO)9 p7 B. w' K9 |2 E LDO 和 SMPS 稳压器有两种模式: • 主调压器(需要性能时使用). O( c) L: y0 G$ i+ V+ d • 低功耗调压器2 G. T8 ?& `9 G" Z 两个调压器都可以提供四个不同电压(电压调节),同时还能在停机模式下工作。 9 q6 `# Q8 ?# ~+ ~/ W: Y" C( T ![]() 下图显示了 STM32U575/585 微控制器在运行模式下用于 SMPS 和 LDO 配置的典型电流消耗(作为系统频率的函8 o2 K0 U5 B* a 数)。& n1 f+ U1 Z( B* u/ p : K# ~1 m6 ^6 U, A7 c* N) ^ ![]() 6 T( f* c6 t8 b " h8 J# K3 d: K$ ^" \0 i 提示 2 V+ Z1 ]2 x( h5 Y. n 从具有单路缓存的内部 Flash 运行时,功耗达到最低。指令缓存往往可减少对存储器的访问次数,从而降低整体! e$ h7 x6 \$ \7 j2 e1 ^, h 电流消耗。使用 ICACHE 时,内部 SRAM 的电流消耗与 Flash 相似。 下图显示了该曲线在 CPU 频率下转化为功率效率(将其除以电流消耗、乘以电源电压得到功率图)。- y1 t: v/ @' v2 }* S. C ![]() ) |: r1 Q: ^( Y; ?. m 1 ~9 n5 G$ j! V7 ]4 h 2.2 ICACHE 效率* Z/ d8 [* c) [5 I( y- y3 r/ x' K$ a 指令缓存(ICACHE)旨在缓存来自处理器的指令提取或指令存储器负载。ICACHE 只管理读事务,不管理写事0 g: w4 M7 C) X ^ 务。在大部分时间,ICACHE 通过从内部 ICACHE 提取指令来降低功耗,而不是从更大且功耗更大的主存储器中获0 i' ], n" T: p8 w 取指令。 ICACHE 的默认配置(复位时)是双路组相联缓存。对于需要极低功耗配置文件的应用,ICACHE 可以配置为单2 p8 [9 D* U% Z L 路,即直接映射缓存。 $ `; u2 j/ W( [ ![]() 0 ? d8 y {1 u/ J- a3 w; r' a 提示 预取往往会以额外的 Flash 存取为代价提升代码执行性能。) ^: X& `+ J$ g, q& `- v( G ![]() 下图显示了 STM32U575/585 微控制器在运行模式下在不同 ICACHE 配置的斐波那契基准中的功率效率(作为系统% z7 W7 G c) V9 M# g2 Z 频率的函数),其中采用 SMPS 且 VDD = 1.8 V。 * p' ]9 a& a( s6 \3 Y. ` ![]() 2.3Flash 效率1 W) m' |4 T, s$ G 下图显示了 Flash 延迟(要被编程到 Flash 访问控制寄存器中的等待状态数值),具体取决于 STM32U575/585 稳8 {3 {0 } Z3 Y6 c3 [- v4 D 压器电压调节范围和系统时钟频率。 $ E. r0 K( @9 B3 U/ M2 V ![]() Flash 支持低功耗读取模式(LPM)。等待状态(WS)的数量取决于 LPM:; s- y: L3 L* X • LPM = 0:多达 4 个 WS(取决于电源电压和频率) • LPM=1(降低功耗并增加延迟):高达 15WS(具体取决于电源电压和频率) ![]() 6 `" P8 F" M2 g9 u% o 3.STM32U575/585 超低功耗特点! ~' |+ M H2 k% l% U" V) C0 s, e 3.1 低功耗模式( e& L! t: ~7 P* B STM32U575/585 微控制器实现了多种不同的功耗模式。默认情况下,系统复位或上电复位后,MCU 进入运行模 式。系统提供了多个低功耗模式,可在 CPU 不需要运行时(例如等待外部事件时)节省功耗。由用户选择具体的, \9 `; r+ c2 J0 C 模式,以在低功耗、短启动时间和可用唤醒源之间寻求最佳平衡。如需更详细信息,请参考[1]。' {. q, n4 p: o7 Q7 S) C0 E( W+ z 3.1.1 睡眠模式 CPU 时钟关闭,包括 Cortex-M33 内核(例如 NVIC、SysTick 等)在内的所有外设都可以运行,并在发生中断或3 w! r5 K" P7 @( r$ ^% p 事件时唤醒 CPU。* ^! ~! z7 J t2 E 4 X. ?' m, Z" s 3.1.2 停机模式 停机模式基于 Cortex-M33 深度睡眠模式与外设时钟门控的组合。核心域中的所有时钟均停止。禁用 PLL、MSIS、 m0 R) o( r1 K& S$ u3 P* P; M MSIK、HSI16 和 HSE 振荡器,如果外设请求,则可以在停机 0、停机 1、或停机 2 模式下启用 MSIS、MSIK、9 L* Z, D6 o* B& w4 T+ a4 i O HSI16。 停机 0 和停机 1 提供最大数量的活动外设和唤醒源,相比停机 2,其唤醒时间更短,但功耗较高。在停机 2 和停机1 L/ y5 X" P# U" @$ r+ Y a 3 模式下,核心域的大部分处于低漏电模式。 在从停机模式退出时,系统时钟可以是 MSIS(最高 24 MHz)或 HSI16,具体取决于软件配置。 低功耗后台自主模式(LPBAM) 一些外设是自主的,可以在需要时通过请求其内核时钟(最高 24MHz 的 MSIK,或 HSI16)及其总线(APB 或 AHB)而在停机 0、停机 1、或停机 2 模式下运行,以便与 DMA(GPDMA1 或 LPDMA1,取决于外设和功耗模 式)传输数据。 3.1.3 待机模式 待机模式实现在保留欠压复位功能时的最低功耗:关闭内部调压器,从而关闭核心域。PLL、MSI(MSIS 和; p* z. E- b4 M7 @2 ` MSIK)RC、HSI16 RC 和 HSE 晶振也会关闭。RTC 可保持激活状态。可选择保留 8、56 或 64 KB 的 SRAM2。 可以施加内部上拉或下拉来保持 I/O 电平。# e+ k& p* ]# `7 r 唤醒后的系统时钟为 MSIS,最高 4MHz。 ! L5 z5 [. E2 v6 s/ y" @, O 3.1.4 关断模式9 E1 ]7 m) t4 _ 关断模式下功耗达到最低。该模式基于深度睡眠模式,其中调压器被禁用。因此核心域断电。通过关闭内部稳压8 D R7 D* ~$ M7 k 器,以及禁用耗电监控,该模式可实现最低电流消耗。借助某一个(共五个)唤醒引脚或复位引脚,能够从该模式 唤醒。由低速外部振荡器(LSE)定时的 RTC 在此模式下也是起作用的,具有唤醒功能。( k% `- Z/ Z% k6 ] 文档[1]的“功耗模式”部分中的“低功耗模式总结”表总结了每种模式的可用特性,并提供了电流消耗的指示。7 \2 c2 J7 ` V. m! D 0 B; q; z3 V# A3 B7 U0 H 3.2 功耗优化. Z9 ~7 J! Q! V8 ~2 s7 V/ o4 ^ 3.2.1 ICACHE 处于运行模式% J: x( G& k( |2 e* J2 f ICACHE 通过从内部 ICACHE 获取指令来降低功耗。在大多数情况下,采用较低性能配置文件和严格的低功耗限制 的应用程序可能会从配置为直接映射(ICACHE_1-way)的 ICACHE 的较低功耗而受益。 这种单路高速缓存配置是通过在 ICACHE_CR 中编程 WAYSEL=0 实现的。 / H5 C" r6 [' y$ T: Z 3.2.2 运行和睡眠模式下的 Flash( o" Y5 g5 o! R. ^0 l# h0 x8 ? STM32U575/585 Flash 包括主存储器块,该主存储器块由两个 1 MB 的存储区(bank)组成,每个 bank 包含 128 个 8 KB 的页面。当 MCU 处于运行和睡眠模式时,这一结构在专用模式下的功耗方面得到了优化。0 D2 p3 @- K6 m, Q2 L! O+ o 为了降低运行和睡眠模式下的功耗,可以根据所使用的存储区,通过设置 FLASH_ACR 中的 PDREQ1 或 PDREQ24 J7 b' u; o- c- u1 S* ^ 独立地将每个存储区置于掉电模式。$ z8 H/ {: P: s9 i2 N2 J Flash 支持低功耗读取模式,通过在 FLASH_ACR 中编程 LPM=1 来降低功耗。 : s C/ f( y: N+ e M( J# v ) F; i6 C; M, T4 d 提示 预取往往会以额外的 Flash 存取为代价提升代码执行性能。然而,对于大多数应用程序,预取开启时的电源效率2 v& T1 Y# q6 B2 }7 R0 u$ ~1 L 会更好。3 M# h' e3 Y/ b) v2 o 6 E u4 H! f3 \9 k- \* L 3.2.3 电源控制优化3 j" h0 p( o) z9 R6 U9 U7 [ ~' n 在待机模式下,可以将 BOR 配置为不连续模式(超低功耗模式),通过将 PWR_CR 中的 ULPMEN 位设置为 1 来 进一步降低电流消耗。' `# J# ~0 R" e9 U! l1 {& D 为降低运行、睡眠或任何低功耗模式下的功耗,建议从 LDO 切换到 SMPS。 提示 • SMPS 电源引脚仅在具有 SMPS 降压转换器选项的特定封装上可用。 • 可以动态完成 SMPS 到 LDO 和 LDO 到 SMPS 的切换。. L+ ^. R$ L4 D# U4 D 3.2.4 低功耗模式下的 RCC 为了维持输出时钟精度,MSI 偏置默认为连续模式。当调压器处于 Range 4 中并且设备处于停机 1 或停机 2 模式 时,在进入低功耗模式之前在 RCC_ICSCR1 中设置 MSIBIAS 可降低 MSI 功耗。) Y3 k( e4 C9 J! Z, j1 ` 在进入低功耗模式之前,建议选择 HSI16 或 MSIS(16 或 24MHz)作为唤醒源,以缩短唤醒时间,并减少唤醒期5 S, C: b" r/ U' M- _ 间损失的能量。若使用 24 MHz,则须为 SRAM 读访问配置一个等待 状态延迟,这会影响代码执行性能。然后须在 1 个 SRAM 等待状态下使用 24 MHz 和使用 16 MHz 作为系统时钟之间对该性能进行评估。 提示 停机模式期间或从停机模式唤醒时的 MSIS 频率与进入停机模式之前频率相同。如果使用 MSIS 在运行模式下馈 送 PLL,则由于 PLL 输入时钟频率限制使 MSIS 在 4 MHz 到 16 MHz 之间。此时建议关闭 PLL 并在进入停机模 式之前将 MSIS 配置为高频(如果使用 MSIS 作为唤醒时钟)。& x/ h8 F5 g0 T5 R1 } 必须通过清零外设自身的使能位来禁用无法在停机 2 模式下使能的所有外设,或者通过配置 RCC 寄存器 使其处于 复位状态。 对于每个时钟源来说,在未使用时都可单独开启或者关闭,以降低功耗。 " E+ u, J( r5 Z+ j& X4 ^+ `* X 3.2.5 低功耗模式下的 I/O 状态 如需更详细信息,请参考[3]。0 B- ?& Z9 @! k' X; d # A2 R. m+ n: i. f" T' x* A 配置未使用的 GPIO* v c& X" y" J7 f1 F& V& M GPIO 始终有一个输入通道,可以是数字或模拟通道。如果不需要读取 GPIO 数据,则优先配置为模拟输入。这节 省了输入施密特触发器的消耗。 + I" y0 h# y) @, I8 j1 p- L, j2 t 禁用 GPIO 寄存器时钟% F: C. A/ \) O- h4 v) S. G 如果某个 GPIO 组长时间不需要使用,请使用 HAL_RCC_GPIOx_CLK_DISABLE()函数禁用其时钟。 $ s% V# E* [1 X: i1 R- X7 W* O/ w 进入低功耗模式时配置 GPIO 在睡眠、停机 0、停机 1 或停机 2 模式下,所有 I/O 引脚保持与运行模式中相同的状态。对于输出,根据外部组件( R9 `& F/ u) v+ \ 所需的电平驱动合适的电平。! i- \# D* k) D) b9 X7 w/ n9 c 在停机 3、待机或关断模式下,I/O 默认处于浮动状态。根据外部组件所需的电平施加上拉或下拉。应认识到,在退 出关断模式时不会施加该上拉/下拉,直到固件配置 GPIO 为止。6 A, [/ Q* `# R- `; D |2 r / R9 R; ]8 J/ A4 s1 w) ? % M' g% p, f4 A, I4 F3 o+ Q 提示 在一些应用中,为了进一步降低停机模式下的功耗,并为了获得更高的电阻值精度,建议使用外部上拉而不是内 部上拉。 * [5 ?2 } m* U. r 3.2.6 内部 SRAM STM32U575/585 器件嵌入了五个 SRAM,每个都具有特定的功能:SRAM1、SRAM2、SRAM3 为主 SRAM。 SRAM4 在 SRAM 中用于停机 2 模式下的外设低功耗后台自主模式(LPBAM)。9 e! J; ^- ~, f4 l* O( ? 保留所有 SRAM 和寄存器内容,但 SRAM 可全部或部分关闭,以便进一步降低功耗。这些 SRAM 由多个可以关闭 的块组成:; G/ w! z9 S$ L# D • 运行模式 要降低运行模式下的功耗,应通过在 PWR_CR1 中编程 SRAMxPD 来关闭所有 SRAM。 ) ~5 d! Z4 u4 p$ y. n3 }% r • 停机模式 该模式可实现最低功耗,同时保持低功耗调压器供电的 SRAM 和寄存器的内容。停机 3 是具有完全保留的最4 Q1 a3 I$ { a6 J% b 低功耗模式。为了进一步优化功耗,建议如下: – 通过在 PWR_CR2 中编程 SRAMxPDSy = 1 来关闭未使用的 SRAM: ◦ SRAM1, SRAM3, SRAM4 ◦ DCACHE1、DMA2D、FDCAN、FMAC、PKA(如可用)和 USB 的 SRAM – 根据应用数据大小,通过清除 PWR_CR2 中的 SRAMPDS1 和/或 SRAMPDS2 位来保留 SRAM2 第 1 @% w a+ \9 t, X, f5 V% `) _9 I 页和/或第 2 页。6 A5 H3 E. |8 C7 |6 ^0 Y • 待机模式5 k# m, {5 {# G& @ 进入待机模式后,除备份域和待机电路中的寄存器和备份 SRAM(2 KB)外,其余 SRAM 和寄存器的内容都" H' [3 V0 R W" m c 将丢失。通过在 PWR_CR1 中设置由低功耗调压器供电的 RRSB1 和/或 RRSB2,SRAM2 第 1 页(8 KB)或, u; ~; j1 y# y 第 2 页(56 KB)或两页都可以在待机模式保持(在 RAM2 保持模式下待机)。, F6 E$ |# o }6 @# r2 U7 W9 E 6 K9 P* X5 o0 _- a8 @ 3.2.7 运行和停机模式下的外设时钟门控 STM32U575/585 器件支持关闭 AHB/APB 时钟的功能,以进一步降低功耗。 未使用任何 AHB/APB 外设并且其时钟被禁用时,会出现以下情况: • 当在 RCC_CFGR2 中设置 AHB1DIS = 1 时,AHB1 外设的所有时钟都关闭( BKPSRAM、DCACHE1、 FLASH、ICACHE 和 SRAM1 除外)。 • 当在 RCC_CFGR2 中设置 AHB2DIS = 1 时,来自 RCC_AHB2ENR1 的 AHB2 外设的所有时钟都关闭 (SRAM2 和 SRAM3 除外)。) Z2 s0 [' K; |* N • 当在 RCC_CFGR3 中设置 AHB3DIS = 1 时,AHB3 外设的所有时钟都关闭(SRAM4 除外)。 • 当在 RCC_CFGR2 中设置 APB1DIS = APB2DIS = 1 且在 RCC_CFGR3 中设置 APB3DIS = 1 时,APB1/2/3 外设的所有时钟都关闭。 当启用外设时,其时钟可在器件处于休眠模式时通过清除 RCC_AHBxSMENR 和 RCC_APBxSMENR 中的外设. M `1 t) ^' C SMEN 位而自动关闭。外设的 EN 位和 SMEN 位均须设置为 1,以便在休眠模式下保持时钟开启。 外设的 SMEN 位还用于根据外设请求在停机 0 和停机 1 模式下允许外设提供时钟。当外设请求时钟时,该时钟将 分配给所有启用的外设。因此,如果在停机模式下未使用外设,则须在进入停机模式之前清除 SMEN 位。 ]; B% n1 s$ V% |7 J + u% d+ S- `5 ~# p4 `8 j, J+ [ " c& E/ g: b, { Y1 ] Caution: 外设的 SMEN 位必须设置成允许产生能够从停机模式唤醒器件的中断。 3.3 使用 LPBAM 优化外设功耗4 X7 e5 ^8 t: u$ t6 Y STM32U575/585 器件支持低功耗后台自主模式(LPBAM),使外设能够在停机 0、停机 1 和停机 2 模式(无任何 \+ B9 s) b# T$ a 软件运行)下工作并保持自主。 由于外设自身的独立时钟(称为内核时钟)请求性能,此功能在停机模式下可用。该内核时钟在有外设请求时自动 打开,并在无外设请求时自动关闭。如需更详细信息,请参考[1]。 8 y) N4 c- R% r. U6 p. R: c: E 3.3.1 支持 LPBAM 的外设 下表列出了支持 LPBAM 的所有 STM32U575/585 外设。 ![]() " w- G. ?1 g3 R9 e t8 l" P0 L 3.3.2 主要用例$ ^! S: j. o3 u7 v8 x 以下是可以留在停机模式下完成的用例示例(有关更多详细信息,请参见文档[4]):3 }( u& p! O: S2 Y5 H e • 由低功耗定时器(或任何其他触发器)触发的 ADC 或 DAC 转换, v, u, }3 r, U8 \1 | • 音频数字滤波器数据传输到 SRAM 中:检测到声音活动时从停机唤醒 • I2C/SPI 从设备传输、UART/LPUART 接收:在外设传输结束时或在 DMA 缓冲区事件时唤醒 • 由 LPTIM 触发器触发的(例如传感器周期性读取)I2C/SPI 主设备传输,UART/LPUART 传输:在外设传输$ a) x* i5 h+ Y3 W* h2 v- ]6 t9 g 结束时或在 DMA 缓冲区事件时唤醒4 g: t# ] j I! q- a0 X6 I8 k • 外设之间的桥。例如:通信外设传输的 ADC 转换数据 • 从 SRAM 到另一个 SRAM 的数据传输 D: U& H: i+ c' ~ ' ^( I$ w- R2 C% S 4 低功耗模式选择方法7 w* }3 v' X; L( b: m 考虑一个简化的应用模型,其中应用每隔 Tperiod 唤醒一次,始终执行一些相同操作并将指令数视为常数(无等待循# l. u7 d; x8 e' c0 a' z 环,无数据依赖)。然后可以进行以下近似计算: • PROCESS 阶段持续时间(Tprocess)可由每个阶段要执行的时钟周期次数(NOC)来定义。将 FCLK 定义为 CPU 系统时钟频率,PROCESS 阶段的持续时间等于 TPROCESS = NOC / FCLK。此阶段的平均电流消耗等于3 G7 E+ A! i: Y# b3 J Iprocess。 • INACTIVE 阶段的持续时间为 TPERIOD - TPROCESS,其平均电流消耗为 IINACTIVE。 " ], c% A7 q8 k" J$ @; a' L ![]() 4.1 PROCESS 阶段 根据处理要求(DMIPS),可以使用下列不同运行模式中的某一种: • 具有 Range 1 电压的运行模式,在 160 MHz 运行时最大可达 240 DMIPS! ?# Y3 @) B3 Y3 ]% {/ ?: q S8 t • 具有 Range 2 电压的运行模式,在 110 MHz 运行时最大可达 165 DMIPS • 具有 Range 3 电压的运行模式,在 55 MHz 运行时最大可达 82.5 DMIPS8 q% A* e: a6 |/ T% X# |% A- Y3 m2 | • 具有 Range 4 电压的运行模式,在 25 MHz 运行时最大可达 37.5 DMIPS 选择频率时另一个需要考虑的参数是支持相关外设约束(如有)的能力。) a7 [& u& S. I6 _1 x' M" i1 M# x- w " s7 H$ C S$ f: N: x" n 4.2 INACTIVE 阶段9 S$ a% ~- s4 g! [2 d STM32U575/585 期间提供了可用于 INACTIVE 阶段的不同低功耗模式: • 睡眠' |4 Q. R5 @6 V& S • 停机 0(主调压器开启) • 停机 1(具有低功耗稳压器)' e* t) W8 Y! L9 u; z+ g • 停机 2(具有低功耗稳压器)1 S N& x/ G2 [0 m x2 l1 W& O • 停机 3(具有低功耗稳压器)8 W* H: f& W+ o, z • 待机(具有 RTC 和 SRAM2 保留选项)0 y- C- p4 Q( k) W7 b7 i* A2 B- Z0 | • 关断(使用 RTC 作为选项) 根据唤醒源和睡眠周期持续时间,可选择下述某一种模式:$ i! s! o$ W8 h t/ c$ y • 睡眠:如果反应性是关键参数(此时唤醒时间仅为 8 个系统时钟周期) • 停机 0:当唤醒时间至关重要时(如果程序位于 Flash 中,则<2.5μs) • 停机 1:如果有多个外设需保持唤醒且系统有多种唤醒源(此时应用必须能够容许约 13 μs 的从 Flash 唤醒的. ^6 O; v# P% x/ [ 时间) • 停机 2:如果有少数外设需保持唤醒且能产生唤醒事件,如 DMA 传输完成、LPUART/SPI/I2C 传输事件、通. ]( b9 j8 ~# f1 r0 ~4 F 过 SDF 语音检测、ADC 模拟看门狗(此时应用须能够容许约 20 µs 的从 Flash 唤醒的时间)& E/ i1 ^! Y1 |5 A • 停机 3:如果除 RTC 之外无其他外设需要在保留所有 SRAM 的情况下保持唤醒,在 FSTEN = 0 时从 Flash 唤醒的时间为 66.5 µs • 待机:如果除 RTC 之外无其他外设需要保持唤醒,并且需要保留不超过 64 KB 的 SRAM2(此时应用须容许0 K/ b1 d7 ~1 I# G: I' S! H 在 MSIS = 4 MHz 且 FSTEN = 0 时从 Flash 唤醒的时间约为 64.5 μs), m; s1 r3 A) A$ Q • 关断:如果只有 RTC 和备份寄存需要保持唤醒(此时应用须容许在 MSIS = 4 MHz 时约 610 μs 的唤醒时 间)2 {; O$ ^/ F9 v$ h) Y 提示 唤醒时间取决于代码位置(Flash)、系统时钟源和频率。详细情况请参考[2]。上述从停机唤醒的图形对应于 246 @/ i b& {8 ]$ g8 T' F MHz 或 4 MHz 时的 MSIS 且代码在 Flash 中。为了缩短唤醒时间,建议在 PWR_CR2 中设置 FLASHFWU = 1 且/ }2 D* J* Y9 [9 B) n3 N SRAM4FWU = 1。% t) {$ z$ _, y0 h3 W 1 Q8 p: P3 U3 h H( L. u4 ] 4.3 睡眠模式选择 以下数值结果基于从文档[2]中提取的 25°C 时的典型规格值。) J" |3 U% s& Q/ k9 r+ b 针对 RTC 处于 INACTIVE 阶段的不同选择的低功耗模式(睡眠、停机 1 、停机 2、停机 3、具有 RTC 和 SRAM2 保留功能的待机、待机和关断),下图给出了作为主电源(VDD)函数的理论功耗。+ _" @3 u$ i* @1 ^* `- D r 1 c k6 P4 V# _& t% R ![]() ![]() 前面的图表明,对于需要保留一些数据的应用,待机模式可实现最佳能耗,而停机 3 模式是保留所有 SRAM 的最3 W9 q5 v4 q2 W+ x, S 低功耗模式。如图 7 所示,使用 SMPS 将能耗降至一半。 丢弃了关机模式(虚线),因为该模式无法为此类应用提供足够的数据保持能力。 低功耗模式选择不只是由总体功耗决定的,还与连接到该应用的其他唤醒考虑有关。 图 6 而且图 7 表明,相比于 待机,以少量额外功耗为代价,停机 2 和停机 3 模式针对唤醒的设置更加强大、简单和快速(无需外设重新初始 化) 6 f" l0 L% C9 w; e/ Y& P 4.4 低功耗模式选择0 K* Z/ F7 ^4 ^) m; B 对于实际应用,根据唤醒周期,可使用下面的准则: • 如果唤醒周期长于几十 ms,则使用待机模式实现,可具有更好的功耗性能。 • 如果唤醒周期较短,则使用停机 2 或停机 3 模式实施效果则更好。' s" s( E3 o# S# U, O0 r • 如果温度较高,则最好使用待机模式。 低功耗模式选择不仅依赖于功耗,还与唤醒时间要求(系统反应性)和数据保持要求有关。 如果处理可适应低于 24 MHz 的频率,则最优点如下:% A {) V) C) c2 }* ~3 l4 }# a. M • 待机或停机 3 模式* m/ F+ z! n9 I& w 在待机模式下,最佳点是唤醒转换时间长于 66μs、保留区低于 64KB SRAM + 2KB BKPSRAM。在停机 3 模 式下,可以保留所有 SRAM。 + y! j6 p+ I( R. l! q2 h • 停机 2 模式 最佳点是唤醒转换时间长于 20μs 并且保留区大于 66KB (64KB SRAM2 + 2KB BKPSRAM)保留。* v, I; m( J& ~" C0 ? 如果唤醒周期长于几秒且无需保留内存,则关机模式下会有最好的功耗性能。这种情况下唤醒时间典型值为 610 µs。( ]1 Z0 s5 F& P( |6 _7 m3 q 4.5 转换的影响( K i& ^& |, s+ y1 S 为了完成这项研究,必须考虑在转换阶段(唤醒和停用)消耗的能量。6 R3 ` X+ W- p" W t4 Y* ` 根据文档[2],在 VDD=3.0V 时,使用 SMPS,离开低功耗模式时所消耗的能量大致为:% I( t+ [8 K& e* L% Y • 1.1 nAs,对于从停机 1 到运行模式的转换(MSI = 24 MHz) • 0.57 nAs,对于从停机 2 到运行模式的转换(MSI = 24 MHz) • 4.54 nAs,对于从停机 3 到运行模式的转换(MSI = 24 MHz)# l4 }' x5 Q4 I7 a • 21.22 nAs,对于从待机到运行模式的转换(MSI = 4 MHz)8 Y/ d% c; t! B& N+ I K+ c3 _8 w • 457.29 nAs,对于从关断到运行模式的转换(MSI = 4 MHz)& @6 `" q+ y" m2 W! ` 5 ULPMark-CP 用例优化 5.1 ULPMark-CP 描述 ULPMark-内核配置文件(CP)基准侧重于 MCU 内核,特别是睡眠中的能源成本,以及与激活模式之间的转换。1 r* R. G; Y+ w' C 该基准使用一组可在 8 位、16 位和 32 位微控制器之间移植的通用工作负载。内核配置文件以 1 秒的占空比运行, 将这些工作负载与延长的不活动时间相结合,从而启用微控制器低功耗模式。 在测试的激活部分,基准测试执行以下操作:) q I/ t' }7 H k9 u • 生成 20 个 GPIO 脉冲。 • 执行 8 位线性插值。* b4 E' e' @; y6 g9 j • 执行 16 位积分(过滤器)。: Y" P+ V; f( E, e( G4 h • 计算 7 段 LCD 二进制转换(保存状态)。 • 在字符串中搜索子字符串。 • 执行小型冒泡排序。 • 根据输入和先前状态置换字符串的位。7 S& V: Z% W, V 下图显示了 ULPMark-CP 基准在长时间睡眠中运行,随后短暂唤醒以执行最少的处理,模拟睡眠边缘节点来节省能 源(更多详细信息,请参见[5])。 7 G! L1 G4 C7 W0 o- j( v ![]() 5.2 应用约束条件) U- M; f" _; F0 X% y; X ULPMark-CP 规定了下列约束条件: • 该应用每秒唤醒一次,基于精确 RTC 在一组数据上执行某些操作。5 G5 o& m# Z4 k1 t1 T" | • 从一个处理周期到下一个处理周期时,数据需要保持。这要求在 INACTIVE 阶段中能够保持数据。; `6 }$ r- H, V9 s • 利用编译器最强优化选项进行编译时,应用所需的处理周期数约为每秒 10000 周期。 对于系统反应性不作特别约束,以便服务外部事件或 RTC 周期中断。+ L0 M) j- v- p; H/ e( p 5.3 PROCESS 阶段优化. l0 A) D+ g8 F0 m) `* {/ X 基准测试的激活部分仅运行总运行时间的约 3%,因此用户可以使用内部 MSIS,使用对应于 16 MHz 电压调节范围( x$ v) {+ n& T; n2 k9 J 4 的功率最佳点。在 16 MHz 标称频率下使用 MSIS 时,其功耗低于使用 PLL 的任何其他解决方案。 ' _' S% I4 K3 v4 A% b, ~- T + k! q# w. b8 X 为了进一步优化激活阶段的功耗,可以应用以下步骤:# T1 j/ {0 x- k2 l+ L# K. Z 1. 在运行模式下关闭 SRAM1、SRAM2、SRAM3、SRAM4。) g$ v, r9 A( K" t 2. 将系统时钟配置为 16 MHZ 的 MSIS 电压调节范围 4。" w0 ~- P* [& t2 R 3. 将数据置于 BKPSRAM。6 U5 q4 h9 V: @: L, d 4. 禁用未使用的 AHB/APB 时钟。- T; e+ u6 ?7 m 5. 将所有 GPIO 引脚置于模拟模式。 6. 关闭 Flash 存储区 2。% U- @! u, g% R# K! r; c2 l+ I 7. 用 Flash 低功耗模式。 8. 配置编译器优化(高速,无大小限制)。 下图显示了处于激活阶段的 ULPMark-CP。从唤醒到进入低‑功耗模式大约需要 156µs,在 16 MHz 系统时钟 MSIS 的运行模式下消耗 550 µA 电流。% K- T* V2 ?$ E; w, X0 f . `6 ~5 [; y# ~0 X3 E ![]() 0 i2 @/ [5 b! A7 [: g* \ 5.4 INACTIVE 阶段优化 ULPBench-CP 基准要求从一次运行到下一次运行时能够在低功耗模式下保持数据变量无变化。因此,不可使用关, F* [4 [/ O- E) O# m3 s 机模式,因为该模式无法为该应用提供足够的数据保持能力。, F: V3 T7 V* G% Z2 _3 E9 T/ z$ |9 M# e 停机 3 模式可在保留 8 KB SRAM2 或 2 KB BKPSRAM 以及最短唤醒时间的条件下使用。然而,最节能的解决方案 是使用待机模式并且具有 RTC 和 8 KB SRAM2 或 2 KB BKPSRAM 数据保持。 为了进一步优化 INACTIVE 阶段的功耗,可以应用以下步骤:* w9 P: e, h4 V) Y, H0 F 1. 启用 SMPS 调压器。+ O( ~4 q: _ k0 R$ @# a 2. 启用 ULPMEN 位。4 ^6 _# g. ~* M' P* q! \ x. u 3. 在停机 3 模式下关闭未使用的 SRAM。 4. 禁用 AHB/APB 外设的所有时钟(RTC 的 AHB3/APB3 除外)。5 W& b9 d. N; z' `% N4 t0 {3 [ 下图显示了待机模式下处于 INACTIVE 阶段的 ULPMark-CP,其中平均电流消耗为 1.34µA。 # _! Q, t, z7 i2 b/ Q) ]! u! e5 ^ ![]() 下图显示了停机 3 模式下处于 INACTIVE 阶段的 ULPMark-CP,其中平均电流消耗为 2.97µA。 5 ]% [) o. c# f( A" g7 | ![]() 在 ULPBench 基准的情况下,唤醒周期为 1 秒,处理载荷约为每秒 10 K 循环时,最佳选择是在 INACTIVE 阶段使, P8 I" _& E% _/ l. K2 `! ^9 V& Q 用待机模式,在 PROCESS 阶段关联地使用 16 MHz(来自 MSIS)下电压调节 Range 4 模式。$ @1 z7 y4 g5 P1 L 2 _* E7 y2 ^) J# Q5 V' u. w" B 5.5 STM32U575/585 测量结果 下图显示了在 PROCESS 阶段使用不同系统时钟频率进行的 ULPMark-CP 得分测量,其中非活动阶段使用具有, \/ p% P) ?7 _1 w9 S# M8 V: H BKPSRAM 保留和 RTC 功能的待机模式。' u3 g5 x" i# e/ X ![]() 3 z' T- e, o8 G( p6 A 结果提供了不同的时钟配置:对于低于 24MHz 的频率,使用 MSI(因为从待机模式唤醒时会自动启动)。 如在理论研究中已经看到的,使用电压调节范围 4 在 16 MHz 时,使用 MSIS 实现最佳结果。0 [. U- W" t; Q0 z 5.6 电压范围内的性能演变 EEMBC 定义了 3.0V 的基础测试默认值,但该电压并不代表电池供电的低功耗应用。使用 LDO 调压器时,与保持 在 3.0V 相比,移至较低电压时的功率增益明显。相反,当使用 SMPS 调压器增加 VDD 时,功耗降低。这就是为什 么 EEMBC 引入了用户定义电压的比较,让制造商选择理想的工作条件。 下图显示了不同电压下的 ULPMark-CP 得分测量。 以上曲线对应于 16MHz MSIS 模式下的电压调节范围 4。其中清楚地显示了电压降低的优势。 6 结论9 t j }$ d S' a 本应用笔记介绍了 STM32U575/585 微控制器的超低功耗特点。它们显示了此微控制器系列在嵌入式系统中降低电( B% U7 ]$ J6 d- X 流消耗方面所具有的优势。无论何种应用,这些器件均可在优化性能和功耗方面提供多种选择。+ g! G* c- R+ C( ?# O' J, V2 O& ] 基于实验和定量结果,本文档提供了相关指南,帮助根据终端用户应用的特点和约束条件,快速选择最佳运行和低 功耗模式。 7 F/ ~" p/ ^/ b2 \8 d% f |
STM32U5低功耗测试
STM32怎么选型
内存配置的艺术:STM32为嵌入式系统高端UI优化RAM和闪存的三大策略
STM32U5 系列使用 LPBAM 进行功耗优化
【STM32U545】实现CAN数据收发
【我的STM32U5 项目秀】+04-MPU6050在STM32U5上的移植
实战经验 | 基于 STM32U5 创建 USBx_CustomHID 通信
STM32U5 x E-BIKE,记录你的骑行多巴胺
基于STM32U5系列TIMER+DMA+DAC应用经验分享
实战经验 | 基于 STM32U5 片内温度传感器正确测算温度