上个月调一块带RK3308的工控板,待机电流怎么都压不下去,量了一圈发现RK809-5这颗PMIC的DCDC还锁在强制PWM模式,一路LDO也没进低功耗状态。规格书里不会直接告诉你这种组合会让待机功耗差出十几毫安,只有把DCDC和LDO各自的工作模式彻底搞懂才能快速定位。这篇就把我看RK809-5数据手册、做板级调试时梳理的东西完整写出来——DCDC的PWM/PFM模式怎么切换、LDO的调整管和PSRR到底怎么回事、效率纹波EMI在实测中的表现,以及最后那些踩过的坑。适合正在做RK平台硬件设计、BSP调优或功耗优化的工程师,也适合刚接触PMIC想建立整体概念的嵌入式开发者。
1. RK809-5在整机电源树里的角色:它到底管了哪些电
1.1 为什么现代SoC离不开一颗PMIC
现代应用处理器不是一颗单片机,一路3.3V拉过去就能跑。CPU核心要动态调压做DVFS,DDR要独立供电,IO域要匹配不同外设的电平,还有始终不能断电的唤醒机构和RTC逻辑。如果这些全部用分立LDO或模块电源去搭,先不说成本和面积,光是上电时序这一关就够人折腾。
PMIC的价值就是把多路电源转换器、时序控制、保护监控全部打包在一颗芯片里。RK809-5是瑞芯微平台里很常见的一颗PMIC,经常搭配RK3308、RK3326这类SoC使用。它的核心能力,就是同时集成若干路高效的降压型DCDC转换器和若干路LDO线性稳压器,并配合I2C接口实现电压调节、模式切换和上下电时序管理。
放在整机电源树里看,每类通道的分工是很清楚的:
- DCDC负责大电流、高效率的供电场景,比如CPU核心、DDR、部分IO电源域。
- LDO负责低噪声、小电流或者输入输出压差不大的场景,比如PLL、模拟参考电压、待机保持域。
这两种稳压器在工作原理、效率、纹波、控制方式上完全不同,这也是我后面把DCDC和LDO拆开讲的原因。
1.2 内部资源梳理:几路BUCK,几路LDO
我接触过的RK809-5,典型配置下通常包含3路同步降压BUCK和5路左右的LDO,另外还带RTC稳压、复位输出等辅助逻辑。需要说明的是,RK809系列存在不同后缀的变体,具体路数和电压范围一定要以你手上的数据手册为准,不要听别人说个参数就往设计里套。
通道类型和用途的对应关系,可以整理成一张表:
| 通道类型 | 典型数量 | 适合负载 | 典型用途 |
|---|---|---|---|
| BUCK DCDC | 3路 | 大电流,数百mA到数A | CPU核心、DDR、IO电源域 |
| LDO | 5路左右 | 小电流,几mA到几十mA | 模拟电路、RTC保持域、PLL |
| RTC/逻辑电源 | 1路 | 极小电流 | 实时时钟、唤醒控制 |
选型分配的原则其实很简单:大电流先看DCDC,噪声敏感优先LDO,但LDO必须算压差功耗。有人把本该用DCDC的大电流负载挂在LDO上,轻载发热可能还能忍,满载直接突破散热设计;也有人把低噪声敏感负载挂在BUCK上,导致模拟性能一直不达标。这两种问题我在实际项目中都见过,基本属于电源域规划阶段的失误。
1.3 上电时序是PMIC的第一道门槛
SoC对上下电时序有硬性约束,顺序错一次不一定会烧芯片,但会造成启动偶发失败或者芯片内部逻辑进入亚稳态。RK809-5内部有上电时序控制逻辑,通过I2C寄存器配置各个电源轨的使能顺序,芯片会按配置好的槽位逐个上电。
一个合理的上电顺序通常是:先给待机保持域供电,让RTC和唤醒逻辑先跑起来,然后建立核心电压,再给IO域上电,最后释放复位信号。这样SoC在复位释放那一刻,所有电源轨都已经稳定,不会出现某个IO被外部器件反灌电流的情况。
这块看似简单,却是项目里问题高发区。因为PMIC的时序不仅取决于硬件设计,软件侧的寄存器下发顺序和硬件初始化时序也要统一核对。具体案例我在第5章展开。
2. DCDC的PWM/PFM切换:轻载省电和纹波稳定之间的取舍
2.1 降压DCDC的工作原理与COT架构
要理解PWM和PFM,先得清楚Buck转换器到底在干什么。它通过一个高频开关串联在电源路径上,把输入电压斩波成脉宽可调的方波,再经过电感和电容滤波,得到平滑的直流输出。理想的占空比关系是Uout = D × Uin,D就是开关管导通时间占整个开关周期的比例。
负载轻到一定程度,电感电流会趋向断续,芯片检测到这种状态,就可以进入跳周期或降频工作,这就是PFM模式的基本思路。
现在很多PMIC片内BUCK采用的是COT(Constant On-Time,恒定导通时间)或者改进的自适应导通时间架构,RK809这类PMIC也基本不脱离这个思路。COT架构的特点是环路简单、瞬态响应快,开关管的导通时间由输出电压误差直接决定,负载突变时能很快跟住输出。理解了这个前提,再去看"工作模式"的配置项,就会顺畅很多。
2.2 强制PWM模式:先别急着说它费电
强制PWM模式,也就是常说的FPWM(Forced PWM),指BUCK不管负载轻重,始终以固定频率连续开关。这种模式下开关频率恒定,输出电压纹波小,频谱固定,对音频、射频等敏感负载非常友好。
它的代价也很明显:空载或者轻载时,芯片依然以固定频率开关,每周期都有开关损耗和驱动损耗。负载越低,这部分固定损耗占比越高,效率就往下掉。最终表现就是待机功耗偏大。
但这不代表FPWM就一无是处。对DDR、高速接口、模拟前端这类对纹波和瞬态响应敏感的负载,我一直建议强制PWM。省下的那点待机功耗,不够你后续处理一次随机时序错误的时间成本。
2.3 自动PWM/PFM模式:轻载省电的主力
自动模式则灵活得多。负载重时,芯片自动运行在PWM,效率和纹波都处在一个正常水平;负载降到一定阈值以下,芯片根据电感电流的续断情况切入PFM,常见做法是降低等效开关频率,或者跳过若干开关周期,只在输出电压跌到阈值下限时再补充一次能量。
这样一来,开关损耗随负载大小成比例下降,轻载效率能明显回升。对以低功耗为核心卖点的产品来说,这是必争之地。
但自动模式的纹波和频谱特性会变差。PFM下输出电压不再保持固定频率的规则纹波,而是出现低频的突发包络,这个包络在某些场景下比PWM纹波更让人头疼。所以"该自动就自动,该强制就强制"是DCDC模式配置的基本原则。
2.4 模式由谁决定:寄存器位还是硬件逻辑
模式切换发生在两个层面。第一层是硬件自动行为,芯片内部检测负载电流或电感电流过零情况,决定是否进入PFM;第二层是软件配置,I2C寄存器里通常有一个模式位,告诉芯片是"只允许PWM"还是"允许自动切换"。
我调试时通常这样下发配置:
// 伪代码,具体寄存器地址和位定义以数据手册为准 // bit0:0=自动PWM/PFM,1=强制PWM pmic_set_reg(REG_BUCK1_MODE, 0x01); // 强制PWM:DDR、模拟敏感域 pmic_set_reg(REG_BUCK2_MODE, 0x00); // 自动切换:CPU核心、一般IO域 pmic_set_reg(REG_BUCK3_MODE, 0x00); // 自动切换,配合待机降频最忌讳的做法是一刀切:要么全场强制PWM,待机功耗压不下去;要么全场自动模式,结果某个敏感模块被低频包络干扰,随机出现诡异问题。
2.5 模式切换的瞬态代价
自动模式下,负载从轻到重切换时,PFM会切回PWM,这个过程输出电压会有一个小的跌落或过冲。对一般数字负载,这个扰动完全无感;但对DDR刷新或某些高速接口,瞬时跌落可能导致误码甚至复位。
遇到这种情况,我的做法是把该电源域的DCDC固定在PWM模式,或者在软件里预测到高负载任务前,主动把模式提前切回PWM,而不是让芯片自己慢慢反应。
3. 两种模式的实测差异:效率、纹波与EMI表现
3.1 效率曲线:轻载差距可能超过三成
理论说再多,不如看一批实测数字。我在相近规格的一颗PMIC上测过BUCK输出3.3V、输入5V的效率对比。满载1A时,强制PWM和自动模式效率基本一致,都在90%左右;负载降到100mA,强制PWM效率掉到70%附近,自动模式还有85%以上;到5mA这种典型待机负载点,强制PWM只有40%~50%,自动模式能拉回80%上下。
效率差三成,在功耗预算里是致命的。如果产品要求待机电流小于10mA,DCDC却锁在FPWM,你后面所有软件优化都会事倍功半。
负载和模式的对应趋势可以看这张表:
| 负载情况 | 强制PWM | 自动PWM/PFM | 纹波表现 |
|---|---|---|---|
| 满载大电流 | 效率高 | 效率高,此时也在PWM | 两者相当 |
| 几十mA中等负载 | 效率中等 | 效率中偏高 | PFM纹波约为PWM的2~3倍 |
| 几mA轻载 | 效率低 | 效率高 | PFM出现低频burst包络 |
3.2 PFM纹波的低频包络:示波器要换时基看
PFM省电的代价主要体现在输出纹波上。为了维持平均电压,芯片以突发方式间歇补充能量,输出电容的电压会形成一个低频包络,幅度可以达到几十mV甚至上百mV,具体取决于输出电容和负载大小。
在示波器上,PFM纹波不是PWM那种规则高频锯齿,而是一个慢速起伏的包络。很多人第一次看到会以为电源坏了,其实这是PFM的正常状态。判断方法很简单:把示波器时基拉到几十毫秒档位,就能看到完整的突发周期;如果只盯着几百微秒窗口,很容易把它误判成随机噪声。
3.3 音频噪声和RE问题:PFM不是唯一祸首
PFM模式产生低频包络后,如果包络频率落在音频范围,加上陶瓷电容的压电效应,板卡在某些负载下可能发出可听见的吱吱声。这一点在音频产品上尤其要注意,解决思路是让BUCK在音频工作频段保持PWM,或者调整PFM的burst频率避开人耳敏感区。
而"dcdc电源的re问题"——辐射发射超标的来源,其实要分两部分看。PFM的低频包络确实会导致开关频谱不固定,在EMI测试中更容易产生某个频点的尖峰;但更多时候,RE问题来自开关节点的振铃、电感的近场耦合以及布局走线不合理,跟模式关系不大。我见过一个板子RE超标,最后查出来是电感下方铺了完整地平面,把高频噪声耦合到接口线上,跟PMIC模式配置没有关系。
所以排查RE问题,先看布局,再看模式。不要一上来就把所有DCDC切强制PWM,那样可能掩盖了真正的布局缺陷。
3.4 纹波测试的测量方法:探头选不对等于白测
测纹波是基本功,但很多人第一步就错了。示波器探头如果带着地线夹,那条长长的地线回路就是一个天线,会把环境噪声全部耦合进来,测出的不是电源纹波而是噪声总和。
正确做法是用短地环、接地弹簧,或者直接用同轴电缆焊到测试点,示波器带宽限制到20MHz。测PFM低频包络时,带宽限制反而会滤掉高频开关毛刺,让你更清楚地看到低频突发波形。
注意:测PFM模式的纹波时,时基一定要拉长到几十毫秒一屏,否则只能看到包络的一小段,容易误判为不稳定。这是我在测试方法上踩过最实在的一个坑。
4. LDO工作模式拆解:调整管、dropout与PSRR
4.1 LDO不是"降压电阻"
很多人对LDO的印象是"比DCDC简单",原理上确实不复杂,但它绝不是靠一个电阻分压了事。LDO的实质是一个串联在输入输出之间的调整管,配合误差放大器和反馈网络闭环控制,动态调整管子的导通阻抗,让输出电压保持恒定。
调整管工作在线性区,相当于一个可变电阻,输入输出电压差乘以负载电流,这部分能量直接变成热量。它没有电感,没有开关动作,所以输出端没有开关纹波,这也是LDO在噪声敏感场景下不可替代的原因。
可以这样类比:DCDC像一台带水箱的变频水泵,按需供水还能储能;LDO像一个精密水龙头,精确控制开度,多余的水压全在龙头口消耗掉了。一个高效但复杂,一个干净但低效。
4.2 Dropout电压和静态电流:选LDO先看这两个参数
把LDO用对,关键是两个参数:Dropout(最小压降)和静态电流Iq。
Dropout指维持正常稳压所需的最小输入输出电压差。如果输入3.3V、输出3.2V,压差只有0.1V,普通LDO早就失去稳压能力了,低压差LDO还能勉强工作。RK809-5这类PMIC里集成的LDO,一般针对片上场景做过优化,压差控制得比较低,但也不代表任何压差下都能稳住。
静态电流Iq是LDO自身消耗的电流,待机系统里几个微安的差距都会影响整机底数。有些LDO在正常工作模式Iq是几十微安,进入低功耗模式后能压到个位数微安,但前提是你把对应寄存器配置正确。我就见过有人没进低功耗模式,一路LDO白白吃掉30μA,整机待机电流指标直接超标。
功耗计算也不复杂:P_loss = (Vin − Vout) × I_load。比如3.7V转3.3V、100mA负载时,损耗只有0.04W,完全可接受;如果是200mA负载、压差1.2V,损耗就是0.24W,已经接近小尺寸封装LDO的散热极限了。
4.3 PSRR:高频抑制能力没有想象中强
PSRR(电源抑制比)表示LDO对输入纹波的抑制能力,单位是dB,数值越大说明输出端残留的输入纹波越小。低频段,LDO的环路增益很高,PSRR通常有60~80dB;但频率升高后,环路增益下降,PSRR也随之恶化。
对RF、音频这类敏感负载,不要只看手册首页标的那个PSRR最大值——那个数字通常只在特定低频点有效。要看目标干扰频点处的PSRR曲线,如果不足,可以在LDO输出端再加一级RC滤波,或者干脆选一个高频PSRR更优的专用LDO做二级稳压。
4.4 RK809-5里LDO的典型职责
在我经手的板卡上,RK809-5的LDO通常承担三类任务。
第一类是"常供电",给待机保持域、RTC逻辑供电。这个角色最重要的参数是Iq要足够低,因为它在整个待机期间都通着电,任何一点静态电流都会直接计进整机待机电流。
第二类是"敏感电",给音频编解码、PLL模拟电源供电。这类通道追求低噪声和高PSRR,通常要求工作在固定输出电压,不建议做动态电压调节。
第三类是"匹配电",用于IO电平转换,给外置芯片提供一路干净又便宜的供电。它的关键在于输出电压精度和带载能力,因为IO电平一旦超出SoC容忍范围,逻辑判错是必然的。
了解每路LDO在板上的具体角色,才能判断哪些通道可以关闭、哪些必须常开、哪些需要配置低噪声模式。这不是代码问题,是电源域设计的问题。
5. 实战排查:时序、纹波与待机功耗的调试验证
5.1 一个上电时序异常的真实案例
之前调一块RK平台板卡,故障是"十次上电偶尔两三次起不来",没有任何规律,重启可能又好了。测复位、测时钟都正常,最后用PMIC寄存器回读才发现,某一路IO域LDO的使能顺序排在核心电压之前,导致IO先上电,核心还没起来时,外部器件通过IO引脚反灌电流,把电源轨拉低了一瞬,SoC内部逻辑就跑飞了。
解决方式分两步:一是修改PMIC上电时序寄存器,把IO域LDO的槽位挪到核心DCDC之后;二是把硬件复位释放再往后推,确保复位释放时所有电源轨都稳定建立。修改后连续上电一百多次没有再复现。
这个案例的教训是:上电时序不能只靠硬件设计,软件侧的PMIC寄存器配置和硬件初始化顺序必须一起核对。很多人都觉得"时序是PMIC硬件自己管的事",但实际上PMIC的时序槽位是可以配置的,配置错了就是这种随机故障。
5.2 纹波超标的完整排查链路
遇到"输出纹波大"的报告,我一般按下面这个顺序排查,效率最高:
- 先排除测量问题。换短地环、限制20MHz带宽,重新测一遍,很多"纹波超标"其实是探头天线。
- 看纹波频率特征。如果频率和BUCK开关频率一致,说明输出滤波不足,检查输出电容容值、ESR和摆放位置。
- 如果看到低频包络,确认该通道是不是处于PFM模式。是的话,要么接受其在轻载下的表现,要么针对该负载强制PWM。
- 如果纹波出现在负载切换瞬间,表现为大幅度的跌落或过冲,问题在瞬态响应,重点看输出电容能不能再加大、反馈回路有没有被干扰。
- 最后用动态负载做一次极限验证,确认满载到轻载的切换边界。
我见过很多工程师一上来就先改输出电容,结果问题根本不在电容,而是测量方法错了。测量问题和模式问题不排除,后面的分析都是白做。
5.3 待机功耗的寄存器级优化思路
待机功耗优化,本质上就是逐路检查"还有谁是醒着的"。优化的优先级通常是:
- 关闭不使用的LDO,或者把必须常开的LDO切到低功耗模式。
- 把DCDC从强制PWM切到自动PWM/PFM,让轻载时自己降到PFM。
- 降低保持域的电压,只要满足SoC的最低保持条件就行。
- 关闭充电检测、自动放电等用不到的功能模块。
伪代码思路大概是这样:
// 关闭空闲的LDO通道 pmic_set_reg(REG_LDO2_CTRL, 0x00); // 保持LDO设为低功耗模式 pmic_set_reg(REG_LDO3_CTRL, 0x01); // BUCK切自动PWM/PFM pmic_set_reg(REG_BUCK1_MODE, 0x00); // 降低保持域电压 pmic_set_reg(REG_BUCK2_VSEL, 0x8C);这里有个容易忽略的坑:如果PMIC内部没有非易失存储,每次开机都要重新下发这些配置。我曾经碰到过待机电流在冷启动和热重启后不一致的情况,就是配置文件在某个初始化路径上没有被执行到。不要把宝押在一句"上次调过没问题",要验证所有启动路径。
5.4 布局布线与外围选材的提醒
最后补几点板级经验,每条都是从实际踩坑里来的。
电感选型不要只盯着标称电感量,饱和电流要留足余量。感值偏低会导致纹波电流变大,感值偏高会拖慢瞬态响应。选型时按峰值负载的1.2~1.5倍预留饱和电流是比较稳妥的做法。
输出电容不要盲目追求低ESR。对很多BUCK来说,适度的ESR反而有助于环路稳定,这个在PMIC内部环路已经固定的情况下尤其重要。你无法像调试外部DCDC那样去补偿环路,能做的就是把外围LPF选件选对。
输入去耦电容要紧贴PMIC输入脚放置,开关节点的走线要短粗,反馈采样点要从输出电容端单独走线,远离电感和开关节点。一个很常见的布局错误,是反馈线走在电感正下方或旁边,结果采集到的不是输出电压,而是开关噪声叠加后的电压,负载一变化系统就不稳定。
最后特别提醒一点:RK809-5这类集成PMIC的DCDC环路是芯片内部固定好的,不像外部可调DCDC那样需要自己设计环路补偿网络。如果你看到网上那些"dcdc环路补偿电路计算"的教程,先确认它讲的是不是分立方案,不要拿那套思路去改PMIC外围,否则只会越改越糟。
个人调试这类PMIC的习惯是:先把数据手册里每个通道的模式位和时序槽位整理成一张表,贴在工位前,动手前先明确每一路通道的负载性质——是大电流、低噪声,还是常供电。分清之后,DCDC和LDO的模式选择基本就是水到渠成的事。RK809-5这颗料本身不算复杂,真正复杂的是它和SoC、外设、板级布线组合在一起之后的整体表现,希望这篇笔记能帮你少走几步弯路。