4. MCX电源管理单元(PMU)与稳压器配置
MCX系列MCU内部集成了一个可编程电源管理单元(PMU),它把外部单一供电(典型为1.8V或3.3V)转换成内核、外设、SRAM、模拟模块等不同电压域所需的电源,并在运行、睡眠、深度睡眠等模式下动态调整稳压器的工作状态。理解PMU与稳压器的配置逻辑,是低功耗设计从"能跑"走向"省电"的关键一步。
一、PMU的组成与电压域划分
MCX的PMU并不是一个单一模块,而是由稳压器、电压域开关、模式控制器和状态寄存器共同构成的子系统。典型结构包含:
- 核心稳压器:为CPU内核(CORE域)供电,支持LDO模式和DC-DC模式两种工作方式。
- SRAM/外设域:通常与内核同压或略低,部分MCX型号支持独立门控。
- Always-On域(AON):包含RTC、唤醒逻辑、备份寄存器等,在深度睡眠下仍需供电。
- 模拟域:ADC、DAC、比较器、温度传感器等,对电源纹波敏感,通常由独立LDO供电。
各电压域之间通过PMU内部的开关和电平转换器连接。当某个域被关闭时,跨域信号必须经过隔离单元,避免悬空输入导致漏电。这是配置低功耗模式时最容易忽略的细节。
二、LDO与DC-DC的工作模式与选择
MCX核心稳压器支持两种工作模式,二者在效率、纹波和响应速度上各有取舍。
LDO模式:线性稳压器通过调整管压降来稳定输出电压。优点是输出纹波极低、瞬态响应快、无需外部电感;缺点是效率近似等于Vout/Vin。例如3.3V输入、1.2V内核电压时,理论效率仅约36%,多余能量全部以热量耗散。LDO适合对噪声敏感的模拟采集场景,或作为DC-DC启动前的过渡模式。
DC-DC模式:开关稳压器通过电感储能和开关管交替导通实现降压。效率通常可达85%~92%,显著降低动态功耗。代价是输出纹波较大(典型10~30mVpp),需要外部电感、电容,且轻载时若进入PFM模式,纹波和噪声会进一步增大。MCX的DC-DC通常支持PWM和PFM自动切换,重载用PWM保证纹波,轻载用PFM保证效率。
选择依据可以归纳为:运行频率高、电流大时优先DC-DC;模拟采样、射频或对纹波敏感时切回LDO;深度睡眠下若内核域关闭,稳压器可进入旁路或低功耗待机。
三、低功耗稳压策略与模式切换
MCX的低功耗策略不是简单地"关掉一切",而是按域分级管理。以典型的Run→Sleep→Deep Sleep→Power Down四级为例:
- Run:所有域上电,稳压器按负载选择LDO或DC-DC,CPU全速运行。
- Sleep:CPU时钟停止,外设和SRAM保持供电,稳压器维持当前模式,唤醒延迟最短(通常几个时钟周期)。
- Deep Sleep:CORE域断电,SRAM可选择性保持,模拟域关闭,AON域维持RTC和唤醒源。稳压器切换到低功耗待机模式,静态电流可降至微安级。
- Power Down:仅AON域供电,所有稳压器关闭或进入旁路,唤醒需要重新上电和初始化,延迟最长但功耗最低。
模式切换时,PMU会按顺序执行:使能隔离单元→关闭域时钟→断开域电源→调整稳压器模式。反向唤醒时顺序相反。若顺序错误,可能出现域间信号冲突或稳压器过冲。
四、电压域切换对功耗与性能的影响
电压域切换的核心矛盾是:降低电压可以平方级降低动态功耗,但会拖慢晶体管开关速度,限制最高主频。
动态功耗公式为 P = C × V² × f。若内核电压从1.2V降到0.9V,理论上动态功耗降至原来的56%;但此时CPU最高频率可能从48MHz降到24MHz。如果任务对时间不敏感,降频降压运行可以大幅省电;如果任务有实时性要求,则需要在电压和频率之间找到平衡点。
MCX通常提供一组预定义的电压-频率档位(VF档位),例如:
| 档位 | 内核电压 | 最高主频 | 典型应用 |
|---|---|---|---|
| 高性能 | 1.2V | 48MHz | 实时控制、高速通信 |
| 平衡 | 1.0V | 24MHz | 一般数据处理 |
| 低功耗 | 0.9V | 12MHz | 传感器轮询、低速采集 |
| 保持 | 0.8V | 4MHz | RTC计时、唤醒监测 |
切换VF档位时,必须先降频再降压,升压时先升压再升频,否则可能因电压不足导致CPU跑飞。PMU内部通常有状态机保证顺序,但软件配置时仍需遵循这一原则。
五、配置示例与观察要点
以下是一段典型的PMU配置代码片段,展示如何切换到低功耗VF档位并进入Deep Sleep:
// 1. 降频至24MHz
CLOCK_SetCoreFreq(24000000);
// 2. 切换稳压器至低功耗档位(0.9V)
PMU_SetCoreVoltage(PMU_VOLT_0V9);
// 3. 配置唤醒源(RTC 1秒中断)
RTC_SetAlarm(1);
// 4. 关闭模拟域和未使用外设
PMU_PowerDownDomain(PMU_DOMAIN_ANALOG);
// 5. 进入Deep Sleep
POWER_EnterDeepSleep(PMU_WAKEUP_RTC);
// 6. 唤醒后恢复电压和频率
PMU_SetCoreVoltage(PMU_VOLT_1V2);
CLOCK_SetCoreFreq(48000000);
配置完成后,可以通过以下方式观察效果:
- 电流测量:在VDD引脚串联电流表或使用板载电流检测,对比Run和Deep Sleep下的静态电流。典型MCX在Deep Sleep下可降至2~10μA(不含外设)。
- 唤醒时间:用GPIO翻转配合示波器测量从唤醒源触发到CPU执行第一条指令的时间,判断是否满足实时性要求。
- 稳压器状态寄存器:读取PMU状态寄存器,确认当前稳压器模式、各域上电状态和隔离单元状态,排查异常漏电。
总结来说,MCX的PMU与稳压器配置需要同时考虑效率、纹波、唤醒延迟和电压-频率约束。LDO与DC-DC的选择不是非此即彼,而是根据运行场景动态切换;电压域切换也不是简单的开关操作,而是需要遵循顺序、配合隔离和时钟管理。掌握这些关系后,才能在实际项目中把功耗压到目标水平,同时不牺牲系统可靠性。