四路可编程PMIC实战:从选型到调试验证

四路可编程PMIC实战:从选型到调试验证
做硬件的人应该都有过这种经历板子上一个 CPU 要 1.0V 核心供电DDR 要 1.2V外设接口要 3.3V 或者 5VFPGA 还有单独的核压和 IO 电压林林总总五六路电源每路都得单独设计。以前我习惯用几颗独立的 DC-DC 加 LDO 去堆芯片多、外围元件多、PCB 面积大最烦的是各路电源的上电时序还得靠 RC 延时或者额外的时序控制芯片去凑后期调试一旦发现时序不对改板是常有的事。后来接触到 Quad Output Programmable Universal PMIC 这类芯片思路一下就打开了。它把四路电源输出集成到一颗芯片里输出电压可以通过 I2C 寄存器或者引脚配置灵活调整上下电顺序、软启动时间、故障保护阈值也都可编程。PMIC 这个词听起来好像很复杂但把它拆开看就是电源管理集成电路而 Programmable 和 Quad Output 这两个关键词非常关键意味着你手上的项目无论电源需求怎么变大部分情况下都可以用一颗芯片覆盖不需要动不动就重新画板。这篇就围绕这个主题把我从选型、设计到调试验证过程中积累的东西完整写一遍希望能帮你少踩一些坑。1. 为什么需要“四路可编程”的通用 PMIC核心需求与应用场景1.1 多路供电场景的痛点分立方案的“麻烦账”传统的做法是把各路电源拆开用独立的 DC-DC 和 LDO 去实现。比如一路 5V 转 3.3V 用一颗同步降压器一路 3.3V 转 1.0V 再挂一颗同步降压器另一路对纹波要求高的模拟供电就用 LDO。这个方案从原理上没问题但到了项目实际落地的时候麻烦是一笔一笔算出来的。首先是 BOM 膨胀。每一路 DC-DC 都要配独立的电感、输入输出电容、反馈电阻有些还要加自举电容和补偿网络。四路电源轻松吃掉二十几个元件PCB 上这些元件要占地方采购和贴片成本也跟着涨。其次是最容易被低估的上电时序问题。多核处理器、FPGA、DDR 存储对上电顺序有严格要求比如内核电压必须先于 IO 电压到达或者某两路之间的时间差必须落在一定范围内。用分立方案做时序常见办法是 RC 延时加使能脚串联这个办法能用但调试非常痛苦改一个电容或者电阻的阻值要反复试而且 RC 延时受温度和批次影响离散性大量产时不够稳。还有一个问题不太容易在原理图阶段暴露就是故障保护各自为政。分立方案里每颗芯片都有自己的过流、过压和过温保护但它们是彼此独立的彼此之间不知道对方的状态。当系统里某一路出现异常其他几路还在照常工作这种“各管各”的状态在上电早起的复杂系统里往往会造成连锁故障排查起来也很费劲。1.2 可编程带来的灵活性一颗芯片适配多套电源需求Quad Output Programmable Universal PMIC 解决的就是上面这一堆麻烦核心思路是把“电压、时序、保护”这些电源参数从硬件电路设计问题变成软件配置问题。这里的 Programmable 包含几层意思输出电压可编程通过 I2C 接口写寄存器就能把某一路输出从 1.0V 改成 1.2V 或者 0.9V不需要更换反馈电阻。上下电时序可编程各路电源的开启顺序和关闭顺序可以单独配置还能设置每路之间的延时时间比如确保 CPU 核心电压先建立之后过 2ms 再拉高 DDR 电压。故障行为可编程过压、欠压、过流保护阈值可调某些路的保护还可以配置为触发后是重启还是关闭灵活性比固定逻辑芯片高很多。DVS 动态电压调节能力部分 PMIC 支持在运行过程中通过寄存器直接调整输出电压这在低功耗场景中非常有用。比如 CPU 跑在低频时给它降到 0.85V跑高频时再提到 1.0V功耗随性能动态调整。这种灵活性给项目带来的实际收益是同一块 PCBA只要处理器换了或者外设电压改了理论上不需要改板直接改寄存器配置就能适配。我去年做过一个边缘计算盒子的项目同一块主板同时兼容了两个版本的 CPU核心电压一个要 1.0V一个要 0.95V用分立方案至少需要备两套反馈电阻用可编程 PMIC 的话只需要在产线烧录时改一个寄存器BOM 完全统一。1.3 典型应用场景有哪些从我的实际经验看四路可编程 PMIC 适合的场景有以下几类嵌入式边缘计算设备CPU/DDR/IO/FPGA 等器件需要多路独立电源且空间有限。工业控制板卡需要稳定可靠的多路供电同时希望减少板上器件数以便提高 MTBF。车载辅助控制器不过车载对 AEC-Q100 有要求需选车规级 PMIC本文内容以通用场景为主。便携式或电池供电设备要求低静态电流并且需要动态电压调节来省电。多品种、小批量的产品线同一套硬件通过配置区分不同产品型号比如标准版和增强版用同一块板子电源配置不同。如果你做的项目里两路以上电源的需求“还没完全定死”处于样机阶段随时可能调整那么用可编程 PMIC 至少能让你少改两次板。这一点在项目进度紧张的时候价值几乎无法用金钱衡量。2. 四路输出的架构选择与关键参数解读2.1 四路输出怎么配置不是所有路都用 DC-DC很多第一次接触四路 PMIC 的人会问一个问题既然有四路输出是不是四个通道都做成同步降压 DC-DC 更好答案是看需求。PMIC 内部四路输出通常会有不同组合常见的是 2 路 DC-DC 2 路 LDO或者 3 路 DC-DC 1 路 LDO也有全 DC-DC 的但那个相对少见因为成本和面积不划算。为什么需要混合组合因为 DC-DC 效率高但本质上是一个带开关噪声的功率级输出纹波不一定能满足所有负载需求。LDO 虽然效率低但输出干净非常适合给模拟电路、PLL、音频等对噪声敏感的部分供电。比如主控芯片的内核电压用 DC-DCDDR 的 VDDQ 用 DC-DC而 PLL、ADC 参考电压这类小电流且要求低纹波的部分用 LDO 是更合理的选择。这样做的好处是既保证了高效率大电流输出又满足了对纹波敏感的局部电源需求。决定四路通道配置我一般会先列出每一路负载的电流需求和对纹波的要求负载类型典型电流推荐通道理由主控内核 / 大电流数字1ADC-DC效率优先发热小DDR / 存储供电0.5A-2ADC-DC 或 LDO视负载电流优先 DC-DC模拟前端 / PLL200mALDO纹波极低噪声敏感传感器 / 接口供电300mALDO 或 DC-DC看系统整体功耗要求2.2 选型时必须关注的关键指标选 PMIC 不能只看有几个通道有几个参数必须对着规格书一项项确认否则后面调试会踩坑。第一是输入电压范围。这个看似简单但很多通用 PMIC 的输入范围不是从 0V 开始比如常见的范围是 2.8V 到 5.5V这意味着它设计给单节锂电池或者 5V USB 供电场景用。如果你的系统里有 12V 中间母线电压就得在 PMIC 前面再加一级降压或者选输入范围更宽的车规级芯片。第二是每路输出电流上限。这是硬指标不能超。同时要注意降额使用比如规格书标称单路 2A实际设计时建议留在 1.6A 左右因为还要考虑环境温度升高时的热降额以及电感的饱和电流余量。我习惯在 BOM 评估阶段就把负载最大瞬态电流算清楚并按 80% 的容量去做设计这样不容易在高温或瞬态工况下触发过流保护。第三是静态电流Iq。电池供电项目必须重点关注因为 PMIC 即使不工作在满载状态自身电路也会有电流消耗这个值越低越好。如果是工业设备插电运行对 Iq 的要求可以放宽。第四是开关频率。开关频率高外部电感可以选得小纹波也可以优化但开关损耗会变大转换效率可能略降。频率低则相反。选多少没有绝对标准关键是用在项目里的 EMI 测试能不能过。如果系统里有多颗 DC-DC最好选择开关频率可同步的 PMIC这样能减少拍频干扰EMI 调试会轻松很多。第五是输出精度和线性调整率。输出电压精度通常以百分比表示比如 ±1%有些对 CPU 核心电压要求高的场景DDR 的 VDDQ 也要求精度在 ±3% 以内这个必须看规格书逐项确认。如果预留了反馈电阻或者寄存器微调精度问题可以用校准来弥补但会增加产线工序。2.3 与分立方案对比成本、面积、可靠性的账用可编程 PMIC 替代多颗分立 DCDCLDO到底值不值需要算一笔账。我以一个典型的四路需求为例5V 输入输出 1.0V/2A、1.8V/1.5A、3.3V/1A、1.2V/0.3A。分立方案按 4 路芯片估算的话主控 buck 芯片 电感 电容 电阻平均每路元件数量在 8 到 10 个左右四路就是 32 到 40 个元件总面积可能在 400 到 500 平方毫米之间。价格方面四颗中低端电源芯片加外围BOM 成本并不低。可编程 PMIC 呢一颗芯片加一个电感加若干电容元件数量能压缩到 15 到 20 个面积可以缩减到 250 到 300 平方毫米BOM 上的器件少了SMT 贴片费用也下降总 BOM 成本通常是省钱的尤其是物料数量带来的采购和库存管理成本下降。可靠性方面器件少意味着失效率低而且 PMIC 内部保护功能更完善多路之间有协调机制整体可靠性明显优于“各管各”的分立方案。唯一可能让人觉得不划算的地方是单颗 PMIC 的单价往往比单颗中低端 DC-DC 芯片贵如果不把整个系统的面积、采购、贴片、返修成本算进去光比单价确实觉得肉疼。但算总账大多数情况下是可编程 PMIC 胜出。3. 可编程机制剖析与核心配置方法3.1 可编程实现的三种方式I2C 寄存器、OTP、引脚配置要真正用好 Quad Output Programmable Universal PMIC必须先理解它内部的可编程机制是怎么实现的。市面上主流芯片大概分三类思路第一类是 I2C 寄存器配置。芯片内部有控制寄存器主控通过 I2C 接口写特定地址来设定输出电压、时序、保护阈值等。出厂默认是一组过渡配置开机后由主控逐步写入完整配置。这种方案最灵活适合软件团队能配合做驱动开发的场景。缺点是如果主控在 PMIC 初始化完成前就启动外设可能因为电压不对导致系统不稳定所以上电时序要处理好。第二类是 OTP 一次性编程配置。芯片内部有一次性可编程存储区出厂前或者产线上通过烧录器把最终配置烧进去之后芯片每次上电就按照烧录的配置运行不需要软件介入。这种方案适合量产产品烧录一次后跑起来非常稳不依赖主控软件。缺点是配置写死在里面了后期想调整电压只能换片不够灵活。第三类是引脚配置。通过外部电阻或者引脚电平组合来选择输出电压芯片内部有比较器和译码电路根据引脚状态输出预设的电压档位。这类芯片看起来最接近传统方式没有编程门槛适合纯硬件团队或者不想引入软件驱动的项目但灵活性最低能设置的档位有限。实际项目里常见的是“I2C OTP 混合”模式。也就是说芯片默认从 OTP 或默认状态启动保证各路电压在初始状态就是安全的然后软件再通过 I2C 做精细化调整。这种结构既能保证掉电重启后系统能自己起来又保留运行中的动态调节能力。平时做方案评估时我会先问自己一个问题这个项目后续的电压调整频率有多高如果工厂生产时可能经常变配置我会优先选 I2C EEPROM 或者 I2C OTP 组合的芯片如果配置完全固定选 OTP 或者引脚配置就够了省心又省成本。没有任何一种方案是绝对最好的只有适不适合当前项目。3.2 电压与时序配置实操以通用四通道为例下面我用一个通用的四通道 PMIC 配置过程展示实际怎么操作。不同的芯片寄存器定义会有差异但思路是通用的。假设系统需求Buck11.0V/2A给主控内核Buck21.8V/1.5A给 DDR 与相关逻辑LDO13.3V/0.3A给 IO 和接口LDO21.2V/0.1A给 PLL/模拟第一步是确认输入电压和芯片选型。如果输入是 5V芯片必须支持 5V 输入电压如果输入是电池 3.7V 到 4.2V 波动输入范围下限也要够低。第二步是配置输出电压。I2C 模式下主控在初始化阶段依次写寄存器假设芯片把输出电压设定放在 REG_0x02 到 REG_0x05那么大致配置代码这样写#include pmic_driver.h void pmic_init_config(void) { // 设置 Buck1 输出电压为 1.0V pmic_write_reg(0x02, 0x1A); // 假设 0x1A 对应 1.0V // 设置 Buck2 输出电压为 1.8V pmic_write_reg(0x03, 0x2C); // 假设 0x2C 对应 1.8V // 设置 LDO1 输出电压为 3.3V pmic_write_reg(0x04, 0x33); // 假设 0x33 对应 3.3V // 设置 LDO2 输出电压为 1.2V pmic_write_reg(0x05, 0x12); // 假设 0x12 对应 1.2V }注意不同芯片的寄存器值和电压档位映射关系不一样实际开发时一定要对照数据手册的寄存器映射表查。第三步是配置上电时序。四路输出之间的上下电顺序通常通过配置 Sequence 寄存器来实现。假设系统要求 Buck1 先上电随后 LDO1、Buck2、LDO2 依次延时 5ms、10ms、15msvoid pmic_setup_sequence(void) { pmic_write_reg(0x10, 0x01); // 开启 Main Slots 配置代表 Buck1 为第一路 pmic_write_reg(0x11, 0x03); // 设置 Buck1 到 Buck2 的延时 5ms pmic_write_reg(0x12, 0x02); // 配置 LDO1 在 Buck2 之后 10ms 上电 pmic_write_reg(0x13, 0x04); // 配置 LDO2 最后上电再延时 15ms }这些时间参数不能盲目写要对照后级负载的上电要求。比如有的 DDR 有复位信号需要电压稳定后才能释放复位有的 FPGA 要求核电压和 IO 电压同时到达或者 IO 电压不得先于核电压。时序配置需要和系统里的复位逻辑、使能信号联调才能定稿纯看芯片手册不一定能一次配对。第四步是软启动时间配置。每路输出的软启动时间尽量错开避免所有负载同时上电造成输入电流尖峰太大把前面的电源拉垮。PMIC 一般都有软启动斜率控制寄存器按需配置即可。3.3 故障保护与监控配置别把所有保护都关掉可编程 PMIC 的一大好处是故障保护可以配置但这也是最容易出错的地方。有些工程师为了让系统跑起来不误触发把过压、过流、欠压保护全部关掉这在调试初期也许方便但后期一旦忘记打开量产现场就等着回收故障板吧。我建议的配置策略是过流保护必须开启阈值设定在最大负载电流的 1.2 到 1.5 倍。比如某路最大负载 2A过流阈值就设在 2.4A 到 3A 之间。设太高失去保护意义设太低又会在正常瞬态响应时误触发。过压保护开启阈值设置在目标电压的 110% 到 120%。如果输出电容比较大过压可能由负载突降引起阈值太低会导致误触发。欠压保护也建议开启设置为目标电压的 80% 到 90%。它不仅能提示供电异常还能在上电时序不对时快速发现问题。热关断默认开启不要关。如果系统散热不好PMIC 会先于外部温度传感器发现过温提前报警或保护能帮你避免烧板子。故障恢复策略按场景配置。对于关键负载可以配置为自动重试比如过流后延时 100ms 再重启对于非关键负载比如外设接口电源故障后直接关闭即可避免反复重启造成的连带问题。配置完成后要通过 I2C 回读寄存器确认写入内容生效。产线上最好在最终测试项里加入“PMIC 寄存器回读校验”防止烧录不良或者 OTP 未写完整导致板子带病出货。4. 硬件设计与调试实录从原理图到量产4.1 PCB 布局与 Layout 要点电源设计里最不起眼但最致命的环节原理图画得再好Layout 拉得不对PMIC 照样不稳定。我见过太多因为 Layout 问题把好芯片折腾成只能“勉强能用”的案例。先说电感位置。DC-DC 的开关节点是板上最脏的信号之一电感应该紧挨着芯片的 SW 引脚缩短开关节点走线长度减少天线效应和 EMI 辐射。走线宽度要足够至少按 1A/mm 的能力去设计也就是说 2A 电流的地方至少预留 2mm 走线宽度必要时铺铜。再说反馈网络取样点。输出电压反馈线不要从电感或负载端直接拉回来而应该从输出电容之后、靠近负载的远端取样点单独走一根细线回到 FB 引脚。这根线要避开电感下方和开关节点区域防止噪声耦合。很多新手把反馈电阻放在芯片旁边结果取样点在芯片近端负载端的实际电压可能已经跌了但芯片没感知到动态响应就会变差。输入和输出电容要靠近对应引脚放置电容返回地要尽可能短。电源回路面积要小这是高频噪声和 EMI 的根源一定要让高频电流环路“短而粗”。推荐的做法是 PMIC 底下铺连续地平面并在背面就近放置去耦电容。还有热设计。四路 PMIC 同时工作时功率损耗集中在芯片内部尤其是 LDO 压差大的那一路比如从 3.3V 降到 1.0V 再带 0.3A 负载相当于 0.69W 的热耗散这在小型封装上不是小数目。Layout 时候要给芯片底部焊盘打足散热过孔连接到背面地平面帮助热量导出。有条件的话在原理图阶段就用热仿真软件做一次热估算。多路 DC-DC 的开关频率如果不同步彼此会有差拍干扰Layout 上要尽量让两路 buck 的电感方向相互垂直减小磁耦合。4.2 上电调试步骤与量测方法拿到第一批样板不要急着把所有功能都跑起来按顺序验证更高效。我的习惯是这样第一步先不上主控用直流电源给 PMIC 单独供电确认各路输出电压是否与寄存器配置一致测量电压精度是否在规格范围内。这个阶段用示波器直流耦合看电压纹波和工频纹波确认没有明显的自激振荡。第二步验证上电时序。用示波器多通道同时抓取各路输出电压波形看顺序和延时是否和配置一致。如果发现某一路在上电瞬间有毛刺或过冲马上停机检查软启动配置和输出电容是否合适。过冲超过目标电压 10% 以上就要重视长期来看对后级芯片不友好。第三步加负载动态测试。用电子负载逐路带载从 10% 到 90% 做瞬态跳变观察瞬态电压跌落和过冲。如果跌落超过负载要求比如 DDR 要求 VTT 容差在 ±3% 以内就要考虑加大输出电容或者优化环路补偿。部分 PMIC 的环路补偿参数是通过寄存器配置的可以尝试调整。第四步整机联调。接上真实的 CPU/DDR 等负载跑系统级压力测试长时间挂机。这个阶段不要只在常温跑有条件的话把板子放进温箱里在 -20℃ 到 70℃ 条件下做电压和时序验证因为温度变化会影响基准电压精度和开关电源的环路稳定性。如果调试过程中发现某一路电压偏低不要急着改代码。先用示波器探头直接测芯片 VOUT 引脚处的电压和负载端电压做对比判断是芯片输出本身偏低还是走线压降导致负载端偏低。这两个原因的处理方向完全不同。4.3 量产与一致性问题寄存器配置和元器件批次都要盯从样板到量产有几个坑值得提前预防。第一个坑是寄存器配置的版本管理。可编程 PMIC 最怕跑着跑着发现配置被改乱了。要建立配置文件的版本管理把每一版配置文件和相关硬件版本、软件版本关联起来用 git 管理配置文件。产线上使用的烧录器或者上位机程序也要版本锁定禁止车间临时手改。第二个坑是元器件的批次一致性。电感饱和电流、电容的直流偏压特性、MOS 管导通电阻等参数都会随批次变化。量产前建议做一次跨批次验证至少用三批不同的电感、电容来测试确认输出波形和效率没有明显漂移。曾遇到过一批电感 DCR 偏大导致满载效率掉了 2% 的情况不对比根本发现不了。第三个坑是产线测试项目。如果 PMIC 支持寄存器回读一定要把“回读校验”写进产测流程。OTP 烧录完之后重新上电回读所有关键配置和标准值比对防止烧录器接触不良导致烧写不完整。另外产测中要加一个“时序检测”项用逻辑分析仪或者示波器自动抓取上电时序不能只测电压因为有时电压对但时序错整机照样起不来。5. 常见问题排查速查表与避坑建议5.1 问题排查速查表现象排查思路可能的根因上电后某路无输出先量芯片 VIN 是否有电压再量 EN 引脚电平再回读寄存器使能未拉高、寄存器配置错误、OTP 烧录失败输出电压偏低对比轻载和重载下的电压差检查远端反馈取样点反馈走线压降过大、输出电容减小、电阻配置错误上电时序不符多通道示波器抓波形检查 Sequence 寄存器时序寄存器配置错误、软件初始化时序不对纹波过大检查 SW 节点波形看开关频率是否稳定输出电容 ESR 过大、电感饱和、环路震荡过流保护误触发用示波器抓负载瞬态电流电流阈值设置过低、输出电容过小导致瞬态尖峰EMl 辐射超标检查 SW 节点走线面积检查电感方向Layout 开关回路面积过大、LDO 和 DCDC 布局干扰温度过高热成像仪测温检查底层散热过孔大压差 LDO 散热不足、PCB 铺铜不够系统反复重启查寄存器的 fault 状态位看是 OVP/OCP/UVLO 哪类触发负载瞬态过冲过大、输入电源跌落、保护阈值设置不合理5.2 我踩过的几个坑简单分享两个印象比较深的实际问题。第一个是时序参数没考虑输入电压爬升时间。有次做一个电池供电设备电池从 3.0V 缓慢爬升到 4.2VPMIC 内部欠压保护和上电时序配置都是按“输入电压瞬间建立”去设计的实际在电池电压爬升阶段芯片可能已经完成了一部分上电动作导致后面主控起来的时候各路电压状态不对。后来我在所有上电时序配置里都对输入电压建立时间做了余量并加了延时问题才算解决。第二个是动态电压调节写寄存器后没有加延时。DVS 调节不能在输出大电流瞬态时同步跳变否则会触发过流或者欠压保护。软件里必须在寄存器配置后加一个短延时让输出电压斜坡爬升或下降完成后再进行下一步操作。延时时间可以从电压变化量和软启动斜率估算出来宁多勿少。另外还有一个小建议拿到 PMIC 的数据手册先把 Fault 寄存器和状态寄存器的地址、位定义抄在调试笔记里。真出问题的时候用示波器抓波形只能看到结果而寄存器里的状态位能直接告诉你芯片内部认为发生了什么这两件事合在一起排查速度会快很多。四路可编程 PMIC 这类芯片用好了确实能给项目省掉不少烦心事。它把电源设计从“画电路板”往前推了一步变成“写配置”对硬件工程师来说既是挑战也是机会。如果你正在做需要多路电源、而且电压时序都不固定的项目不妨找一颗合适的四路可编程芯片先搭个原型试试实际用一次你会发现它的价值比光看数据手册时以为的更大。

最新新闻

日新闻

周新闻

月新闻