2. 原理图基础:电源树分析(PMIC、DCDC、LDO)、上电时序要求
各位同学,咱们今天聊聊电源树。说实话,做嵌入式开发,很多人一上来就盯着CPU、内存、外设接口看,觉得电源嘛,不就是供电嘛,有啥好研究的?
我年轻时也这么想,直到有一次项目调试,板子死活起不来,示波器一抓,发现某个LDO的输出电压像过山车一样上下抖动。查了三天,最后发现是电源树设计时,一个DCDC的负载电容选大了,导致上电瞬间电流过大,把前级PMIC给拉垮了。
从那以后,我养成了一个习惯:拿到一块新板子,第一件事不是看CPU型号,而是先画电源树。说白了,电源树就是板子的血管系统,血管堵了,心脏再强也没用。
2.1 电源树是什么?为什么要画它?
电源树,就是把板子上所有电源轨道的来龙去脉画出来。从输入电源开始,经过哪些PMIC、DCDC、LDO,最终供给哪些负载,电压多少,电流多大,全部理清楚。
你想想看,一块NXP i.MX系列开发板,少说也有七八路电源。核心电压、IO电压、DDR电压、PLL电压、USB电压……每一路都有不同的上电时序要求。不画电源树,你根本记不住谁先谁后。
我个人习惯,画电源树时用不同颜色标注电压等级。比如3.3V用绿色,1.8V用蓝色,1.1V用红色。这样一眼就能看出电压转换关系,排查问题也快。
2.2 PMIC、DCDC、LDO,到底选哪个?
很多初学者分不清这三者的区别。我简单说一下:
- PMIC(电源管理集成电路):相当于一个集成了多个DCDC和LDO的“电源瑞士军刀”。它通常还带有时序控制、电压监控、甚至RTC功能。NXP官方开发板上常用的PF系列(如PF3000、PF8100)就是典型的PMIC。
- DCDC(直流-直流转换器):效率高,发热小,适合大电流场景。比如核心电压1.1V/3A这种,用DCDC最合适。但它的缺点是纹波大,对噪声敏感的模拟电路要小心。
- LDO(低压差线性稳压器):噪声低,响应快,但效率也低。适合给PLL、ADC这类对电源纯净度要求高的模块供电。我一般只在电流小于200mA的场景下用LDO。
我在项目中遇到过一个问题:某款传感器死活读不到正确数据,换了三块板子都一样。最后用示波器看它的供电引脚,发现LDO输出有高频振荡。换了个低ESR的钽电容,问题立刻解决。嗯,LDO对输出电容的ESR是有要求的,这点很多人会忽略。
2.3 上电时序要求——为什么不能随便上电?
NXP的i.MX系列处理器,对上电时序有严格的要求。为什么?因为芯片内部有多个电压域,如果某个域先上电而另一个域还没准备好,可能会触发芯片内部的闩锁效应(Latch-up),严重的话直接烧芯片。
我见过最惨的一次,是有人把核心电压和IO电压的顺序搞反了,上电瞬间芯片冒烟。那可是一块价值两千多的工业级i.MX8M,心疼啊。
典型的i.MX系列上电时序要求如下:
| 电压域 | 典型电压 | 上电顺序 | 说明 |
|---|---|---|---|
| VDD_SOC_CORE | 1.0V / 1.1V | 第1位 | 核心逻辑电压,必须先上 |
| VDD_SOC_IO | 1.8V / 3.3V | 第2位 | IO缓冲器电压,需等核心稳定 |
| VDD_DRAM | 1.35V / 1.5V | 第3位 | DDR电压,需等IO准备好 |
| VDD_PLL | 1.8V | 第4位 | PLL模拟电压,对噪声敏感 |
| VDD_USB | 3.3V | 最后 | USB PHY电压,可最后上 |
2.4 如何实现上电时序控制?
实现上电时序,通常有三种方法:
- 使用PMIC的时序控制功能:像PF3000这样的PMIC,内部有可编程的时序控制器。通过I2C配置寄存器,可以设置每路电源的延迟时间。这是最推荐的做法,简单可靠。
- 使用电源监控芯片(如TPS3808):当某路电压达到阈值后,输出一个Power Good信号,去使能下一路DCDC或LDO。这种方法成本低,但灵活性差。
- 使用RC延迟电路:用电阻和电容搭建延迟电路。嗯,这个方法我强烈不建议用在量产产品上。RC延迟受温度影响大,精度差,调试时能把你逼疯。
我曾经在一个项目中,为了省几毛钱,用了RC延迟方案。结果低温测试时,时序完全乱套,芯片无法启动。最后老老实实换回PMIC,多花了两块钱,但再也没出过问题。有些钱,真的不能省。
2.5 实战:分析NXP官方开发板的电源树
咱们以NXP i.MX8M Mini EVK为例,看看它的电源树长什么样。
输入电源是12V DC,经过一个DCDC降压到5V,然后兵分三路:
- 一路给PMIC(PF3000)供电,由PMIC产生核心电压、IO电压、DDR电压等
- 一路给USB接口供电
- 一路给音频功放供电
PMIC内部又有多路输出:
- SW1:1.0V/3A,给核心供电
- SW2:1.8V/2A,给IO和PLL供电
- SW3:1.35V/2A,给DDR4供电
- LDO1:3.3V/200mA,给SD卡和GPIO供电
- LDO2:1.8V/100mA,给RTC供电
你看,PMIC内部已经帮你把时序控制好了。只要按照数据手册配置好PF3000的寄存器,上电顺序就自动搞定。这就是为什么我推荐大家用PMIC——省心。
2.6 避坑指南
最后,分享几个我踩过的坑:
- 电容选型:DCDC的输出电容,不要只看容量,还要看ESR和耐压。我曾经用了一颗ESR过高的电容,导致DCDC环路不稳定,输出纹波高达200mV。
- 地线回路:大电流的DCDC,它的地线回路一定要短而粗。我见过有人把DCDC的地线绕了半块板子,结果EMI测试直接超标。
- 散热问题:LDO的功耗是 (Vin - Vout) × Iout。如果输入5V输出3.3V,电流500mA,那LDO上就要消耗0.85W的功率。不加散热片,芯片能烫到80度。
- 上电时序的余量:芯片数据手册上写的时序要求,是最低要求。我建议在实际设计中,留出20%的余量。比如要求核心电压在IO电压之前至少1ms上电,那我就设计成2ms。多留点余量,少出点问题。
好了,关于电源树分析,今天就聊到这里。下一章咱们会深入讲解时钟树和复位电路,这些都是BSP开发绕不开的基础知识。记住一句话:电源不稳,万事皆休。把电源树吃透了,后面的开发会顺畅很多。