3. Regulator基础

在嵌入式与 Linux 系统中,Regulator(调节器)是电源管理子系统的核心抽象。它负责把输入电源(电池、适配器、PMIC 前级输出等)转换为负载所需的稳定电压或电流。理解 Regulator 的分类、工作原理与典型场景,是后续阅读内核 regulator 框架、调试 DVFS 与低功耗策略的基础。

一、核心概念:电压调节器与电流调节器

Regulator 按被控量可分为两大类:电压调节器(Voltage Regulator)与电流调节器(Current Regulator)。前者维持输出电压恒定,是绝大多数数字电路、模拟电路供电的基础;后者维持输出电流恒定,常见于 LED 背光驱动、电池充电、激光二极管驱动等场景。

从控制方式看,调节器又可分为线性调节与开关调节。线性调节通过调整管的等效电阻分压,把多余能量以热量形式耗散;开关调节则通过高频开关与电感、电容储能,实现能量转换。二者在效率、噪声、成本、体积上各有取舍。

核心关系:输入电压 Vin → 调节器 → 输出电压 Vout(或输出电流 Iout)。调节器通过反馈环路不断比较输出与基准,调整功率管导通程度,使输出稳定在设定值。

二、LDO:低压差线性稳压器

LDO(Low Dropout Regulator)是最常见的线性电压调节器。其核心是一个工作在放大区的调整管(PMOS 或 PNP),配合误差放大器、基准电压和反馈电阻网络构成闭环。LDO 的显著特点是低压差:输入与输出之间只需很小的电压差即可维持稳压,适合电池供电场景。

LDO 的优点:输出噪声低、纹波小、瞬态响应快、外围元件少、无开关噪声。缺点:效率约等于 Vout/Vin,压差大时发热严重。典型应用包括:为 PLL、ADC、RF 等噪声敏感模块供电;为 SoC 的 IO 域提供干净电源;在 DC-DC 后级做二次稳压。

LDO 关键参数示例:
VIN   = 3.3V
VOUT  = 1.8V
IOUT  = 300mA
Dropout = 200mV
效率 ≈ 1.8 / 3.3 ≈ 54.5%
功耗 = (3.3 - 1.8) × 0.3 = 0.45W

三、DC-DC:开关型调节器

DC-DC 转换器通过高频开关(通常几百 kHz 到几 MHz)配合电感、电容实现升降压。常见拓扑有 Buck(降压)、Boost(升压)、Buck-Boost(升降压)。其效率通常可达 85%~95%,适合大电流、大压差场景。

DC-DC 的代价是:输出纹波与开关噪声较大,需要电感与滤波电容,PCB 布局要求高,瞬态响应相对 LDO 慢。因此在 SoC 电源树中,常见策略是:DC-DC 负责从电池/适配器高效降到中间电压,LDO 再为敏感模块提供低噪声电源。

类型 效率 噪声/纹波 外围元件 典型场景
LDO 低(Vout/Vin) 很低 少(电容) PLL、ADC、RF、IO
Buck DC-DC 高(85%+) 较大 电感+电容 CPU、DDR、大电流轨
Boost DC-DC 高 较大 电感+电容 背光、升压供电
电流调节器 取决于拓扑 可控 采样电阻 LED、充电、激光

四、PMIC:电源管理集成电路

PMIC(Power Management IC)把多路 Buck、LDO、充电管理、电量计、保护电路等集成在一颗芯片内,通过 I2C/SPI 或寄存器接口统一控制。在手机、平板、车载与嵌入式主板中,PMIC 是整块板的电源中枢。

Linux 下 PMIC 通常表现为一个 MFD(Multi-Function Device)设备,其内部各 regulator 通过 regulator 子系统注册为独立的 regulator 设备。驱动通过 regulator_get()、regulator_enable()、regulator_set_voltage() 等 API 控制各路输出。

典型 PMIC 电源树:
Battery 3.7V
  ├─ Buck1 → 1.2V (CPU Core)
  ├─ Buck2 → 1.8V (DDR)
  ├─ Buck3 → 3.3V (System IO)
  ├─ LDO1  → 1.8V (PLL)
  ├─ LDO2  → 2.8V (Camera)
  └─ LDO3  → 3.0V (Touch)

五、典型应用场景与选型思路

  • 大电流数字核心:优先 Buck DC-DC,追求高效率与动态调压能力,配合 DVFS 使用。
  • 噪声敏感模拟模块:优先 LDO,或在 DC-DC 后级再加 LDO 做二次滤波。
  • 电池供电长待机:LDO 静态电流低,适合小负载常开轨;大负载仍用 DC-DC。
  • LED 背光/闪光灯:使用恒流调节器或 Boost + 电流镜,保证亮度一致。
  • 多路复杂系统:选用 PMIC,统一上电时序、保护与低功耗管理。

六、常见误区与复盘

误区一:只看效率不看噪声。把 CPU 核供电的 DC-DC 直接给 PLL 供电,导致时钟抖动、射频灵敏度下降。
误区二:忽略压差与散热。LDO 输入 5V 输出 1.8V、负载 500mA 时,功耗高达 1.6W,小封装会过热保护。
误区三:忽略上电时序。多路 regulator 上电顺序错误,可能导致 SoC 闩锁或启动失败。
误区四:把 regulator 当成理想源。实际存在负载调整率、线性调整率、瞬态跌落,需留足余量。

复盘方法:先画出完整电源树,标注每路 Vin/Vout/Imax/噪声要求/上电时序;再对照数据手册核对压差、效率、静态电流与散热;最后在 Linux 中通过 regulator_summary 与 /sys/kernel/debug/regulator/ 查看实际状态,验证配置是否与硬件设计一致。

Regulator 分类与典型电源树 按被控量分类 电压调节器 Vout 恒定 电流调节器 Iout 恒定 按实现方式分类 线性调节 LDO / 线性稳压 开关调节 Buck / Boost / Buck-Boost PMIC 集成形态 多路 Buck + LDO 充电 / 电量计 / 保护 I2C / SPI 统一控制 典型 SoC 电源树(Battery 3.7V) Battery 3.7V PMIC Buck1/2/3 + LDO1/2/3 I2C 控制 Buck1 → 1.2V CPU Core Buck2 → 1.8V DDR LDO1 → 1.8V PLL / ADC LDO2 → 2.8V Camera Boost → 12V Backlight Current Reg LED / Flash

掌握以上分类与场景后,再进入 Linux regulator 框架时,就能把 struct regulator_desc、regulator_ops、regulator_config 等抽象与真实硬件一一对应,理解为什么同一颗 PMIC 上不同轨需要不同的约束与工作模式。