RK809-5 PMIC实战:DCDC模式切换与LDO功耗优化要点
上个月调一块带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核心要动态调压做DVFSDDR要独立供电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 DCDC3路大电流数百mA到数ACPU核心、DDR、IO电源域LDO5路左右小电流几mA到几十mA模拟电路、RTC保持域、PLLRTC/逻辑电源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 × UinD就是开关管导通时间占整个开关周期的比例。负载轻到一定程度电感电流会趋向断续芯片检测到这种状态就可以进入跳周期或降频工作这就是PFM模式的基本思路。现在很多PMIC片内BUCK采用的是COTConstant On-Time恒定导通时间或者改进的自适应导通时间架构RK809这类PMIC也基本不脱离这个思路。COT架构的特点是环路简单、瞬态响应快开关管的导通时间由输出电压误差直接决定负载突变时能很快跟住输出。理解了这个前提再去看工作模式的配置项就会顺畅很多。2.2 强制PWM模式先别急着说它费电强制PWM模式也就是常说的FPWMForced PWM指BUCK不管负载轻重始终以固定频率连续开关。这种模式下开关频率恒定输出电压纹波小频谱固定对音频、射频等敏感负载非常友好。它的代价也很明显空载或者轻载时芯片依然以固定频率开关每周期都有开关损耗和驱动损耗。负载越低这部分固定损耗占比越高效率就往下掉。最终表现就是待机功耗偏大。但这不代表FPWM就一无是处。对DDR、高速接口、模拟前端这类对纹波和瞬态响应敏感的负载我一直建议强制PWM。省下的那点待机功耗不够你后续处理一次随机时序错误的时间成本。2.3 自动PWM/PFM模式轻载省电的主力自动模式则灵活得多。负载重时芯片自动运行在PWM效率和纹波都处在一个正常水平负载降到一定阈值以下芯片根据电感电流的续断情况切入PFM常见做法是降低等效开关频率或者跳过若干开关周期只在输出电压跌到阈值下限时再补充一次能量。这样一来开关损耗随负载大小成比例下降轻载效率能明显回升。对以低功耗为核心卖点的产品来说这是必争之地。但自动模式的纹波和频谱特性会变差。PFM下输出电压不再保持固定频率的规则纹波而是出现低频的突发包络这个包络在某些场景下比PWM纹波更让人头疼。所以该自动就自动该强制就强制是DCDC模式配置的基本原则。2.4 模式由谁决定寄存器位还是硬件逻辑模式切换发生在两个层面。第一层是硬件自动行为芯片内部检测负载电流或电感电流过零情况决定是否进入PFM第二层是软件配置I2C寄存器里通常有一个模式位告诉芯片是只允许PWM还是允许自动切换。我调试时通常这样下发配置// 伪代码具体寄存器地址和位定义以数据手册为准 // bit00自动PWM/PFM1强制PWM pmic_set_reg(REG_BUCK1_MODE, 0x01); // 强制PWMDDR、模拟敏感域 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%上下。效率差三成在功耗预算里是致命的。如果产品要求待机电流小于10mADCDC却锁在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与PSRR4.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、外设、板级布线组合在一起之后的整体表现希望这篇笔记能帮你少走几步弯路。