
做电源这行时间长了被问得最多的一个问题就是有没有一种电路输入电压比输出电压高的时候能降下来输入电压跌下去的时候又能顶上去答案就是buck-boost 升压降压电路。我第一次接触这个拓扑是在给一块锂电池供电的板子做电源电池从 4.2V 掉到 3.0V 的过程中后级要稳定输出 3.3V单用降压会掉压单用升压又浪费最后只能请出 buck-boost。很多刚入行的朋友看到这个名字会觉得神秘其实它的电路原理说到底就是一条让电感在充电和放能两个状态之间来回切换靠占空比去配比输入和输出的关系。这篇内容我打算按实际做项目的顺序讲从它到底解决什么问题、电感是怎么搬能量的、参数怎么算、板子怎么画、上电怎么调一路讲到用 STM32 做四开关 buck-boost 数字电源时的坑。适合谁看手上有电池供电项目、要做宽压输入电源、或者单纯想把 DCDC 电路原理吃透的朋友都合适。哪怕你只做过 7805看完也能自己搭一版能用的升降压电路。1. 先弄明白 buck-boost 到底在解决什么问题1.1 从一个电池供电的常见场景切入单节锂电池的电压范围大概是 4.2V 满电到 3.0V 截止标称 3.7V。如果你的后级电路需要稳定的 3.3V只用一个降压芯片会怎么样电池在 3.3V 以上时没问题一旦放到 3.3V 以下降压电路就彻底失去调节能力输出跟着电池一路往下掉。反过来只用一个升压芯片把 3.0V 升到 3.3V 是能做到的但满电 4.2V 时你还得往上升效率白白损失而且很多升压芯片在输入高于输出时根本没有稳定的工作状态。这个矛盾就是 buck-boost 存在的理由。它要解决的是输入电压会跨过输出电压这一类场景输入可能高于、等于、也可能低于输出而输出始终要稳。除此之外还有一类场景是输入电压波动巨大比如某些工业现场供电在 9V 到 36V 之间跳输出要固定 12V这也必须用升降压。1.2 三种基本拓扑的分工要先分清很多新手一上来就盯着 buck-boost 看结果连 buck 和 boost 的边界在哪都没搞清参数一算就错。我建议先把三种拓扑的电压关系和适用区间列清楚这三者是递进关系不是互相替代关系。拓扑电压关系开关管数量典型效率适合的场景Buck 降压Vo D × VinD11 个加 1 个二极管90%~96%输入始终高于输出Boost 升压Vo Vin / (1-D)1 个加 1 个二极管88%~94%输入始终低于输出Buck-Boost 升降压Vo Vin × D / (1-D)4 个同步整流85%~95%输入跨过输出或大幅波动看这张表要抓两个点。第一buck 的占空比 D 永远小于 1所以输出一定比输入低boost 的 D 越接近 1输出越高所以输出一定比输入高buck-boost 在 D0.5 时输出等于输入D 小于 0.5 时降压大于 0.5 时升压。第二开关管数量直接决定了成本和驱动复杂度单管方案便宜但性能受限四管方案贵一点但效率和控制品质高出一截。1.3 buck-boost 的两条技术路线差别很大同样叫 buck-boost市面上其实有两种完全不同的实现新手极容易混淆。第一种是单管反相型也有人叫经典 buck-boost 或 Cuk 的简化版。它的结构是电感一端接输入和开关管节点开关管到地另一端通过二极管接到输出输出电容的负极接在输入的回路上结果就是输出相对输入是负电压。这个方案只需要一个开关管、一个二极管、一个电感元器件少、便宜缺点是输出负压、开关管和电感的电流应力大、效率一般轻载时纹波也难看。像燃气点火器一类的低成本脉冲升压场景用的就是类似思路的简化电路只要瞬间高压不追求稳压精度。第二种是四开关同相型英文里常叫 Four-Switch Buck-BoostFSBB。它用两个半桥夹住一个电感左边的半桥接输入右边的半桥接输出四个管子全是 MOSFET输出和输入同相位、同极性效率高还能做成双向。现在说的基于 STM32 的四开关 buck-boost 双向升降压数字电源基本都是这个结构。双向的意思是能量能从输入流到输出也能从输出倒流回输入这在电池充放电一体的设备里非常关键。下面讲原理和参数主要围绕四开关型展开因为它是目前真正实用的方案。2. 把电感储能和伏秒平衡这两个法宝吃透2.1 电感为什么能搬运能量要理解升降压先得理解电感。电感的脾气是电流不能突变你给它加电压它的电流慢慢往上爬同时把能量存进磁场里储能大小是 0.5 × L × I²。你把外加电压撤掉它会拼命维持原来的电流于是自己产生一个反电动势把电流挤出去这就是放能。打个生活化的比方电感像个惯性很大的飞轮。你推它它慢慢转起来并把你的力存下来你松手它靠着惯性继续转还能带动别的负载。开关管做的就是推和松这个动作导通时把输入电压加在电感上电感电流上升、储能增加关断时电感电流必须找路径继续流于是通过另一个回路把能量送到输出。所以 buck-boost 的电路原理核心不是电压变换而是能量的中转储存。2.2 伏秒平衡是推导所有电压比的总钥匙电感在稳态下一个开关周期内电流从周期开始的值回到同样的值意味着它两端电压对时间的积分必须等于零。这个规律叫伏秒平衡导通期间正电压乘以导通时间等于关断期间负电压乘以关断时间。用这个式子buck、boost、buck-boost 的电压比可以全部推出来不用背公式。推导的时候有两个简化假设一是 MOSFET 导通压降和二极管压降先忽略二是电感电流连续CCM也就是电流不会跌到零。实际设计里这两个假设带来的偏差后面讲效率的时候再补。2.3 三种拓扑的电压比推导过程先看 buck。开关管导通时电感左端接 Vin右端接 Vout所以电感电压是 Vin − Vo导通时间是 D×T。开关管关断时电感通过下管续流两端电压变成 −Vo持续 (1−D)×T。伏秒平衡写出来(Vin − Vo) × D × T Vo × (1 − D) × T两边约掉 T展开化简得 Vo D × Vin。这就是降压的来历D 最大取到接近 1输出接近输入。再看 boost。开关管导通时电感一端接 Vin另一端被拉到地电感电压就是 Vin持续 D×T关断时电感通过二极管把能量送到输出两端电压是 Vin − Vo此时 Vo 大于 Vin所以是负值持续 (1−D)×T。伏秒平衡Vin × D × T (Vin − Vo) × (1 − D) × T 0化简得 Vo Vin / (1 − D)。D 从 0 往 1 走输出从 Vin 一路升到无穷理论上实际受寄生参数限制一般 D 不超过 0.85。最后看四开关 buck-boost 的升降压模式。左桥臂的上管 S1 和右桥臂的下管 S4 同步导通时电感左端接 Vin右端接地电感电压是 Vin持续 D×TS2 和 S3 导通时电感左端接地、右端接 Vout电感电压是 −Vo持续 (1−D)×T。伏秒平衡Vin × D × T Vo × (1 − D) × T得到Vo Vin × D / (1 − D)。这就是四开关升降压的核心公式D0.5 时输出等于输入往下调降压往上调升压。提示这三个式子一定要自己动手推一遍光看没有用。我见过太多人参数算错追根究底就是伏秒平衡的符号方向搞反了把放电阶段的电压写成了正号。2.4 四开关的三种工作模式与切换逻辑四开关结构的巧妙之处在于它不是一个模式硬扛全程而是根据输入输出关系切换模式让效率始终处在合理区间。常用的是三种工作模式S1S2S3S4电压关系适用区间Buck 模式PWM互补常通常断Vo D × VinVin 明显高于 VoBoost 模式常通常断PWM互补Vo Vin / (1-D)Vin 明显低于 VoBuck-Boost 模式PWM互补PWM互补Vo Vin × D/(1-D)Vin 与 Vo 接近为什么要在接近的时候切到四管同时开关的模式因为纯 buck 模式在 Vin 只比 Vo 高一点点时占空比会接近 100%高侧管子长期导通自举电容充不上电驱动会失效纯 boost 模式在 Vin 接近 Vo 时占空比接近 0也有最小脉宽和采样窗口的问题。四开关模式让两个桥臂都参与开关每个管子都有足够的关断时间来刷新自举电容波形也更干净。模式切换不能贴着临界点反复横跳否则输出会抖。工程上的做法是加滞环比如输出目标 5V检测到输入升到 5.6V 以上才从 Boost 切到 Buck-Boost降到 5.4V 以下才切回去中间留 200mV 的死区。这个滞环宽度要根据输入电压的波动速度来定波动快就留宽一点。3. 关键元器件选型与参数计算实操3.1 电感怎么算、怎么挑电感是 buck-boost 的心脏选错了不是效率低就是直接饱和炸管。计算顺序是先确定工作模式和占空比再定纹波电流比例最后反推电感值。纹波电流一般取电感平均电流的 20% 到 40%。比例太小电感体积大、成本高比例太大峰值电流高、损耗大、输出纹波也大。我通常取 30% 起步调试时再根据实测波形微调。举个实打实的例子。输入 5V输出 12V负载 1A开关频率 300kHz目标效率按 0.9 估。这时候工作在 Boost 模式占空比 D 1 − Vin/Vo 1 − 5/12 ≈ 0.583。输入电流先算出来Iin Vo × Io / (Vin × η) 12 × 1 / (5 × 0.9) ≈ 2.67A。Boost 模式下电感平均电流就等于输入电流所以电感平均电流是 2.67A。纹波取 40%ΔIL ≈ 1.07A。电感值 L Vin × D / (fsw × ΔIL) 5 × 0.583 / (300000 × 1.07) ≈ 9.08μH取标准值 10μH。峰值电流是 Iin ΔIL/2 ≈ 2.67 0.53 3.2A。电感的饱和电流至少要在峰值电流上留 30% 余量也就是选 4.2A 以上的型号我一般直接上 5A 规格给瞬态和温升留空间。选电感还有两个容易忽略的参数。一是直流电阻 DCR它直接决定铜损2.67A 下 DCR 为 50mΩ 就是 0.36W 的发热别小看。二是磁芯材料铁氧体损耗低但饱和磁通小一体成型电感合金粉芯饱和特性软、抗冲击好是数字电源里的主流选择。3.2 开关管和自举驱动四开关结构里四个管子都是 N 沟道 MOSFET。高侧两个管子S1、S3的源极不在系统地上必须用自举或隔离驱动才能开通。绝大多数同步 buck-boost 控制器和 STM32 方案都用自举电容成本最低。自举电容的容量估算公式是 Cboot ≥ 10 × Qg / ΔV其中 Qg 是 MOSFET 的栅极总电荷ΔV 是允许的自举电压跌落。假设选了一颗 Qg 20nC 的管子允许跌落 0.5V那 Cboot ≥ 10 × 20nC / 0.5V 400nF实际取 1μF 的 X7R 陶瓷电容更稳。旁边还要串一个自举二极管用快恢复或者肖特基反向恢复时间要短否则高侧开关瞬间会有反向电流灌回来。MOSFET 的耐压怎么定一般取输入或输出电压最大值的 1.5 到 2 倍。比如 12V 系统里开关节点上可能看到接近 2 倍输入的振铃尖峰选 30V 的管子比较合适选 20V 就悬了。Rds(on) 和 Qg 是矛盾的Rds(on) 小意味着芯片面积大、Qg 大开关损耗高。开关频率 300kHz 以上时优先选 Qg 小的频率低于 150kHz 时可以偏重低 Rds(on)。注意自举方案有个硬伤占空比不能长期贴着 100%。纯 buck 模式在输入接近输出时占空比会飙到 95% 以上自举电容来不及充电高侧驱动电压会慢慢掉下去管子进入线性区发热。解决办法是限制最大占空比比如 92%或者干脆切到四开关模式让占空比回到 50% 附近。3.3 输入输出电容的容量计算输出电容决定输出电压纹波计算要分模式。Buck 模式下电感电流是连续的输出电容只承担纹波电流纹波电压近似 ΔVout ΔIL / (8 × fsw × Cout)。还是上面的例子如果工作在 buck 模式、ΔIL 取 0.6A、fsw 300kHz、要求纹波小于 30mV那 Cout ≥ 0.6 / (8 × 300000 × 0.03) ≈ 8.3μF实际要留降额选 22μF 以上。Boost 模式就麻烦得多因为输出端只在关断期间从电感拿电流输出电容得独立扛住整个关断期间。近似公式是 ΔVout Io × D / (fsw × Cout)。代入 1A、D0.583、300kHz、30mVCout ≥ 1 × 0.583 / (300000 × 0.03) ≈ 64.8μF。这个电容值比 buck 模式大一个量级所以 boost 类应用的输出电容普遍偏大。输入电容的作用是吸收开关瞬间的脉冲电流减小对前级的干扰。经验值是按每安培输入电流配 10μF 到 22μF并且要紧贴半桥的上下管放置走线越短越好。陶瓷电容的直流偏压特性要特别注意标称 22μF 的 0805 X5R 电容在 12V 偏压下可能只剩 8μF选型时一定要看厂家给的偏压曲线实际容量按标称值的 50% 到 70% 估。3.4 电压电流采样与 STM32 数字控制方案要做数字电源采样精度直接决定控制品质。输出电压用电阻分压到 ADC 量程内STM32 的 ADC 是 12 位、参考 3.3V分压后要保证满量程输出不超过 3.0V留点余量。分压电阻不要选太大否则 ADC 采样电容充电不够、采样值偏低也不要太小白白耗电。我一般用 100k 对上 20k 这个量级再并联一个 100nF 的电容做 RC 滤波转折频率设在开关频率的十分之一左右既滤掉了高频噪声又不会拖慢环路响应。电流采样有三种常见做法。第一种是串一个分流电阻配合电流检测放大器精度最高但要加一个功率电阻有额外损耗。第二种是用电感的 DCR 加 RC 网络间接测量无损但精度和温漂都一般。第三种是直接利用下管的 Rds(on) 在导通期间采样省器件但对时序要求高。做实验项目的话我推荐第一种电路直观、数据可信调试起来心里有底。实操心得ADC 采样时刻一定要避开开关瞬间。MOSFET 开关的一两百纳秒里地弹和振铃非常严重如果这时候采样读回来的值会跳得没法看。正确做法是让定时器在 PWM 周期中点触发 ADC此时电感电流处于三角波中间开关噪声最小。STM32 的高级定时器可以直接输出触发信号给 ADC用不着软件干预。4. 从仿真到实测的完整搭建流程4.1 先仿真别裸板硬上我踩过最大的坑就是拿到参数不仿真直接画板结果第一次上电就冒烟。后来养成习惯任何开关电源方案先在仿真里把波形跑出来。LTspice 免费、模型全跑 buck-boost 足够PSIM 和 Simulink 更适合做控制环路设计。仿真要重点看三样东西。第一是电感电流波形确认是否连续、峰值有没有超过饱和电流。第二是开关节点电压波形看有没有过冲和振铃如果过冲接近管子耐压说明布局里的寄生电感太大得在硬件上预留 RC 吸收。第三是启动过程看输出电压有没有过冲、启动电流有没有失控。仿真里把输入电压做一次从 9V 到 18V 的斜坡扫描就能提前发现模式切换点的问题。4.2 PCB 布局的几条硬规矩布局对开关电源的影响比参数计算还要大。同样一套参数布局好和布局差效率能差 5 个百分点噪声能差十几倍。第一条规矩是功率环路面积最小化。输入电容、左半桥的上下管、电感这四个元件构成的环路里电流变化率极高环路面积越大辐射和振铃越严重。做法是把输入电容紧贴两个管子管子到电感的走线尽量短而宽。第二条是地平面处理。功率地和大信号地要在单点连接通常在输出电容的负极汇合不要到处乱连。模拟采样部分的地线单独走从分压电阻一路走到 ADC 的模拟地脚不要和功率电流共用一段铜皮。第三条是开关节点SW 点。这个点电压跳变剧烈铜皮面积要小够过电流就行多出来的铜皮就是一块发射天线。同理自举电容和自举二极管要靠近高侧驱动脚走线短。第四条是电流采样的开尔文连接。分流电阻的采样线要从电阻焊盘内侧引出不能和主电流路径共用走线否则测到的是走线电阻加分流电阻的压降误差能到百分之几十。4.3 上电调试的步骤不能省调试开关电源有个铁律先限流、后加载、先开环、后闭环。具体步骤我整理如下。第一步用可调直流电源供电把限流值设到额定电流的三分之一输出电压从最低开始慢慢往上调。这一步的目的是防止有短路或驱动错误时直接烧板。第二步不接负载先测驱动波形。用示波器看四个管子的栅极波形确认死区时间存在一般在 100ns 到 500ns确认上下管没有同时导通。这一步绝对不能跳过直通是炸管第一杀手。第三步看开环节点波形。给一个固定占空比看 SW 点波形是否干净、自举电压是否稳定。如果 SW 点振铃厉害到超过管子耐压先停下来改布局或加吸收电路。第四步接轻负载10% 额定切换到闭环观察输出电压能不能稳定在目标值。用示波器看输出纹波用电流探头看电感电流。第五步逐步加负载到满载同时用热像仪或点温枪监测管子、电感、分流电阻的温度。温升超过 60K 就要回头查损耗。提示调试时功率地和示波器探头的接地夹之间不要形成额外回路。用差分探头测高压侧最安全如果只有单端探头把探头地夹在离测试点最近的功率地上不要拉到板子另一头去。4.4 波形验证和效率测量怎么做输出电压纹波要在满载下测带宽限制到 20MHz否则会把高频开关噪声也算进去。纹波要求一般是输出电压的 1% 以内。效率测量用双表法输入端一个电压表一个电流表输出端同样效率就是 Pout/Pin。要在一个输入电压范围内扫一遍比如 9V、12V、15V、18V 各测一次这样能看出模式切换点附近的效率洼地。四开关 buck-boost 在输入等于输出附近效率最低因为这时候四个管子都在开关损耗最大通常比纯 buck 或纯 boost 模式低 3 到 5 个百分点这是正常现象不用怀疑。5. 常见问题与排查速查5.1 效率明显低于预期效率上不去先分清楚是哪种损耗占主导。用一个简单的办法判断把开关频率降低一半如果效率明显上升说明开关损耗占主导问题出在驱动电阻偏大、Qg 偏大或者死区时间过长。如果频率降下来效率没怎么变那就是导通损耗重点查 MOSFET 的 Rds(on)、电感的 DCR、分流电阻的阻值。死区时间是个隐蔽的效率杀手。死区过长电感电流会通过体二极管续流体二极管正向压降比 MOSFET 导通压降高得多损耗翻倍。用示波器同时看上下管的栅极和 SW 点波形找到死区期间 SW 点出现负电压或高电压的平台那就是体二极管在导通。逐步缩短死区直到直通风险出现再往回退一点这就是最优值。5.2 输出电压振荡或者不稳振荡分两种。一种是低频大幅度的振荡周期在毫秒级这通常是环路补偿没调好比例增益太大或者积分时间太短。解决方向是先把积分作用关掉只留比例慢慢加大比例直到输出开始震荡然后退回到振荡临界点的一半最后再加积分把稳态误差消掉。另一种是高频振荡周期和开关周期同量级这往往是采样噪声引起的。查的方向是 ADC 采样时刻是否避开了开关瞬间、采样滤波电容是否够大、分压电阻是否太大导致采样值不稳。还有一种可能是自举电容容量不够高侧驱动时好时坏表现为输出每隔几个周期跳一下。5.3 管子发热严重甚至炸管炸管的原因就那么几种我按出现频率排一下。最多的是死区不足导致直通上下管同时导通输入直接对地短路瞬间电流能到几百安。第二是电感饱和电感一旦饱和电流变化率失去限制峰值电流失控管子撑不住。第三是驱动电压不足自举电容失效或者驱动电阻过大管子工作在放大区功耗剧增。第四是开关节点过冲超耐压布局寄生电感太大。排查顺序是先看死区波形再看电感电流是否出现尖峰饱和的典型特征再量自举电容两端电压是否稳定最后看 SW 点过冲幅度。5.4 排查速查表把上面这些整理成一张表调试时对着查会快很多。现象最可能的原因优先排查动作效率比仿真低很多死区过长、驱动电阻偏大看栅极和 SW 波形缩短死区输出低频振荡环路增益过大、积分太强减小比例增益重调补偿输出高频抖动ADC 采样受开关噪声干扰采样点移到 PWM 中点加大滤波管子发烫但能工作导通损耗大或驱动不足量 Rds(on) 和栅极电压上电即炸管上下管直通、死区不够查死区配置和驱动时序轻载时输出偏高进入 DCM 模式环路不适应增加假负载或改用强制 CCM模式切换时输出跳变切换滞环太窄加宽滞环或做平滑过渡6. 数字电源扩展四开关 buck-boost 加 STM32 怎么落地6.1 为什么要用 MCU 做闭环模拟控制器便宜、响应快但一旦方案定型就很难改。用 STM32 做数字控制好处是参数全在软件里改补偿、改软启动、改保护阈值都是改几行代码的事还能做通信上报、多路电源时序管理、故障记录这些在模拟方案里要堆一堆外围电路。四开关 buck-boost 用 MCU 控关键是要有能输出互补带死区 PWM的定时器。STM32 的高级定时器 TIM1 和 TIM8 各有三对互补通道正好覆盖两个桥臂还富余一路用中心对齐模式时 PWM 谐波特性也更好。6.2 PWM 和死区的配置要点下面是一段配置示意重点是死区时间的换算。假设定时器时钟是 170MHz一个 tick 约 5.88ns要 200ns 死区就写 34。/* TIM1 中心对齐 PWM 互补输出 死区用于四开关半桥驱动 */ htim1.Instance TIM1; htim1.Init.Prescaler 0; /* 不分频 */ htim1.Init.CounterMode TIM_COUNTERMODE_CENTERALIGNED1; /* 中心对齐 */ htim1.Init.Period 1000 - 1; /* 一个周期 2000 个 tick */ htim1.Init.ClockDivision TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter 0; HAL_TIM_PWM_Init(htim1); sBreakDeadTimeConfig.OffStateRunMode TIM_OSSR_ENABLE; sBreakDeadTimeConfig.OffStateIDLEMode TIM_OSSI_ENABLE; sBreakDeadTimeConfig.LockLevel TIM_LOCKLEVEL_OFF; sBreakDeadTimeConfig.DeadTime 34; /* 34 x 5.88ns ≈ 200ns按实际时钟核对 */ sBreakDeadTimeConfig.BreakState TIM_BREAK_DISABLE; sBreakDeadTimeConfig.AutomaticOutput TIM_AUTOMATICOUTPUT_ENABLE; HAL_TIMEx_ConfigBreakDeadTime(htim1, sBreakDeadTimeConfig);中心对齐模式有个额外好处PWM 的比较事件在计数器上溢和下溢时各触发一次天然形成对称波形对采样时刻的定位也更方便让 ADC 在周期中点触发读到的正好是电感电流的平均值附近。6.3 电压环用增量式 PID 更省事数字电源的电压环我常用增量式 PID。它的好处是不用处理积分项的累加溢出输出直接是占空比的增量限幅也好做。/* 增量式 PID输入参考值和反馈值输出占空比增量累加结果 */ typedef struct { float kp; float ki; float kd; float err[3]; /* err[0] 当前err[1] 上次err[2] 上上次 */ float out; /* 占空比输出范围 0.0 ~ 1.0 */ float out_min; float out_max; } vloop_t; float vloop_step(vloop_t *p, float ref, float fb) { float inc; p-err[0] ref - fb; inc p-kp * (p-err[0] - p-err[1]) p-ki * p-err[0] p-kd * (p-err[0] - 2.0f * p-err[1] p-err[2]); p-err[2] p-err[1]; p-err[1] p-err[0]; p-out inc; if (p-out p-out_max) p-out p-out_max; /* 占空比上限兼顾自举刷新 */ if (p-out p-out_min) p-out p-out_min; return p-out; }调参顺序是先把 ki 和 kd 置零只留 kp从小往大加加到输出开始等幅振荡然后取这个值的一半。接着加 ki 消除稳态误差ki 太大会引起低频摆动。最后如果切换负载时过冲明显再加一点 kd。整个环路的执行周期要固定用定时器中断触发抖动大了控制效果会明显变差。6.4 模式切换在软件里怎么实现软件实现模式切换比模拟方案灵活得多。我的做法是用一个状态机输入是 ADC 采到的 Vin 和 Vout输出是当前工作模式。切换条件加上滞环和延时计数连续 50 个控制周期都满足切换条件才真正切这样能滤掉瞬态干扰引起的误判。切换的瞬间要注意占空比的连续性。从 Boost 模式切到 Buck-Boost 模式时如果占空比直接跳变输出会有一个明显的扰动。处理方法是在切换过程中对占空比做几毫秒的斜率限制让它平滑过渡同时把积分项清零或者做限幅避免切换瞬间积分饱和。保护功能也应该在软件里做全输入过压欠压、输出过压过流、电感电流峰值限制、过温保护。这些在模拟方案里要堆一堆比较器在 MCU 里就是几个判断语句。不过保护逻辑的响应速度要做到微秒级所以过流保护最好还是走硬件比较器直接封锁 PWM软件只做记录和恢复。7. 几个让我印象深刻的踩坑记录讲几个实际踩过的坑比看十遍理论有用。有一次做 12V 输入、12V 输出的模块图省事一直用纯 Buck 模式占空比接近 95%。刚开始满载能跑跑了两小时输出慢慢往下掉一量自举电容两端电压只剩 4V 了。后来改成 Buck-Boost 模式占空比回到 50% 附近同样的负载连续跑了八小时都没事。这件事让我彻底记住高侧自举驱动必须给电容留充电时间占空比不能贴着极限用。还有一次是电感选型踩的坑。仿真的时候电感纹波很好看实际板子上电感啸叫电流波形顶部被削平了。拆下来一测买的电感标称饱和电流 4A但那个数值是在 20℃ 下测的实际板内温度到 80℃ 时饱和电流掉了差不多三成工作峰值正好卡在临界点上。后来换成饱和电流 6A、温升指标更明确的型号问题解决。所以我现在的习惯是电感的饱和电流按计算峰值再留 50% 余量并且优先选有温度降额曲线的型号。最后分享一个调试小技巧。四开关 buck-boost 的四个管子谁先开谁后开对波形的干净程度有影响。我在测电流采样噪声的时候发现把采样时刻从 PWM 周期起点挪到中点后ADC 读数的波动从正负 30 个码字降到了正负 5 个码字环路一下就好调了很多。这个改动几乎没有成本就是把定时器的触发比较值改一下但对控制品质的提升非常直接。如果你也在用 MCU 做电源采样时刻这件事值得花半小时专门优化一下。