引言与用例
本文说明意法半导体(ST)怎么测 STM32U3xx 的 MCU 电流,以及怎么读 STM32U3 功耗示例结果。重点:功耗示例、MCU IDD 测量路径,以及影响低功耗电流的固件选择。
文中电流值是 STM32U3 功耗示例文档里的参考值,方便对比。实际读数取决于板级搭建、跳线、调试状态、供电、固件构建与仪器。外部电流表(含 STM32-LPM01-XN)要按板卡与工具文档串进正确的 MCU IDD 路径。
STM32U3 有多种工作模式,可在性能、唤醒、保持状态与电流之间取舍。典型低功耗优化流程:
- 测量 Run 模式基线
- 选择仍支持所需唤醒源与保持状态的最低功耗模式
- 去掉不必要的时钟、外设、调试保持、SRAM 保持与 RTC 特性
- 在可重复的硬件状态下重新测量稳态低功耗平台期
STM32U3 功耗示例用来把这些选择拆开看。独立示例覆盖 Sleep、Stop、Standby、Shutdown 等;PWR_ModesSelection 更适合相对对比:同一应用里可选多种场景再测。
图表示意
- 图 1. Board Setup
- 表 1. 须记录的测量条件
- 表 2. NUCLEO-U385RG-Q 独立功耗示例参考电流
- 表 3. NUCLEO-U385RG-Q 的 PWR_ModesSelection 参考电流
- 表 4. 各 NUCLEO-U3 板的 PWR_ModesSelection 电流对比
1. 硬件与软件前置条件
- NUCLEO-U385RG-Q(STM32U385RGTxQ)
- 含功耗示例的 STM32U3 固件包
- 电流测量仪器之一:合适电流表 / 功率分析仪 / 按文档串入正确 IDD 路径的 STM32-LPM01-XN
- 用于 PWR_ModesSelection 的串口终端
- 所选示例支持的工具链
相关示例包括:PWR_RUN_SMPS、PWR_SLEEP、PWR_STOP0/1/2/3、PWR_STANDBY、PWR_SHUTDOWN、PWR_ModesSelection。
建议先用 PWR_RUN_SMPS 作为 Run 模式基线,再对比更低功耗模式。
2. 测量搭建
在 MCU IDD 路径上测 MCU 电流。示例文档通常说明:拆除 JP4,将测量仪器串入。若某 RTC Stop 3 示例或板级说明指定 JP5,则按该说明。错误跳线/路径会把板级电路算进或排除,导致误导性数值。
对 STM32-LPM01-XN 等外部仪器,勿假定随意接线即可得到 MCU 电流;须按板卡与工具文档串入文档化的 MCU IDD 路径。
若干低功耗示例不适合在活动调试会话下测量。固件里关掉 debug Stop/Standby 位能压低调试相关电流,但调试器还连着并控着执行时,仍然不够。
并检查板级漏电路径。极低电流测量可能受 ST-LINK 供电状态,以及 MCU 外部供电而 ST-LINK 侧未供电时 PA13 漏电影响。若文档建议将 PA13 配为模拟以降低漏电,须注意可能影响调试器连接。每次测量保持文档化、可重复的硬件状态。
3. 须记录的测量条件
每次记录电流时同步记录表 1 所列条件:板卡与器件、供电电压(本文参考值为 3.3 V)、稳压模式(参考值为 SMPS 使能)、精确示例与场景、测量点(MCU IDD 与跳线)、仪器、调试状态(最终低功耗数据无活动调试)、唤醒源、RTC 状态、SRAM 保持、稳态平台期(与进入/唤醒瞬态分开)、板修订/固件包/工具链构建/温度/采集方法等。
4. 参考电流值及解读
以下为 NUCLEO-U385RG-Q、SMPS 使能、3.3 V 条件下,来自示例文档的参考值;并非直接标称的 STM32-LPM01-XN 实测。用于理解量级与趋势;严格对比须复现相同硬件状态、固件配置与测量路径。
独立示例参考值(表 2)
| 模式 | 参考电流 |
|---|---|
| PWR_RUN_SMPS(Run with SMPS) | 1369 µA |
| PWR_SLEEP(Sleep,SMPS,96 MHz) | 768 µA |
| PWR_STOP0(Range1 -96 MHz) | 209.4 µA |
| PWR_STOP1 | 53.26 µA |
| PWR_STOP2 | 4.43 µA |
| PWR_STOP3 | 2.33 µA |
| PWR_STANDBY | 0.545 µA |
| PWR_SHUTDOWN | 0.523 µA |
这些示例用来理解从 Run → Sleep → Stop → Standby → Shutdown 的电流阶梯。除非固件配置与保持资源相当,否则别拿独立示例和 PWR_ModesSelection 场景硬比。
PWR_ModesSelection 参考值(表 3)
| 场景 | 参考电流 |
|---|---|
| Run, 96 MHz | 1213 µA |
| Run, 48 MHz | 460.8 µA |
| Sleep, 12 MHz | 111.6 µA |
| Stop 1, full SRAM retention | 50.53 µA |
| Stop 1, 8 Kbyte SRAM retention | 43.81 µA |
| Stop 2, full SRAM retention | 4.381 µA |
| Stop 2, 8 Kbyte SRAM retention | 3.737 µA |
| Stop 3, full SRAM retention | 2.108 µA |
| Stop 3, 8 Kbyte SRAM retention | 1.524 µA |
| Standby, 8 Kbyte SRAM + RTC, ULPMEN=1 | 1.03 µA |
| Standby, no SRAM + RTC, ULPMEN=1 | 0.916 µA |
| Standby, no SRAM, no RTC, ULPMEN=1 | 0.395 µA |
| Shutdown with RTC | 0.801 µA |
| Shutdown without RTC | 0.343 µA |
跨板对比(表 4)使用各 NUCLEO-U3 板示例 README 中的 ModesSelection 值(单位 µA)。U345、U366、U385 的 README 用 JP4 IDD 路径;U3A6、U3C5 用 JP5。
表 4. 各 NUCLEO-U3 板的 PWR_ModesSelection 电流对比(µA)
| PWR_ModesSelection 场景 | NUCLEO-U345RC-Q | NUCLEO-U366RET6-Q | NUCLEO-U385RG-Q | NUCLEO-U3C5ZI-Q |
|---|---|---|---|---|
| Run, 96 MHz | 2085 | 2057 | 1213 | 1461 |
| Run, 48 MHz | 773.8 | 781.8 | 460.8 | 538.2 |
| Sleep, 12 MHz | 105.8 | 108.8 | 111.6 | 145.3 |
| Stop 1, full SRAM retention | 54.3 | 59.3 | 50.53 | 65.89 |
| Stop 1, 8 Kbyte SRAM retention | 51.46 | 56.46 | 43.81 | 46.41 |
| Stop 2, full SRAM retention | 5.90 | 6.30 | 4.381 | 3.33 |
| Stop 2, 8 Kbyte SRAM retention | 5.44 | 5.34 | 3.737 | 3.08 |
| Stop 3, full SRAM retention | 2.058 | 1.498 | 2.108 | 1.52 |
| Stop 3, 8 Kbyte SRAM retention | 1.914 | 1.34 | 1.524 | 1.37 |
| Standby, 8 Kbyte SRAM + RTC, ULPMEN=1 | 1.041 | 1.32 | 1.03 | 1.09 |
| Standby, no SRAM + RTC, ULPMEN=1 | 0.88 | 1.15 | 0.916 | 0.85 |
| Standby, no SRAM, no RTC, ULPMEN=1 | 0.446 | 0.64 | 0.395 | 0.42 |
| Shutdown with RTC | 0.823 | 1.1 | 0.801 | 0.82 |
| Shutdown without RTC | 0.38 | 0.634 | 0.343 | 0.35 |
表中三点趋势:
- 降低 Run 频率可显著降低 Run 电流
- 减少 SRAM 保持可降低 Stop/Standby 电流
- 不需要 RTC 计时或 RTC 唤醒时,关闭 RTC 可降低深低功耗电流
5. 分步流程
- 选择示例:先 PWR_RUN_SMPS 建基线,再选更低功耗示例;要在同一应用内对比多场景则用 PWR_ModesSelection。
- 构建并编程;编程后停止活动调试再测最终低功耗。
- 按文档准备 MCU IDD 路径(多数为拆 JP4 串入仪器;若指定 JP5 则从之)。
- 连接电流表/功率分析仪/STM32-LPM01-XN。
- 最终数据时无活动调试:编程后断开调试器,按需复位或上下电。
- 触发低功耗:用户按键示例常用唤醒线 2;RTC 场景用 RTC 唤醒;以所选示例为准。
- ModesSelection:串口 115200 / 8 / 无校验 / 1 停止位 / 无流控,选场景;菜单可选时保持 ST-LINK/VCP 在文档供电状态,但最终测量勿挂活动调试。
- 采集稳态低功耗平台期,勿把建立代码、串口菜单、进入/唤醒瞬态或复位电流一并平均(除非目标是全时段能量)。
- 与同示例同场景参考值对比;分析频率/RTC/SRAM 影响时用 ModesSelection 内的增量;配置未知匹配时勿跨应用妄下结论。
6. 实用优化指导
- 从 Run 基线起步:用 PWR_RUN_SMPS(文档参考为 3.3 V 下 SMPS 使能)。
- 在性能允许时降频:§6.2 写 PWR_ModesSelection 报 1890 µA(96 MHz) 与 775.8 µA(48 MHz);同文表 3(NUCLEO-U385RG-Q)对应行为 1213 µA / 460.8 µA,两处不一致。本稿对照以表 3 为准,§6.2 数字一并保留供核对(疑似笔误,引用时请用实测核对)。若执行时间因降频变化,须测量完整工作负载。
- 挂起周期性唤醒源:进入前 `HAL_SuspendTick()`,再 `HAL_PWR_EnterSLEEPMode` / `HAL_PWR_EnterSTOPMode`(模式与入口指令以所选示例为准)。
- 反初始化仅用于建立的外设:ModesSelection 用 USART1 选菜单后,进入场景前 `USART1_UART_DeInit()`。
- 最终数据无活动调试:可调用 `HAL_DBGMCU_DisableDBGStopMode()` / `DisableDBGStandbyMode()`,但仍须断开活动调试会话。
- 只保持需要的 SRAM:可用 `HAL_PWREx_Disable/EnableRAMsContentStopRetention(...)` 等;仅当唤醒后所需状态落在保持区内。
- 理解 RTC 与 LSE:RTC 场景常 `__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW)`(STM32U385 上配置 RCC_BDCR.LSEDRV 为低驱动);驱动须仍足以可靠起振。
- Standby 中正确使用 ULPMEN:ModesSelection 的 Standby 场景含 ULPMEN=1,进入前 `HAL_PWREx_EnableUltraLowPowerMode()`。ULPMEN 为 PWR_CR1 bit 7;RM0556 中控制 Standby 下 BOR0 超低功耗行为,且仅在选 BOR level 0 时相关。Standby 行是完整场景(RTC、SRAM2 保持、ULPMEN、BOR),不只是“进入 Standby”。
- 关闭不用的供电有效路径与 Stop 内核时钟:如 Disable SRAM2 Standby 保持、SRAM FastWakeUp、VddA/VddIO2/VddUSB、BatteryCharging,以及 `HAL_RCCEx_DisableKernelClkInStop` 对 MSIK/HSI 等,会去掉隐藏电流,也去掉相应功能(如关 VDDA 与模拟外设不兼容等)。
7. 结果异常时先查什么
若测得远高于参考值,优先检查:仪器是否在 MCU IDD 路径;跳线是否正确;调试是否已停止并断开;编程后是否按需复位/上下电;窗口是否排除建立/串口/进入/唤醒瞬态;ST-LINK 供电与 PA13 漏电;RTC/SRAM 是否与对比场景一致;示例与场景是否匹配参考值。
结论
STM32U3 电流同时取决于固件配置和测量搭建。功耗示例是看清频率、Sleep/Stop、SRAM 保持、RTC、Standby、Shutdown、调试状态与外设清理影响的实用办法。
在 NUCLEO-U385RG-Q 上要复现结果:在文档写明的 IDD 路径测 MCU 电流;拿最终数据时不要挂活动调试;稳态平台期和瞬态分开记;只在固件与硬件条件对得上时再比。基线用 PWR_RUN_SMPS,相对对比用 PWR_ModesSelection。
来源:https://community.st.com/stm32-mcus-60/how-to-measure-and-reduce-current-consumption-on-stm32u3xx-devices-using-power-examples-167588
参数以意法半导体官方最新资料为准。
150