2. 电源管理基础与STM32MP电源树

STM32MP1 系列(如 STM32MP157)是一颗面向工业与消费类边缘计算的异构多核处理器,内部同时包含 Cortex-A7 应用核与 Cortex-M4 实时核,并集成 DDR 控制器、GPU、显示接口、多个外设域。这种复杂度决定了它不可能像普通 MCU 那样只靠一根 3.3V 供电,而是需要一棵层次分明、时序受控的“电源树”。理解这棵树,是后续做低功耗设计、休眠唤醒和功耗测量的前提。

一、电源管理的基本概念

电源管理并不是简单地“把电供上”,它包含四个相互关联的维度:供电域划分、电压等级与精度、上电/掉电时序、动态功耗控制。供电域划分决定了哪些模块可以独立断电;电压等级决定了 LDO 或 DCDC 的选型;时序决定了各电源轨的启动先后,否则可能出现 IO 反灌、锁存或启动失败;动态功耗控制则通过 DVFS、时钟门控、电源门控在运行时降低功耗。

在 STM32MP1 中,芯片内部被划分为多个电源域,典型包括:VDD(主数字域,通常 1.2V 或 1.35V)、VDDCORE(内核域,由内部或外部调节器产生)、VDD_DDR(DDR 供电,1.35V/1.5V)、VDDQ_DDR(DDR IO)、VDDA(模拟域,如 ADC、PLL)、VDD_USB、VDD_ETH、VDD_SD 等。每个域对电压精度、纹波、上电斜率都有不同要求。

二、STM32MP1 电源引脚与供电域

以 STM32MP157 为例,其电源引脚大致可分为几类。第一类是核心与 IO 供电:VDD 为 IO 和部分数字逻辑供电,VDDCORE 为内核供电,通常由内部 LDO 或外部 PMIC 提供。第二类是专用外设供电:VDDA 为模拟部分,VDD_USB 为 USB PHY,VDD_ETH 为以太网 PHY,VDD_SD 为 SDMMC 接口。第三类是 DDR 相关:VDD_DDR 与 VDDQ_DDR 分别给 DDR 颗粒和 IO 供电,必须严格匹配 DDR 类型(DDR3L 为 1.35V,DDR3 为 1.5V)。

这些引脚并非可以随意并联。例如 VDDCORE 的电压由芯片内部调节器或外部 PMIC 决定,若外部直接给 1.2V 而内部 LDO 仍使能,就会冲突。VDDA 必须与 VDD 同源或先于 VDD 上电,否则模拟模块可能异常。VDD_DDR 与 VDDQ_DDR 的时序通常要求 VDD_DDR 先于 VDDQ_DDR 或同时建立,具体以数据手册的 Power-up sequence 为准。

STM32MP157 电源树与供电域示意 外部输入 5V / 3.3V PMIC / 外部电源轨 STPMIC1 / 分立 DCDC+LDO Buck1~4 + LDO1~6 VDDCORE 1.2V 内核域 / A7+M4 VDD 3.3V IO / 数字逻辑 VDD_DDR 1.35V DDR3L 颗粒 VDDQ_DDR 1.35V DDR IO VDDA 3.3V ADC / PLL / 模拟 VDD_USB 3.3V USB PHY VDD_ETH 3.3V 以太网 PHY 上电时序要点 1. VDD 先建立 2. VDDCORE 随后 3. VDD_DDR 先于 VDDQ_DDR 4. VDDA 与 VDD 同源或更早 5. 复位释放前 所有轨稳定 注意:IO 反灌 与锁存风险 PWR_ON 信号 控制 PMIC 使能 PWR_GOOD 反馈 给 SoC 复位

三、PMIC 选型与外部电源轨设计

STM32MP1 官方推荐的电源方案是 STPMIC1,它集成了 4 路 Buck 和 6 路 LDO,可通过 I²C 配置输出电压和上电时序,并支持 PWR_ON、PWR_GOOD 等控制信号。选型时需关注几个关键参数:输出电流能力(VDDCORE 通常需要 1A 以上,DDR 需要 1~2A)、电压精度(内核域一般要求 ±3% 以内)、纹波(DDR 和模拟域对纹波敏感)、时序可编程性(是否支持各路独立延时和顺序控制)、静态电流(对低功耗待机至关重要)。

若不用 STPMIC1,也可用分立 DCDC + LDO 组合。例如用 MPQ2143 产生 1.2V 给 VDDCORE,用 TPS62130 产生 1.35V 给 DDR,用 LP5907 产生 3.3V 给 VDDA。此时必须自行设计上电时序,常见做法是用一颗带 PG(Power Good)输出的 DCDC 去使能下一级,或用 MCU 的 GPIO 按顺序拉高各使能脚。下面给出一个典型的分立方案上电顺序示例(参数为教学示例,实际需按数据手册调整):

上电顺序(示例):
1. 5V 输入建立
2. EN_VDD_3V3 拉高 → VDD 3.3V 建立(t=0ms)
3. 延时 2ms → EN_VDDCORE 拉高 → VDDCORE 1.2V 建立(t=2ms)
4. 延时 2ms → EN_DDR 拉高 → VDD_DDR 1.35V 建立(t=4ms)
5. 延时 1ms → EN_DDRQ 拉高 → VDDQ_DDR 1.35V 建立(t=5ms)
6. 延时 1ms → EN_VDDA 拉高 → VDDA 3.3V 建立(t=6ms)
7. 所有 PG 有效后,释放 SoC 复位(t=8ms)

设计外部电源轨时,还要注意去耦电容的布置。每路电源入口应放置 10µF 以上的体电容,每个电源引脚附近放置 100nF 高频去耦,DDR 和模拟域还需额外增加 1µF 和 10nF 组合。PCB 布局上,DCDC 的输入回路面积要小,反馈走线远离电感,模拟域与数字域的地要单点连接。

实用判断:上电后若 SoC 无法启动,先用示波器依次测量 VDD、VDDCORE、VDD_DDR、VDDQ_DDR、VDDA 的上升沿和稳定值。若某路电压偏低或上升过慢,优先检查使能信号时序和负载电流是否超出 PMIC 能力。若复位已释放但串口无输出,再检查 VDDA 是否先于 VDD 建立。

四、供电域与低功耗的关系

STM32MP1 的低功耗模式(如 Stop、Standby、LPLV-Stop)本质上是通过关闭或降低不同供电域来实现的。例如在 Standby 模式下,VDDCORE 可能被降至保持电压,DDR 进入自刷新,大部分外设域断电,仅保留唤醒源(如 RTC、WKUP 引脚)。因此,电源树设计时就要考虑哪些域需要独立控制、哪些域在低功耗下仍需供电。如果 DDR 和 VDDCORE 共用一路 DCDC 且无法单独关断,就无法进入最深休眠。

实际工程中,建议把 VDDCORE、VDD_DDR、VDDQ_DDR、VDDA 分别由独立可控的电源轨提供,至少保证 VDDCORE 和 DDR 可独立调节或关断。这样在调试低功耗时,可以通过 PMIC 的 I²C 接口动态调整电压,或关闭非必要域,测量各模式下的实际电流,从而定位功耗瓶颈。

本节要点回顾:STM32MP1 的电源树由 VDD、VDDCORE、VDD_DDR、VDDQ_DDR、VDDA、VDD_USB、VDD_ETH 等多个供电域组成;PMIC 选型需关注电流、精度、纹波、时序和静态电流;外部电源轨设计必须保证上电顺序正确、去耦充分、低功耗模式下可独立控制。掌握这些,才能为后续的休眠唤醒和功耗优化打下基础。