第3章 电源管理单元:SMPS与LDO模式切换、供电域管理、BOR与VREFINT配置

电源管理,说白了就是给芯片“喂饭”的艺术。喂多了浪费,喂少了罢工。STM32L4在这方面给了我们不少选择——SMPS还是LDO?VDD和VDDA怎么分?BOR要不要开?这些配置直接影响你的待机电流和唤醒可靠性。

我个人习惯先把电源架构理清楚,再动手配寄存器。不然出了问题,排查起来很痛苦。

3.1 SMPS与LDO模式切换

STM32L4内部集成了两个电压调节器:LDO(低压差线性稳压器)和SMPS(开关模式电源)。它们给内核逻辑供电,但工作方式完全不同。

特性 LDO模式 SMPS模式
效率 较低(约70%~80%) 较高(约85%~95%)
纹波 低(<10mV) 较高(20~50mV)
静态电流 约1μA 约5μA
适用场景 低噪声模拟、RF 电池供电、高负载
外部元件 仅需1个电容 需电感+电容

切换模式通过配置PWR控制寄存器实现。我建议在系统初始化时就确定好,不要在运行时频繁切换——切换过程有短暂电压跌落,容易触发BOR复位。

// 切换到SMPS模式(需外部电感连接在VLX引脚)
HAL_PWR_ConfigSMPS(HAL_PWR_SMPS_ENABLE);

// 切换到LDO模式(默认)
HAL_PWR_ConfigSMPS(HAL_PWR_SMPS_DISABLE);
注意:SMPS模式必须外接4.7μH电感和10μF电容,布局要靠近VLX引脚。我曾经见过一块板子因为电感离芯片太远,SMPS根本起不来,纹波大到直接触发BOR。

3.2 VDD与VDDA供电域管理

STM32L4把供电域分成了VDD(数字域)和VDDA(模拟域)。VDD给CPU、Flash、SRAM供电;VDDA给ADC、DAC、比较器、VREFINT供电。

为什么要分开?你想想看,ADC采样时如果数字电路突然翻转,VDD上的噪声会直接耦合到模拟结果里。VDDA独立供电就是为了隔离这个噪声。

实际项目中,我通常这样处理:

  • VDD:1.8V~3.6V,由主电源提供
  • VDDA:必须≥VDD,且≤3.6V。如果VDD=3.3V,VDDA可以接3.3V或更高(但不能超过3.6V)
  • VREF+:ADC参考电压,可以接VDDA或外部基准
经验:如果ADC精度要求不高(12位以下),VDDA直接和VDD短接即可。但做16位采样时,我习惯在VDDA引脚前加一个LC滤波(10μH+10μF),效果很明显。

3.3 VREFINT与BOR配置

VREFINT:内部参考电压

VREFINT是一个1.2V的带隙基准,给ADC和DAC提供参考。它有两个模式:

  • 高精度模式:稳定时间短(约10μs),但功耗高(约10μA)
  • 低功耗模式:稳定时间长(约100μs),功耗低(约1μA)

我一般在进入休眠前切换到低功耗模式,唤醒后等100μs再启动ADC。这样既省电又不丢精度。

// 配置VREFINT为低功耗模式
HAL_PWREx_EnableVREFINT(HAL_PWR_VREFINT_LOWPOWER);

// 等待稳定
HAL_Delay(1);  // 实际需等待100μs,这里用1ms保险

// 启动ADC采样
HAL_ADC_Start(&hadc1);

BOR:欠压复位

BOR监测VDD电压,当电压低于阈值时自动复位芯片。STM32L4的BOR有7个等级:

BOR等级 下降阈值(V) 上升阈值(V)
BOR1 1.80 1.88
BOR2 2.10 2.18
BOR3 2.40 2.48
BOR4 2.70 2.78
BOR5 3.00 3.08
避坑:BOR等级选太高,电池电压稍微波动就复位;选太低,电压跌到Flash读写出错还没触发复位。我建议根据电池放电曲线选中间值——比如3.3V系统用BOR4(2.7V),留0.6V余量。

3.4 电压调节器模式选择

STM32L4的电压调节器有3种模式:

  • MR(主调节器):全速运行,功耗最高
  • LPR(低功耗调节器):限制CPU频率,适合低负载
  • LP(低功耗模式):仅维持SRAM数据,CPU停止

切换逻辑很简单:

// 进入低功耗运行模式(LPR)
HAL_PWREx_EnableLowPowerRunMode();

// 退出低功耗运行模式(回到MR)
HAL_PWREx_DisableLowPowerRunMode();

在LPR模式下,CPU最高只能跑2MHz,但电流能从几十mA降到几百μA。我做过一个传感器采集项目,平时用LPR跑2MHz轮询,有事件触发再切回MR跑80MHz处理数据。整体功耗降低了60%。

核心思路:调节器模式 + 时钟频率 + 休眠模式三者联动。不要只调一个,要整体考虑。

3.5 知识结构图:电源管理单元全景

下面这张图把本章的核心关系画清楚了。你可以对照着理解各个模块的协作方式。

STM32L4 电源管理单元结构图 VDD / VDDA 输入 LDO 调节器 SMPS 调节器 MR / LPR / LP 模式 SMPS 使能/禁用 VDD 域:CPU / Flash / SRAM VDDA 域:ADC / DAC / 比较器 BOR 欠压复位 VREFINT 参考电压 说明:VDD和VDDA独立供电,通过LDO/SMPS降压后分配给不同域,BOR和VREFINT分别提供保护和参考

嗯,到这里电源管理单元的核心内容就讲完了。记住一句话:选对模式、配好阈值、隔离噪声,你的低功耗设计就成功了一半。