ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

嵌入式电源动态响应:负载瞬态如何导致系统死机与选型设计

嵌入式电源动态响应:负载瞬态如何导致系统死机与选型设计 1. 被忽略的电源动态指标为什么静态测试全过、系统还是会死机很多做嵌入式硬件的朋友都有过这种经历板子打回来上电测各路电压万用表一量3.3V 稳得很纹波用示波器看也就十几毫伏心里踏实了。结果程序一跑ADC 采样乱跳、无线模块一发数据就复位、SD 卡写入偶尔失败。查代码查了三天最后发现是电源的动态响应跟不上负载的瞬态变化。这就是稳压电源的“隐形战场”。静态指标——输出电压精度、负载调整率、线性调整率——只能说明电源在稳态下表现如何。但嵌入式系统里负载几乎从来不是稳态的。MCU 内核在睡眠和全速之间切换电流可能在几百纳秒内从微安级跳到几十毫安射频功放发射瞬间的浪涌电流可能是平均电流的三到五倍SD 卡写入时内部电荷泵启动也会产生高频的电流脉冲。这些瞬态事件对电源提出的要求静态测试根本测不出来。我见过太多项目在电源选型时只看“输出电流够不够”“压差大不大”“静态电流低不低”却完全忽略了一个关键参数负载瞬态响应。这个参数决定了当负载电流发生阶跃变化时输出电压会跌落或过冲多少、需要多长时间才能恢复。如果跌落幅度超过了 MCU 的欠压复位阈值或者恢复时间太长导致后续电路采样窗口内电压还没稳回来系统就会出各种“玄学”问题。这篇文章不打算泛泛地讲 LDO 和 DC-DC 的原理那些教科书上都有。我想从实际项目出发把稳压电源动态特性对嵌入式系统稳定性的影响拆开揉碎讲清楚。包括负载瞬态到底是怎么产生的、LDO 和 DC-DC 在动态响应上的本质差异、怎么根据系统需求反推电源的动态指标、PCB 布局和外围元件怎么影响动态表现、以及在没有专业负载瞬态测试设备的情况下怎么用土办法评估电源的动态性能。适合已经做过一些板级设计、但被电源问题坑过的嵌入式工程师也适合正在选型阶段想提前避坑的朋友。2. 负载瞬态从哪来嵌入式系统里那些看不见的电流阶跃2.1 MCU 内核与外设的电流突变先拿最常见的 ARM Cortex-M 系列 MCU 举例。以 STM32F4 为例运行在 168MHz 全速模式且开启 FPU 时内核电流大约在 30~50mA 之间。当它进入 Sleep 模式电流会掉到几百微安。如果开启了 Tickless 低功耗模式MCU 会在毫秒级的时间尺度上反复进出低功耗状态。这意味着电源看到的负载电流是一个频率在几百赫兹到几千赫兹之间的方波上升沿和下降沿的时间取决于 MCU 内部电源管理单元的切换速度通常在几十纳秒到几百纳秒量级。这还只是内核。外设的电流变化更剧烈。比如 ADC 在转换瞬间会从 VDDA 抽取一个尖峰电流持续时间极短但峰值可能是平均值的数倍。再比如 GPIO 驱动 LED 或继电器如果直接由 MCU 的 IO 口驱动开关瞬间的电流变化也会耦合到电源轨上。更隐蔽的是 IO 口的容性负载充放电——当 IO 翻转时需要给走线和接收端的寄生电容充放电这个电流脉冲虽然能量不大但频率可以到几十兆赫兹对电源的高频旁路能力是个考验。2.2 射频模块的发射浪涌无线模块是负载瞬态的重灾区。以常见的 2.4GHz 射频芯片为例接收模式电流可能只有十几毫安但发射模式瞬间可以冲到一百多毫安甚至更高。而且发射不是持续满功率而是根据协议在微秒级的时间尺度上开关。BLE 广播间隔、Wi-Fi 的 Beacon 帧、LoRa 的扩频调制都会在电源轨上产生周期性的电流脉冲。我实测过一款 BLE 模块在广播事件发生时电源轨上会出现一个持续约 200 微秒、峰值约 120mA 的电流脉冲而广播间隔是 100ms。这意味着电源在 99.8% 的时间里负载很轻但每 100ms 就要应对一次 120mA 的阶跃。如果 LDO 的瞬态响应不好这个脉冲会导致输出电压跌落几十甚至上百毫伏。对于 3.3V 的系统如果跌落超过 300mV某些对电源敏感的射频芯片就可能出现发射功率下降、接收灵敏度降低甚至通信中断。2.3 存储器件写入时的电荷泵冲击SD 卡、eMMC、NAND Flash 在写入和擦除操作时内部需要产生高压来编程浮栅晶体管。这个高压由芯片内部的电荷泵产生而电荷泵的输入电流是从电源轨抽取的。电荷泵工作时输入电流不是恒定的而是一串高频脉冲频率通常在几兆赫兹到几十兆赫兹。这些脉冲会通过电源轨传导如果电源的环路带宽不够或者输出电容的 ESL 太大就会在电源轨上形成高频纹波。更麻烦的是SD 卡在初始化阶段和写入阶段的行为差异很大。初始化时电流可能只有几毫安但一旦开始写入平均电流可能跳到几十毫安而且伴随着高频脉冲。这种“平均电流阶跃高频纹波”的复合负载对电源的动态特性提出了双重挑战。2.4 电机和继电器的感性负载开关如果系统里有电机、继电器、电磁阀这类感性负载开关瞬间的反向电动势和浪涌电流会通过共用的电源轨影响整个系统。即使加了续流二极管感性负载在断开瞬间产生的电压尖峰仍然可能通过寄生电容耦合到电源上。而且这类负载的开关频率通常很低但每次开关的电流变化率极大对电源的瞬态响应要求是“大信号”响应而不是小信号交流响应。注意很多工程师在测试电源时用电子负载做动态测试但电子负载的电流变化率通常只有几安培每微秒而实际系统中 MCU 和射频模块的电流变化率可以达到几十甚至上百安培每微秒。测试条件和实际工况的差异是导致“测着没问题、用着出问题”的主要原因之一。3. LDO 与 DC-DC 的动态响应差异不是谁更好而是谁更合适3.1 LDO 的动态响应机制与瓶颈LDO 的核心是一个误差放大器、一个调整管通常是 PMOS 或 NMOS和一个反馈分压网络。当负载电流突然增大时输出电压会先跌落反馈网络把这个跌落送到误差放大器误差放大器再驱动调整管增大导通程度把电压拉回来。这个过程的速度取决于几个因素误差放大器的带宽和压摆率、调整管的栅极电容、输出电容的容量和 ESR。LDO 的动态响应瓶颈在于环路带宽。为了保证稳定性LDO 的环路带宽通常被限制在几百千赫兹到几兆赫兹之间。当负载电流发生阶跃变化时环路需要一定的时间才能响应。在这段时间里输出电容负责提供瞬态电流维持电压稳定。所以输出电容的容量和 ESR 对 LDO 的瞬态响应至关重要。但输出电容也不是越大越好。太大的电容会降低环路的相位裕度可能导致振荡。而且大容量电容通常有较大的 ESL对高频瞬态响应反而不利。所以 LDO 的输出电容选择是一个折中容量要足够大以应对瞬态电流ESR 要在合适的范围内以保证环路稳定ESL 要尽量小以提供高频旁路。3.2 DC-DC 的动态响应特点与补偿网络DC-DC 开关电源的动态响应机制和 LDO 完全不同。它通过控制开关管的占空比来调节输出电压。当负载电流突变时电感电流不能突变所以输出电压会先变化然后通过反馈环路调整占空比改变电感电流的斜率最终把电压拉回来。DC-DC 的动态响应取决于环路补偿网络的设计。电压模式控制和电流模式控制的响应特性不同峰值电流模式通常比电压模式有更快的瞬态响应。但无论哪种控制方式DC-DC 的环路带宽通常比 LDO 更窄因为开关频率限制了环路的响应速度。一个开关频率为 2MHz 的 DC-DC其环路带宽通常只能做到开关频率的十分之一到五分之一也就是 200kHz 到 400kHz。这意味着 DC-DC 对负载瞬态的响应速度通常比 LDO 慢。但 DC-DC 的优势在于效率。当输入输出压差大、负载电流大时LDO 的功耗会非常大而 DC-DC 可以保持较高的效率。所以在嵌入式系统中常见的做法是前级用 DC-DC 把电压降到离目标值比较近的水平后级用 LDO 做二次稳压和纹波抑制。这样既保证了效率又利用了 LDO 良好的瞬态响应和低噪声特性。3.3 什么时候必须用 LDO什么时候 DC-DC 也能凑合选择 LDO 还是 DC-DC不能只看效率和压差还要看负载的动态特性。如果负载电流变化剧烈且频繁比如射频模块、高速 ADC、精密模拟前端LDO 通常是更好的选择因为它的瞬态响应更快、噪声更低。如果负载电流相对稳定或者变化缓慢比如电机驱动、LED 照明、大容量存储DC-DC 的效率优势就更明显。还有一个容易被忽略的因素DC-DC 的开关噪声。即使输出纹波很小开关节点的高频噪声仍然可能通过空间辐射或传导耦合到敏感电路上。在射频系统中DC-DC 的开关频率如果落在接收频带内会直接恶化接收灵敏度。这种情况下即使 DC-DC 的动态响应够用也必须用 LDO 做后级稳压。下面这个表格对比了 LDO 和 DC-DC 在动态特性相关维度上的差异维度LDODC-DC瞬态响应速度快取决于环路带宽和输出电容较慢受开关频率和补偿网络限制输出噪声低无开关噪声较高有开关纹波和高频噪声效率低压差大时效率急剧下降高适合大压差和大电流外围元件少通常只需输入输出电容多需要电感、电容、二极管等动态响应可预测性较好受输出电容影响大较差受补偿网络和布局影响大适合的负载类型射频、模拟、高速数字电机、照明、大容量存储3.4 混合供电架构中的动态配合问题在实际项目中我比较推荐的做法是 DC-DC 加 LDO 的混合架构。但这里有一个坑如果 DC-DC 的动态响应太慢LDO 的输入电压可能会在负载突变时跌落导致 LDO 的压差不够输出电压也跟着跌落。所以在这种架构中DC-DC 的输出电压要留足够的余量而且 DC-DC 的输出电容要足够大以应对 LDO 输入端的瞬态电流需求。另外LDO 的电源抑制比在低频时很好但在高频时会下降。如果 DC-DC 的开关纹波频率比较高LDO 对它的抑制能力有限。这时候需要在 LDO 的输入端加一个 LC 滤波器把开关纹波先滤掉一部分减轻 LDO 的压力。4. 从系统需求反推电源动态指标一个可落地的计算框架4.1 确定负载瞬态的幅度和斜率第一步是搞清楚系统里最恶劣的负载瞬态是什么。把系统里所有可能产生电流阶跃的器件列出来估算它们的电流变化幅度和变化时间。比如MCU 从 Sleep 到 Run电流从 0.5mA 跳到 40mA上升时间约 100nsBLE 模块发射电流从 5mA 跳到 120mA上升时间约 10usSD 卡写入电流从 10mA 跳到 50mA上升时间约 1us叠加 10MHz 的高频脉冲把这些瞬态按幅度和斜率排序找出最恶劣的工况。通常来说幅度大且斜率陡的瞬态是最难处理的。4.2 计算允许的电压跌落电压跌落的允许值取决于负载器件的工作电压范围。比如 MCU 的工作电压是 3.3V±5%也就是最低 3.135V。如果电源标称输出是 3.3V那么允许的跌落是 165mV。但还要留余量给纹波、负载调整率、温度漂移等因素所以实际允许的瞬态跌落可能只有 100mV 左右。对于射频模块允许的电压跌落通常更小。很多射频芯片的数据手册会规定电源电压的最小值比如 3.0V。如果系统电源是 3.3V那么允许的跌落是 300mV。但射频芯片的发射功率和接收灵敏度对电源电压很敏感实际设计中通常会把跌落控制在 100mV 以内。4.3 根据跌落和瞬态电流选输出电容在 LDO 的环路还没来得及响应之前输出电容负责提供瞬态电流。电容的电压变化可以用这个公式估算ΔV I_transient × Δt / C_out其中 I_transient 是瞬态电流幅度Δt 是环路响应时间C_out 是输出电容容量。反过来如果已知允许的电压跌落 ΔV 和瞬态电流 I_transient可以估算需要的电容容量C_out I_transient × Δt / ΔV但这里有一个问题Δt 是环路响应时间这个参数在数据手册里通常不会直接给出。一个经验值是LDO 的环路响应时间大约在 1us 到 10us 之间取决于环路带宽。如果环路带宽是 1MHz响应时间大约是 1us。如果带宽是 100kHz响应时间大约是 10us。举个例子BLE 模块发射时电流从 5mA 跳到 120mA瞬态电流幅度是 115mA。假设 LDO 的环路响应时间是 5us允许的电压跌落是 100mV。那么需要的输出电容是C_out 0.115A × 5us / 0.1V 5.75uF考虑到电容的容差、直流偏压效应和温度特性实际选择的电容容量应该留至少两倍余量也就是 10uF 以上。而且这个电容的 ESL 要尽量小所以最好用多个小容量陶瓷电容并联而不是一个大容量电解电容。4.4 用数据手册的瞬态响应曲线做校核大多数 LDO 的数据手册都会给出负载瞬态响应曲线通常是在特定条件下测的比如负载电流从 10mA 跳到 100mA输出电容是 1uF。你可以根据自己系统的实际条件对照这些曲线做粗略的校核。如果数据手册给出的跌落是 50mV而你的系统允许的跌落是 100mV那就有余量。如果数据手册给出的跌落是 150mV那就需要增大输出电容或者换一个瞬态响应更好的 LDO。但要注意数据手册的测试条件通常比较理想实际 PCB 上的寄生参数会让瞬态响应变差。所以校核时最好留 50% 以上的余量。5. PCB 布局与外围元件动态响应的最后一公里5.1 输出电容的 ESL 和布局电感很多工程师在选输出电容时只看容量和 ESR忽略了 ESL。ESL 是电容的等效串联电感它决定了电容对高频瞬态的响应能力。一个 10uF 的 MLCC 电容ESL 大约在 0.5nH 到 1nH 之间。如果走线长度是 5mm走线电感大约是 5nH。这个走线电感会和电容的 ESL 串联大大降低电容对高频瞬态的响应能力。所以输出电容必须尽量靠近 LDO 的输出引脚和负载的电源引脚。如果负载离 LDO 比较远最好在负载端再放一个小的陶瓷电容做高频旁路。这个电容的容量不需要很大0.1uF 到 1uF 就够了但位置一定要近。5.2 接地回路的设计接地回路的设计对动态响应影响很大。如果 LDO 的接地引脚和负载的接地引脚之间的走线有较大的阻抗负载瞬态电流会在接地回路上产生电压降这个电压降会叠加在输出电压上导致实际的电压跌落比预期更大。正确的做法是LDO 的接地引脚、输出电容的接地端、负载的接地端应该尽量靠近最好在同一个接地点上。如果做不到至少要用宽走线或铺铜来降低接地阻抗。对于高频瞬态接地过孔的电感也很重要所以输出电容的接地端最好用多个过孔连接到地平面。5.3 输入电容的作用被低估了大多数工程师都知道输出电容对瞬态响应重要但往往忽略输入电容。实际上当负载电流突变时LDO 的调整管需要从输入端抽取更多的电流。如果输入电容不够大或者离 LDO 太远输入电压会在瞬态期间跌落导致 LDO 的调整管无法充分导通输出电压的恢复时间会变长。输入电容的容量通常和输出电容相当或者更大。而且输入电容的 ESL 也要小位置也要尽量靠近 LDO 的输入引脚。如果前级是 DC-DC输入电容还要负责吸收 DC-DC 的开关纹波所以容量和布局要求更高。5.4 热回路和噪声耦合LDO 的调整管在瞬态期间会耗散更多的功率如果散热不好调整管的结温会升高影响其导通电阻和响应速度。所以 LDO 的散热焊盘要足够大最好连接到地平面或者专门的散热铜皮。另外LDO 的反馈引脚是高阻抗节点容易受到噪声耦合。反馈走线要尽量短远离开关节点和射频走线。如果反馈分压电阻离 LDO 比较远最好在反馈引脚上加一个小电容做滤波但要注意这个电容会影响环路的相位裕度。6. 没有专业设备怎么测用示波器和电子负载做动态评估6.1 用 MOSFET 和电阻搭建简易瞬态负载专业的负载瞬态测试设备很贵但我们可以用一个大功率 MOSFET 和一个电阻来搭建简易的瞬态负载。MOSFET 的栅极用一个信号发生器驱动漏极通过一个电流采样电阻连接到电源输出源极接地。当栅极收到脉冲信号时MOSFET 导通电源输出通过电阻和 MOSFET 形成回路产生电流阶跃。这个方法的优点是成本低、灵活可以自己控制电流幅度和脉冲宽度。缺点是 MOSFET 的开关速度有限而且电流波形可能不够理想。但对于评估电源的动态响应来说已经足够看出问题了。6.2 示波器探头的正确使用方法测电源瞬态响应时示波器探头的使用方法很关键。如果用普通的长地线探头地线电感会引入很大的测量误差看到的波形可能完全是假的。正确的做法是用弹簧地线或者直接焊接一个短的接地环把探头的接地端尽量靠近被测点。另外示波器的带宽要足够。负载瞬态的上升沿可能在几十纳秒量级如果示波器带宽只有 100MHz看到的波形会严重失真。建议用 500MHz 以上的示波器探头也要用高带宽的。6.3 从波形中读出关键信息测到波形后要关注几个关键指标跌落幅度、恢复时间、过冲幅度、振铃频率。跌落幅度决定了系统是否会触发欠压复位恢复时间决定了负载器件在瞬态后多久能正常工作过冲幅度可能损坏对电压上限敏感的器件振铃频率则反映了环路的稳定性如果振铃很严重说明相位裕度不够。我通常会把这些波形和负载器件的电压范围对照看最恶劣工况下是否有余量。如果余量不足就要考虑增大输出电容、换 LDO、或者优化布局。6.4 实测中容易出现的误判一个常见的误判是用电子负载测动态响应看到波形很好就认为没问题。但电子负载的电流变化率通常只有几安培每微秒而实际系统中 MCU 的电流变化率可以达到几十安培每微秒。所以电子负载的测试结果只能作为参考不能完全代表实际工况。另一个误判是只测了常温下的动态响应没有测高低温。LDO 的环路带宽和输出电容的 ESR 都会随温度变化低温时电解电容的 ESR 会急剧增大导致瞬态响应变差。所以如果产品要在宽温范围内工作动态响应测试必须覆盖温度范围。7. 几个真实项目中的电源动态问题排查记录7.1 BLE 模块通信距离不达标LDO 瞬态响应惹的祸之前做一个 BLE 产品样机测试时通信距离只有标称值的一半。查了天线匹配、晶振精度、协议配置都没问题。后来用示波器看 BLE 模块的电源轨发现每次广播事件时电源电压会跌落约 200mV持续时间约 50us。BLE 模块的工作电压范围是 1.8V 到 3.6V3.3V 供电时跌落 200mV 还在范围内但发射功率明显下降。换了一个瞬态响应更好的 LDO并在模块电源引脚旁边加了一个 10uF 的陶瓷电容通信距离恢复正常。这个案例说明射频模块对电源瞬态的要求比数据手册标称的工作电压范围更严格。7.2 SD 卡写入失败高频纹波导致的数据错误另一个项目是数据采集器用 SD 卡存储数据。测试时发现 SD 卡初始化正常但写入大文件时偶尔失败。用示波器看 SD 卡电源轨发现写入时电源上有约 50mV 的高频纹波频率在 10MHz 左右。这个纹波来自 SD 卡内部的电荷泵通过电源轨传导出来。在 SD 卡电源引脚旁边加了一个 0.1uF 的陶瓷电容和一个磁珠纹波降到 10mV 以下写入失败的问题消失。这个案例说明存储器件的高频瞬态需要专门的高频旁路大容量电容对高频纹波的抑制能力有限。7.3 MCU 随机复位DC-DC 瞬态响应太慢还有一个项目用 DC-DC 给 MCU 供电测试时发现 MCU 偶尔会随机复位。查了复位电路、看门狗、电源监控都没问题。后来用示波器看 MCU 电源轨发现当 MCU 从 Sleep 模式唤醒时电源电压会跌落约 400mV持续时间约 100us。MCU 的欠压复位阈值是 2.9V3.3V 供电时跌落 400mV 就触发了复位。这个问题的根源是 DC-DC 的瞬态响应太慢。DC-DC 的开关频率是 500kHz环路带宽只有 50kHz响应时间约 20us。而 MCU 的唤醒电流阶跃发生在 100ns 内DC-DC 根本来不及响应。后来在 DC-DC 输出端加了一个 100uF 的聚合物电容并在 MCU 电源引脚旁边加了 10uF 陶瓷电容跌落降到 100mV 以内复位问题解决。7.4 从这些案例中总结的排查思路这几个案例有一个共同点问题都出在负载瞬态期间而不是稳态。所以排查电源问题时不能只测稳态电压和纹波一定要测动态响应。而且要用实际负载或者接近实际的瞬态负载来测不能用电子负载的慢速动态测试代替。另外电源问题的排查要有系统性先确认负载的瞬态特性再测电源的动态响应然后对照负载的电压范围判断是否有余量最后通过调整电容、换器件或优化布局来解决。不要一上来就换 LDO 或者加电容那样可能治标不治本。8. 选型与设计检查清单把动态特性纳入常规流程8.1 LDO 选型时必看的几个参数选 LDO 时除了输出电压、输出电流、压差、静态电流这些常规参数还要重点看这几个动态相关参数负载瞬态响应曲线数据手册里通常会给出负载电流阶跃时的输出电压变化曲线。注意看测试条件比如输出电容容量、负载电流跳变幅度和斜率。环路带宽有些数据手册会给出环路带宽或者相位裕度。带宽越高瞬态响应越快。输出电容要求有些 LDO 对输出电容的 ESR 有特定要求选电容时要注意。电源抑制比曲线如果前级是 DC-DC要看 LDO 在开关频率处的 PSRR确保能有效抑制开关纹波。8.2 输出电容的选择与布局检查点输出电容的选择和布局是动态响应的关键。检查清单如下容量是否足够应对最恶劣的负载瞬态按第 4 节的公式估算并留两倍以上余量。ESR 是否在 LDO 要求的范围内太大或太小都可能导致环路不稳定。ESL 是否足够小优先选 MLCC必要时多个并联。位置是否尽量靠近 LDO 输出引脚和负载电源引脚接地端是否用多个过孔连接到地平面如果负载离 LDO 较远负载端是否加了高频旁路电容8.3 系统级电源架构的动态校核在系统级电源架构的动态校核包括列出所有负载的瞬态特性找出最恶劣工况。计算最恶劣工况下的电压跌落对照负载的电压范围判断余量。如果前级是 DC-DC校核 DC-DC 的瞬态响应是否满足后级 LDO 的输入要求。如果系统有低功耗模式校核唤醒时的瞬态响应。如果产品要在宽温范围内工作校核高低温下的动态响应。8.4 测试验证的覆盖范围最后测试验证要覆盖以下场景常温下的稳态电压和纹波。常温下的负载瞬态响应用接近实际的瞬态负载。高低温下的负载瞬态响应。系统在各种工作模式切换时的电源轨波形。如果系统有射频模块要在发射状态下测电源轨。把这些检查点纳入常规设计流程可以避免大部分电源动态特性引起的稳定性问题。我在实际项目中踩过的坑基本上都能通过这些检查点提前发现。电源设计没有捷径但有一套系统的检查方法可以少走很多弯路。
返回列表