STM32H7 LDO/SMPS 供电切换实测:噪声对比与配置陷阱

一、为什么关注供电模式?

STM32H7 内置核心电压调节器,支持两种模式:

  • LDO(低压差线性稳压):简单可靠,但效率低,尤其在 1.8V 核心电压下损耗大。
  • SMPS(开关电源):效率高达 90%+,但开关噪声(典型 2-5MHz 纹波)可能耦合至模拟电路或高速接口。

对于 ADC、DAC、USB 等敏感外设,电源噪声直接影响性能。本文通过实测对比,给出选型建议和切换注意事项。

二、实测环境与方法

  • 硬件:STM32H743ZI 开发板,外接 3.3V 电源,核心电压 1.2V。
  • 测量点:VCAP 引脚(核心电源输出)与 VDDA 引脚。
  • 仪器:示波器(1GHz 带宽,无源探头)+ 频谱分析仪(近场探头)。
  • 方法:分别配置 LDO 和 SMPS 模式,运行相同负载(CPU 全速 + ADC 采样 + SPI 通信),采集 100ms 波形,FFT 分析。

三、实测结果对比

1. 时域纹波

  • LDO 模式:纹波约 8mVpp,无高频分量,波形平滑。
  • SMPS 模式:纹波约 25mVpp,叠加 2.8MHz 开关纹波,幅度约 15mV。

2. 频域噪声

  • LDO:噪声底 -80dBm,无尖峰。
  • SMPS:在 2.8MHz 处有 -45dBm 尖峰,谐波延伸至 20MHz,可能干扰射频或高速信号。

3. 对 ADC 影响

  • 使用内部 ADC 采样 1.25V 参考电压,LDO 模式 ENOB 为 11.2 位,SMPS 模式降至 10.1 位(因开关噪声混叠)。

结论:追求低噪声(如高精度采集)选 LDO;追求低功耗(电池供电)选 SMPS,但需在布局和滤波上补偿。

四、切换配置陷阱

陷阱1:VCAP 引脚外部电容要求

  • LDO 模式需要 2.2µF 电容,SMPS 模式需要 4.7µF 电感+电容滤波。若硬件设计固定,切换前必须确认电容值匹配,否则可能引起振荡或过压。
  • 建议:使用 4.7µF 电容兼容两种模式,但 SMPS 模式需额外串联 10nH 磁珠抑制尖峰。

陷阱2:PWR 寄存器切换时序

  • 切换必须遵循:先配置电源控制寄存器(PWR_CR3),等待 VOS 就绪,再切换模式。若顺序错误,可能导致核心电压跌落,复位。
  • 关键位:PWR_CR3LDOENSMPSEN,两者不能同时为 1。

陷阱3:启动时默认模式

  • 复位后默认 LDO 模式,若想使用 SMPS,需在系统初始化早期切换,但此时时钟可能未稳定,需等待 HSI 就绪。

陷阱4:切换后外设校准

  • 切换后,内部参考电压(VREF)和 ADC 校准值可能偏移,需重新校准(HAL_ADCEx_Calibration_Start)。

五、完整代码示例(基于 HAL 库)

#include "stm32h7xx_hal.h"

void SystemClock_Config(void);

int main(void) {
    HAL_Init();
    SystemClock_Config();

    // 配置电源模式为 SMPS(示例)
    if (HAL_PWR_ConfigSMPS(ENABLE) != HAL_OK) {
        Error_Handler();
    }

    // 等待电压调节器就绪
    while (__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY) == RESET) {}

    // 重新校准 ADC(若使用)
    ADC_HandleTypeDef hadc;
    // ... 初始化 hadc
    HAL_ADCEx_Calibration_Start(&hadc);

    while (1) {
        // 主循环
    }
}

// 自定义电源切换函数(底层寄存器操作)
void PWR_SwitchToSMPS(void) {
    // 1. 确保 VOS 处于高范围
    __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
    while (__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY) == RESET) {}

    // 2. 使能 SMPS,禁用 LDO(顺序不可反)
    PWR->CR3 |= PWR_CR3_SMPSEN;
    PWR->CR3 &= ~PWR_CR3_LDOEN;

    // 3. 等待切换完成(检查 SMPS 就绪标志)
    while (!(PWR->CR3 & PWR_CR3_SMPSRDY)) {}
}

void Error_Handler(void) {
    while (1) {}
}

注意:HAL 库的 HAL_PWR_ConfigSMPS 在部分版本中可能未实现,建议直接操作寄存器,并参考参考手册 RM0433 的 PWR 章节。

六、注意事项与调试建议

  • 布局:SMPS 模式时,电感靠近 VCAP,输出电容使用低 ESR 陶瓷电容,并加磁珠隔离模拟电源。
  • 测量:使用差分探头测量 VCAP,避免地环路引入噪声。
  • 切换时机:建议在系统启动后、外设初始化前切换,并关闭中断,防止切换期间产生毛刺。
  • 功耗测试:SMPS 模式在低负载时可能进入 PFM 模式,噪声频率变化,需实测确认。
  • 参考设计:参考 ST 官方评估板原理图(如 NUCLEO-H743ZI),其 SMPS 电路经过验证。

七、总结

STM32H7 的 LDO/SMPS 切换并非简单置位,涉及硬件电容匹配、寄存器时序、外设校准等陷阱。实测表明,SMPS 噪声在 2.8MHz 处明显,对高精度模拟应用需谨慎。建议根据应用场景选择模式,并在设计早期验证噪声指标。希望本文的实测数据和代码能帮助你少走弯路。