3. Regulator基础
在嵌入式与 Linux 系统中,Regulator(调节器)是电源管理子系统的核心抽象。它负责把输入电源(电池、适配器、PMIC 前级输出等)转换为负载所需的稳定电压或电流。理解 Regulator 的分类、工作原理与典型场景,是后续阅读内核 regulator 框架、调试 DVFS 与低功耗策略的基础。
一、核心概念:电压调节器与电流调节器
Regulator 按被控量可分为两大类:电压调节器(Voltage Regulator)与电流调节器(Current Regulator)。前者维持输出电压恒定,是绝大多数数字电路、模拟电路供电的基础;后者维持输出电流恒定,常见于 LED 背光驱动、电池充电、激光二极管驱动等场景。
从控制方式看,调节器又可分为线性调节与开关调节。线性调节通过调整管的等效电阻分压,把多余能量以热量形式耗散;开关调节则通过高频开关与电感、电容储能,实现能量转换。二者在效率、噪声、成本、体积上各有取舍。
二、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,统一上电时序、保护与低功耗管理。
六、常见误区与复盘
误区二:忽略压差与散热。LDO 输入 5V 输出 1.8V、负载 500mA 时,功耗高达 1.6W,小封装会过热保护。
误区三:忽略上电时序。多路 regulator 上电顺序错误,可能导致 SoC 闩锁或启动失败。
误区四:把 regulator 当成理想源。实际存在负载调整率、线性调整率、瞬态跌落,需留足余量。
复盘方法:先画出完整电源树,标注每路 Vin/Vout/Imax/噪声要求/上电时序;再对照数据手册核对压差、效率、静态电流与散热;最后在 Linux 中通过 regulator_summary 与 /sys/kernel/debug/regulator/ 查看实际状态,验证配置是否与硬件设计一致。
掌握以上分类与场景后,再进入 Linux regulator 框架时,就能把 struct regulator_desc、regulator_ops、regulator_config 等抽象与真实硬件一一对应,理解为什么同一颗 PMIC 上不同轨需要不同的约束与工作模式。