# 基于STM32的同步整流Buck-Boost数字电源 开源

**URL:** <https://bbs.eeclub.top/t/topic/114>\
**Category:** 开源项目 / Open-Source Project\
**Tags:** Power, Buck-Boost, STM32, Open-Source\
**Created:** [2025 年10 月 30 日 15:13 UTC](https://bbs.eeclub.top/t/topic/114 "2025-10-30T15:13:56Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

作者： ![yeanshi](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/yeanshi/32/1989_2.png) [@yeanshi](https://bbs.eeclub.top/u/yeanshi)\
发布日期： [2026 年6 月 8 日 12:18 UTC](https://bbs.eeclub.top/t/topic/114/83 "2026-06-08T12:18:05Z")

</div>

![image](https://s3.eeclub.top/original/2X/6/69e4fcdaa9b46525e1ec09dbf4f9f9d1acfbb232.png)为什么usb2的CC1和CC2都没有接下拉电阻，并且usb2的gnd接了vin-而不是系统地，这样是不是串口会不稳定，并且会影响adc采样

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2026 年6 月 8 日 12:29 UTC](https://bbs.eeclub.top/t/topic/114/84 "2026-06-08T12:29:03Z")

</div>

接vin-是为了让输入电流经过采样电阻，这样如果只接USB2时也能采样到输入电流

---

<div class="post-metadata">

作者： ![minibug](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/m/3e96dc/32.png) [@minibug](https://bbs.eeclub.top/u/minibug)\
发布日期： [2026 年6 月 9 日 05:10 UTC](https://bbs.eeclub.top/t/topic/114/85 "2026-06-09T05:10:35Z")

</div>

![IMG_3145](https://s3.eeclub.top/original/2X/c/c6f95ef71365ad570a3facc5f2564371bd94ea59.jpeg)博主您好，请问为什么输出电压比设定的电压高呢

---

<div class="post-metadata">

作者： ![muzi1111](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/muzi1111/32/1969_2.png) [@muzi1111](https://bbs.eeclub.top/u/muzi1111)\
发布日期： [2026 年6 月 9 日 05:55 UTC](https://bbs.eeclub.top/t/topic/114/86 "2026-06-09T05:55:39Z")

</div>

博主你在写软件时有没有使用HRTIM的fualt事件？我使用比较器实现当电感电流大于我的设定值时，mos管直接硬件关断，但是在软起动过程中，我发现我的PWM输出好像是关闭的，感觉是电容充电电流太大，导致撞到我的设定值，使得我的PWM输出关闭 ，我想知道如何配置STM32的HRTIM实现Cycle-by-Cycle，就是在软起动期间，如果撞到我设定的电感电流最大值后，PWM输出马上关断，但是下个周期PWM输出自动打开，

---

<div class="post-metadata">

作者： ![muzi1111](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/muzi1111/32/1969_2.png) [@muzi1111](https://bbs.eeclub.top/u/muzi1111)\
发布日期： [2026 年6 月 9 日 05:57 UTC](https://bbs.eeclub.top/t/topic/114/87 "2026-06-09T05:57:18Z")

</div>

你的测量电路是否校正了，你画的电路板会有许多寄生参数，导致测量电路的增益有一些小变化，需要校正后才能比较精确的输出正确的值

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2026 年6 月 9 日 06:20 UTC](https://bbs.eeclub.top/t/topic/114/88 "2026-06-09T06:20:50Z")

</div>

软件有没有改过，检查一下采样电路有没有问题

---

<div class="post-metadata">

作者： ![muzi1111](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/muzi1111/32/1969_2.png) [@muzi1111](https://bbs.eeclub.top/u/muzi1111)\
发布日期： [2026 年6 月 9 日 09:22 UTC](https://bbs.eeclub.top/t/topic/114/89 "2026-06-09T09:22:31Z")

</div>

大佬，我加入了硬件过流保护（逐周期限流），也放缓了开环软起动（现在500Hz，步进0.001），没加电流内环，因为我觉得先把开环完成后再加闭环，

1.我上板测试时，发现空载时，电路可以正常工作，我加一个20R的负载（输出电压Vo设为30V)后，MOS再次损坏，这个可能的原因是什么？

2。空载与带载的电路和代码是完全一样的，为什么会出现MOS损坏的情况？

3.下一步应该怎么做？是把我的输出电容减小吗？因为之前我的输出电容比较小的时候，电路带载也可以正常工作，但是我加完输出电容后再上电，mos就坏了，我把输出电容减小后，电路能否正常工作？为什么会这样？

---

<div class="post-metadata">

作者： ![ABC](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/abc/32/101_2.png) [@ABC](https://bbs.eeclub.top/u/ABC)\
发布日期： [2026 年6 月 9 日 12:59 UTC](https://bbs.eeclub.top/t/topic/114/90 "2026-06-09T12:59:11Z")

</div>

这个问题很典型，软启动时输出电容充电的浪涌电流确实容易误触发过流保护。如果你用的是 **HRTIM Fault 锁存模式（Latched）** ，那一旦触发就会一直关断，直到软件手动清除，这就是你看到的"PWM彻底关闭"现象。

要实现 **Cycle-by-Cycle（逐周期限流）** ，核心思路是： **Fault 只关断当前周期，下个周期自动恢复** 。HRTIM 硬件上是完全支持这个功能的，不需要软件每个周期去手动清标志。

给你几个配置要点，直接对着寄存器或者 HAL 配就行：

* * *

### 1. Fault 源配置为"自动恢复"模式

在 `HRTIM_FLTINR1/2` 里，找到你接比较器的那一路 Fault（比如 Fault1），关键看这两个位：

- **FLTxP[1:0]（Fault Polarity）**：根据你的比较器输出极性配，一般是高电平有效。
- **FLTxSRC[1:0]（Fault Source）**：选外部输入（COMPx\_OUT 或者外部引脚）。
- **FLTxF[3:0]（Fault Filter）**：建议加几 ns 的滤波，防止比较器毛刺误触发。

最重要的是 **`HRTIM_FLTxR` 寄存器里的 FLTxRSM（Fault Reset Mode）** ：

- 配成 **0：Immediate** —— Fault 信号消失后，PWM 立即恢复。
- 不要配成 Latched（锁存），那是故障保护用的，不是逐周期限流用的。

* * *

### 2. Timer 级 Fault 响应配置

在 `HRTIM_TIMxFLTR` 寄存器里（x 对应你的 Timer，比如 TIMA/B/C/D）：

- **FLTxEN** ：使能对应的 Fault 通道。
- **FLTLCK** ：软启动期间建议先不锁死，保持自动恢复。
- **Fault 保护输出状态** ：配成 **“输出无效电平”** （Active 状态关断 MOS），具体看你上下管驱动是高有效还是低有效。HRTIM 的 Fault 输出可以独立配置 Set/Reset 状态。

* * *

### 3. 关键：消隐（Blanking）或软启动期间临时抬高阈值

软启动时，空电容充电电流 `I = C × dV/dt`，如果占空比爬升太快，这个浪涌很容易超过你的正常工作限流点。除了改 HRTIM 模式，建议从系统层面做配合：

**方案 A：软启动期间加电流消隐（Current Blanking）**  
HRTIM 本身支持 **Fault Blanking Window** ，在 PWM 开通后的一段时间内屏蔽 Fault 输入。但这个更适合屏蔽开关噪声，对软启动几十 ms 的充电过程不太够用。

**方案 B：软启动分阶段限流（推荐）**

- 软启动前 50ms~100ms，把比较器阈值临时抬高（比如正常限流 10A，软启动期间设到 15A 或 20A）。
- 等输出电压爬到设定值的 80% 左右，再切回正常的逐周期限流阈值。
- 这个切换可以用 HRTIM 的 DMA 联动，或者软件定时器去做，不占用 CPU 周期。

**方案 C：用 HRTIM 的 Delayed Protection 模式**  
如果你用的是 G474 的 HRTIM，Timer 支持 **Delayed Protection** （在 `HRTIM_OUTxR` 里配置），可以设置 Fault 触发后不是立即全关，而是只限制占空比，但这个更适合打嗝（Hiccup）模式，不是严格的 Cycle-by-Cycle。

* * *

### 4. 代码层面的 HAL 示例（参考思路）

```c
// 假设用 Fault1，接 COMP1_OUT，高电平有效
HRTIM_FaultCfgTypeDef pFaultCfg = {0};

pFaultCfg.Source = HRTIM_FAULTSOURCE_DIGITALINPUT;
pFaultCfg.Polarity = HRTIM_FAULTPOLARITY_HIGH;
pFaultCfg.Filter = HRTIM_FAULTFILTER_NONE; // 或加 2-3 个时钟滤波
pFaultCfg.Lock = HRTIM_FAULTLOCK_READWRITE; // 不锁死

HAL_HRTIM_FaultConfig(&hhrtim, HRTIM_FAULT_1, &pFaultCfg);

// 关键：配置为自动恢复模式
HAL_HRTIM_FaultResetConfig(&hhrtim, HRTIM_FAULT_1, HRTIM_FAULTRESETMODE_IMMEDIATE);

// Timer A 使能 Fault1 响应
HAL_HRTIM_TimerFaultConfig(&hhrtim, HRTIM_TIMERINDEX_TIMER_A, HRTIM_FAULT_1, HRTIM_TIMFAULTENABLE_FAULT1);

```

然后在中断里（如果用了中断）或者主循环里， **不需要手动清 Fault 标志** ，硬件会在比较器输出变低后自动恢复 PWM。你唯一要关注的是：如果连续 N 个周期都触发 Fault，说明真的过流了，这时候软件再介入降占空比或关断。

* * *

### 5. 调试建议

用示波器抓三波形对比：

1. 电感电流（或采样电阻电压）
2. 比较器输出（直接看 HRTIM Fault 引脚）
3. HRTIM PWM 输出

如果 PWM 关断后，比较器输出变低了，但 PWM 没恢复 → 说明 FLTxRSM 没配成 Immediate，还在 Latched。  
如果 PWM 每个周期都关断一下又打开 → 说明 Cycle-by-Cycle 生效了，只是软启动电流真的太大，需要配合方案 B 临时抬阈值。

* * *

**总结** ：你要的 Cycle-by-Cycle 就是 **Fault 自动恢复模式 + 不锁存** ，HRTIM 硬件原生支持。软启动误触发的问题，建议配合 **软启动阶段动态调整比较器阈值** 来解决，比单纯改 HRTIM 更可靠。

---

<div class="post-metadata">

作者： ![ABC](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/abc/32/101_2.png) [@ABC](https://bbs.eeclub.top/u/ABC)\
发布日期： [2026 年6 月 9 日 13:16 UTC](https://bbs.eeclub.top/t/topic/114/91 "2026-06-09T13:16:06Z")

</div>

你这个问题很典型，空载能活、带载就炸，说明你的开环软起动根本没过"电流应力"这一关。

**先直接回答你三个问题：**

1. **空载能工作，带20R就炸** ，是因为带载启动时电感电流= **输出电容充电电流 + 负载电流** 。空载时电感只需要给电容充电，电流小；带20R负载（1.5A）时，同样的占空比步进下，电感需要额外扛住这1.5A的直流分量，峰值电流很容易顶穿你电感12A的饱和点。电感一饱和就等同于导线，58V直接硬怼在MOS的Rds(on)和走线电阻上，电流瞬间几十安培。你那个"逐周期限流"要么采样点不对，要么响应速度跟不上饱和后的电流上升斜率，根本保不住。

2. **代码一样但工况天差地别** 。开环控制是瞎子，它不管后面是空载还是满载，都按固定步进推占空比。空载启动是"散步"，带载启动是"负重爬山"，你让电路用同样的节奏去跑，电感电流峰值在带载时可能是空载的几倍，它不炸才怪。

3. **减小输出电容确实能暂时不炸** ，因为启动瞬间需要的充电电荷量少了，电感电流峰值降低，离饱和点更远。但这只是 **掩耳盗铃** ——你总不能以后产品只用小电容吧？根本原因是你的控制没有限流。下一步最该做的不是调电容，而是 **立刻在电感回路串个采样电阻（或电流探头），用示波器抓一把带载启动的电流波形** ，看看峰值到底跑到了多少。

* * *

**具体分析和建议：**

你现在等于"半裸奔"——有硬件OCP但无电流闭环，软起动步进0.001听起来温柔，但带大电容+负载启动时，电感电流峰值早就超过12A了。CSD19534Q5A虽然脉冲电流能扛100A，但那是建立在 **电感没饱和、电流受控** 的前提下。电感一饱和，电流不受控，管子几微秒内就热熔穿硅片，GDS全短路。

**为什么只炸Buck侧？**  
Buck模式下Buck上管是主开关，直接面对58V输入和饱和电感的"近似短路"。Boost侧上管常通，只流过相对平稳的负载电流，没有Buck上管那种高频硬开关+饱和冲击的双重debuff。能量从输入端来，Buck上管是第一道闸，它先死很正常。

**你下一步该干什么（按优先级）：**

1. **抓波形确认死因** ：把输出电容减回470uF，带20R负载，在电感上串个0.1Ω采样电阻（或直接用电流探头），用示波器看启动电流。我赌你启动峰值超过15A。如果减电容后峰值降到10A以内能正常启动，那就证实是 **启动电流饱和** 导致的炸管。

2. **检查你的硬件OCP** ：逐周期限流的采样点在哪？如果是采Buck下管（续流期）的电流，那上管导通期间的电流尖峰你根本看不到，有至少1个开关周期的死区。电感饱和往往发生在上管导通期间，等你下管导通时检测到过流，上管已经化成渣了。建议：

3. **别再死磕开环了** ：你已经两次证明开环带载启动不可行。赶紧加 **电流内环** ，哪怕是最简陋的峰值电流限制——在电压环输出后面加个限幅器，把电流给定钳位在10A以内，超了直接封PWM。这比什么软起动步进都管用。双闭环（电压外环+电流内环）是Buck-Boost的底线，不是可选项。

4. **电感已经废了** ：你说电感有烧焦痕迹，那这电感已经不可靠了。铁硅铝磁环一旦过饱和，磁导率会永久性下降，下次可能8A就饱和。建议换颗饱和电流 **20A以上** 的电感，或者至少换颗全新的同型号。别省这个钱，再炸一次MOS更贵。

5. **输出电容可以加大，但启动必须限流** ：大电容没问题，但启动时得 **恒流充电** 。成熟的方案都是先限制电感电流（比如5A），等输出电压爬到目标值附近再切恒压闭环。你现在的开环软起动本质上是在"恒占空比瞎撞"，撞对了就活，撞狠了就炸。

**总结** ：减小输出电容能让你暂时跑起来做实验，但只要你还在开环+大负载启动，炸管只是时间问题。当务之急是抓电流波形确认饱和点，然后上电流内环。别在电容容量上纠结了，那是表象，控制缺环才是病根。

---

<div class="post-metadata">

作者： ![muzi1111](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/muzi1111/32/1969_2.png) [@muzi1111](https://bbs.eeclub.top/u/muzi1111)\
发布日期： [2026 年6 月 15 日 13:31 UTC](https://bbs.eeclub.top/t/topic/114/92 "2026-06-15T13:31:55Z")

</div>

![1781530046061.](https://s3.eeclub.top/original/2X/e/e665160dad9ad5285119f1bbc738f0ae3371e33c.jpeg)

我重新画了一版，结果buck侧的sw引脚变成这样了（黄色的线），我又测试了一下我的上管驱动波形（红色的线），我应该修改什么地方？自举电容？还是什么其他的东西？我之前几版没有出现这个问题，这个问题是由于什么东西引起的？

1.我的测试是在输入17V，0.2A，运行在固定占空比0.5空载（10K电阻，加不加都一样）下，输出大概6.5V（我计算了一下，按电感两端电压相等，确实是这个值），我不明白为什么SW点电压会是这种梯形波

2.第一张图中的黄线是电感电流波形

3.这个图片我手机上看的挺清晰的，不知道为什么上传后就变糊了

 ![1781530212755.](https://s3.eeclub.top/original/2X/f/f655bd4ce1e0d02e7ba7476984a5e64e76401fb6.jpeg)

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2026 年6 月 15 日 13:54 UTC](https://bbs.eeclub.top/t/topic/114/93 "2026-06-15T13:54:23Z")

</div>

修改了什么地方？  
看看layout

---

<div class="post-metadata">

作者： ![muzi1111](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/muzi1111/32/1969_2.png) [@muzi1111](https://bbs.eeclub.top/u/muzi1111)\
发布日期： [2026 年6 月 15 日 14:06 UTC](https://bbs.eeclub.top/t/topic/114/94 "2026-06-15T14:06:19Z")

</div>

![image](https://s3.eeclub.top/original/2X/c/c17763037f59f2d92f7774ccc958da81e8fc675c.png)

 ![image](https://s3.eeclub.top/original/2X/b/b38d1b13789d1be77e4a8120f493f24472ba3494.jpeg)

背面是mos驱动，我把电阻换成了8R，现象还是不变（之前我用的是4R）

 ![image](https://s3.eeclub.top/original/2X/9/93da21bd1e591499fbc89c3a948007b4ff0a64d1.png)

与mos并联的RC和二极管都没有焊接

---

<div class="post-metadata">

作者： ![muzi1111](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/muzi1111/32/1969_2.png) [@muzi1111](https://bbs.eeclub.top/u/muzi1111)\
发布日期： [2026 年6 月 19 日 11:13 UTC](https://bbs.eeclub.top/t/topic/114/95 "2026-06-19T11:13:41Z")

</div>

![0264a6b21096eb242f3e5668c1273999](https://s3.eeclub.top/original/2X/d/d182bafea9c66dda8455c6ed72ed8383b66a74ab.jpeg)

 ![b138e7e1cf3dfccc59a167d413b75baa](https://s3.eeclub.top/original/2X/b/b2792bb4b3b995a88bc12cb40afa17bd138a6057.jpeg)

 ![89f1f8024dffb46e2908ff53e40a772a](https://s3.eeclub.top/original/2X/0/0f1e6cd51ef7c2716bbd1eb787e0b6cb9a4960e0.jpeg)

 ![3f100484fd54efcd428061a60375b4aa](https://s3.eeclub.top/original/2X/5/5ad7267a62030fcb2ed8dbeaeff828b1940a790b.jpeg)

第一张是我的原理图，第二张是我测试大于20V时BUCK侧VS对地，以及电感的电流波形，第三张是第二章的放大，第四张是我在小于20V时的VS和电感电流。我的pwm是100K，固定0.5的占空比

1.为什么我加大输入电压，会导致电感电流纹波频率缩小，MOS在第二次打开时VS为什么就成很尖的波形，而不是方波？

2.我该如何解决这个问题？

---

<div class="post-metadata">

作者： ![wwd](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/w/e95f7d/32.png) [@wwd](https://bbs.eeclub.top/u/wwd)\
发布日期： [2026 年6 月 30 日 17:00 UTC](https://bbs.eeclub.top/t/topic/114/96 "2026-06-30T17:00:13Z")

</div>

请问恒压模式下，输出5V，电子负载未开启下，输出电压=5V，电子负载开到0.5A，电子负载显示输出电压变成4.91V；电子负载开到1.5A，电子负载显示输出电压变成4.74V；电子负载开到2.5A，电子负载显示输出电压变成4.56V；但是以上情况下，单片机的采样输出电压都是5V，请问这是什么原因？

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2026 年7 月 1 日 11:43 UTC](https://bbs.eeclub.top/t/topic/114/97 "2026-07-01T11:43:20Z")

</div>

线损造成的压降，你连接电子负载的线是不是太细了

---

<div class="post-metadata">

作者： ![wwd](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/w/e95f7d/32.png) [@wwd](https://bbs.eeclub.top/u/wwd)\
发布日期： [2026 年7 月 1 日 11:56 UTC](https://bbs.eeclub.top/t/topic/114/98 "2026-07-01T11:56:18Z")

</div>

确实跟线损有关，我用的是14awg规格的线，我看您视频演示的似乎没有收到线损的影响，您是怎么操作的呢？

---

<div class="post-metadata">

作者： ![zeruns](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/zeruns/32/7_2.png) [@zeruns](https://bbs.eeclub.top/u/zeruns)\
发布日期： [2026 年7 月 1 日 11:59 UTC](https://bbs.eeclub.top/t/topic/114/99 "2026-07-01T11:59:14Z")

</div>

那你测一下电源板上的端子座电压有没有掉

---

<div class="post-metadata">

作者： ![ABC](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/abc/32/101_2.png) [@ABC](https://bbs.eeclub.top/u/ABC)\
发布日期： [2026 年7 月 1 日 12:00 UTC](https://bbs.eeclub.top/t/topic/114/100 "2026-07-01T12:00:08Z")

</div>

哥们，看了你发的原理图和波形，这现象在做STM32数字电源（尤其是自己搭的分立驱动Buck-Boost）时太经典了。

既然你在程序里把PWM写死了固定50%（0.5）的占空比，那理论上MCU应该雷打不动地输出等宽方波。你在图3（\>20V）看到那种“一宽一窄”、“电感电流纹波频率错乱（Pulse Skipping / 大小波）”以及“VS节点出现极窄尖峰”，本质上是 **这个周期的驱动信号被异常截断了** 。

我按我的经验帮你盘一下原因和解决思路：

### 1. 为什么电压上去后会出现这种现象？

输入电压从\<20V升到\>20V，最直观的变化是 **开关管动作时的 dv/dt 和 di/dt 显著变大了** ，这会带来几个致命的连锁反应：

- **干扰/地弹（Ground Bounce）导致MCU或驱动逻辑错乱：** 电压升高后，开关瞬间的高频噪声（EMI）变强。这些噪声很容易耦合到MCU的PWM走线上，或者引起参考地电平剧烈抖动。如果驱动IC的逻辑输入端读到了一个毛刺，或者单片机定时器受到干扰，就会导致本该持续半个周期的PWM被提前关断，形成你看到的“尖峰”。

- **自举电路失效或VS负压过大：** 你的原理图里用的是带自举电容（C25, C27，目前看是100nF）的高低管驱动方案。当电压升高，死区时间内电感电流续流会导致VS节点出现很深的负压振铃（低于PGND）。如果负压过深，会把自举电容里的电荷瞬间抽干，或者触发驱动IC内部的欠压保护（UVLO）。自举电压一掉，高管马上罢工关断，就变成了极窄的尖峰。

- **硬件保护误触发（如果有）：** 如果你的板子上有基于电流采样（比如图里的R27、R28等5mΩ电阻）做的硬件过流保护或运放比较器，电压升高后，开关瞬间的“前沿尖峰（Leading Edge Spike）”也会变大，极容易让比较器误翻转，强行屏蔽掉当前的PWM脉冲。

- **电感趋于饱和：** 虽然不一定是主因，但电压升高导致峰值电流变大，如果电感余量不够，电流飙升带来的尖峰也会加剧上述的噪声干扰。

### 2. 怎么解决和排查？

别急着大改板子，做数字电源查Bug讲究“顺藤摸瓜”，建议你按以下步骤来：

**第一步：定位“黑手”到底是谁（最关键！）**

你现在只测了VS节点。你需要拿示波器的两个通道， **同时测STM32的PWM输出引脚** 和 **VS节点** （或者高管的Gate引脚）。

- **情况A：** 如果单片机引脚测出来的波形就已经一宽一窄、乱七八糟了，说明是强电干扰了MCU。你需要检查STM32的供电稳不稳、强弱电的地有没有铺好/单点接地，或者尝试在PWM靠近驱动IC的地方加个小RC滤波（比如几十欧串联，配个22pF到地的电容）。

- **情况B：** 如果单片机引脚出来的是完美的50%方波，但VS端还是尖峰，那就说明 **驱动级** 出问题了，重点查下面第二步。

**第二步：针对驱动级的优化**

如果是驱动端的问题，大概率是自举或者开关速度过快引起的：

1. **加大自举电容：** 你现在的C25、C27是100nF，跑100k频率在重载或高压下可能有点虚。建议并联一个1uF的MLCC，保证高管有充足的电荷维持导通。

2. **压制开关节点的振铃（重点）：** 拿示波器放大看看波形下降沿，VS节点是不是冲到了-2V甚至更低？如果是，建议在VS1对地、VS2对地加 **RC Snubber（RC吸收电路）** ，比如串个几欧姆的电阻和几百pF的电容，把振铃吃掉。

3. **稍微放慢一点开关速度：** 可以在高管的门极（Gate）串一个小电阻（如果有位置的话，看原理图好像直接连的），稍微牺牲一点点开关损耗，降低dv/dt，整个系统会稳定非常多。

4. **检查二极管反向恢复：** 你的自举二极管用的SS14（肖特基），耐压40V，输入\>20V时如果加上振铃，反向耐压可能有点勉强了，建议换成耐压更高、恢复极快的二极管，并串联一个2.2Ω左右的小电阻限制充电峰值电流。

先去测下单片机管脚的PWM源头吧，确定了是源头被干扰还是驱动层扛不住，就能对症下药了。祝调试顺利！

---

<div class="post-metadata">

作者： ![知夏](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/%E7%9F%A5%E5%A4%8F/32/1860_2.png) [@知夏](https://bbs.eeclub.top/u/%E7%9F%A5%E5%A4%8F)\
发布日期： [2026 年7 月 1 日 12:06 UTC](https://bbs.eeclub.top/t/topic/114/101 "2026-07-01T12:06:04Z")

</div>

看了下你的波形和原理图，这个现象挺典型的，核心原因就是 **输入电压升高后，电感进入了断续导通模式（DCM）** 。

## 1. 为什么加大输入电压，纹波 “频率缩小”，第二次开通 VS 是尖脉冲而不是方波？

PWM 频率其实没变，还是 100K，是电流波形变形造成的视觉效果。

你现在开环固定 50% 占空比，纯 Buck 模式下输出大概是输入的一半。输入电压升高，电感电流纹波 ΔI = (Vin-Vout)×D/(L×f) 会线性增大。当纹波峰峰值超过两倍平均输出电流时，电流谷值直接撞到 0，就从 CCM 掉进 DCM 了。

进入 DCM 之后：

- 关断阶段电感电流早早降到 0，续流二极管截止，VS 节点变成高阻态，由寄生 LC 自由谐振，所以不再被钳位成方波。
- 下一个周期 MOS 再开通时，电感电流是 0，相当于硬开关 ——MOS 直接给开关节点寄生电容充放电，di/dt 极大，打出一个很尖的电压脉冲。但因为没有持续电感电流维持，尖峰很快泄放，所以看起来是窄脉冲而不是方波平台。
- 所谓 “纹波频率缩小”，其实是电流在大半个周期里都贴着 0（只有微小谐振波动），有效三角波只占一小段，视觉上像是频率变低了；严重时还会出现隔一个周期才传一次能量的跳脉冲现象。

另外你这是自举驱动的高端 NMOS，DCM 下 VS 长时间不到地，自举电容 C7 充不上电，驱动能力会下降，开通波形只会更难看 —— 你原理图上 C7 标了 100pF，这也偏小了，自举电容一般几百 nF 起步。

## 2. 怎么解决？

几个方向，按优先级排：

**① 回到 CCM（治本）**

- **换更大感值的电感** ：按最大输入电压算一下，保证纹波峰峰值不超过平均电流的 30%~40%，留够余量。这是最直接的办法。
- **加重负载** ：提高平均输出电流，把谷值电流 “抬” 离 0 点，可以快速验证是不是 DCM 的问题。
- 降开关频率也能减小纹波，但 100K 挺合理的，不建议从频率下手。

**② 抑制尖峰和振铃（改善应力和 EMI）**

- 在 VS 节点对地加个 **RCD 缓冲** （比如 100Ω 电阻 + 1nF 电容 + 快恢复二极管），或者简单的 RC 缓冲（几十 Ω + 几百 pF），能把尖峰和振铃明显压下去。
- 布局上开关节点铜箔面积尽量小，驱动回路走最短路径，减少寄生参数。

**③ 控制方式改进**

- 开环固定占空比本身就不太适合 Buck-Boost 这种拓扑。建议改成电压闭环，输入变化时占空比自动调整，既能稳压也能缓解 DCM 问题。
- 如果一定要开环跑，那就按你最大输入电压重新设计电感参数，保证全范围 CCM。

总结一下： **本质是高压轻载掉进 DCM 了，尖峰是零电流硬开关的产物。** 你可以先临时挂个重负载试试，波形如果恢复成低压时那样的方波 + 三角波，就确认是 DCM 的问题，接下来换大电感就行。

---

<div class="post-metadata">

作者： ![wwd](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/w/e95f7d/32.png) [@wwd](https://bbs.eeclub.top/u/wwd)\
发布日期： [2026 年7 月 1 日 12:12 UTC](https://bbs.eeclub.top/t/topic/114/102 "2026-07-01T12:12:32Z")

</div>

万用表测，电压也有掉，不是准的5V，但是用万用表测线的阻抗，在180m欧左右，跟加大电流掉电压的幅度是对的上的

[上一页](https://bbs.eeclub.top/t/topic/114.md?page=4)

[下一页](https://bbs.eeclub.top/t/topic/114.md?page=6)
