# 基于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:** 3

<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 年4 月 1 日 08:28 UTC](https://bbs.eeclub.top/t/topic/114/43 "2026-04-01T08:28:02Z")

</div>

没看懂你的问题

---

<div class="post-metadata">

作者： ![hzh](https://bbs.eeclub.top/letter_avatar_proxy/v4/letter/h/9de0a6/32.png) [@hzh](https://bbs.eeclub.top/u/hzh)\
发布日期： [2026 年4 月 1 日 08:33 UTC](https://bbs.eeclub.top/t/topic/114/44 "2026-04-01T08:33:02Z")

</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 年4 月 1 日 09:02 UTC](https://bbs.eeclub.top/t/topic/114/45 "2026-04-01T09:02:45Z")

</div>

还是没看懂你要问什么

---

<div class="post-metadata">

作者： ![wan0501](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/wan0501/32/1929_2.png) [@wan0501](https://bbs.eeclub.top/u/wan0501)\
发布日期： [2026 年4 月 8 日 08:38 UTC](https://bbs.eeclub.top/t/topic/114/46 "2026-04-08T08:38:53Z")

</div>

博主 请教一下 我就修改了一下辅助电源模块 把你的DCDC降压模块修改成了NDP2355KC模块 我的功率电感用的PSPMAA0605H-100M-ANP 然后出现的问题是我输入16V等电压的时候 我想设置输出10V等左右的电压时 系统会重启（C口供电时） 或者过流，直接最大电流输出（稳压电源供电时） 我用直流电源供电时电源端会进入CC模式 输出供电电压电压6V左右 然后就是板子的mos管发热很严重 可以分析一下吗？谢谢

 ![1](https://s3.eeclub.top/original/2X/f/f9fa484cbc1b21e02729d8ded7794fcab992fda8.png)

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

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

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

---

<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 年4 月 8 日 10:28 UTC](https://bbs.eeclub.top/t/topic/114/47 "2026-04-08T10:28:16Z")

</div>

检查一下输出端有没有短路

看看你的PCB布局

---

<div class="post-metadata">

作者： ![wan0501](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/wan0501/32/1929_2.png) [@wan0501](https://bbs.eeclub.top/u/wan0501)\
发布日期： [2026 年4 月 8 日 13:52 UTC](https://bbs.eeclub.top/t/topic/114/48 "2026-04-08T13:52:56Z")

</div>

![image](https://s3.eeclub.top/original/2X/e/ec2391f435624ce24c4c5d9904cfceb476e8b1ec.jpeg)这是PCB

---

<div class="post-metadata">

作者： ![wan0501](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/wan0501/32/1929_2.png) [@wan0501](https://bbs.eeclub.top/u/wan0501)\
发布日期： [2026 年4 月 8 日 13:57 UTC](https://bbs.eeclub.top/t/topic/114/49 "2026-04-08T13:57:59Z")

</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 年4 月 8 日 15:17 UTC](https://bbs.eeclub.top/t/topic/114/50 "2026-04-08T15:17:55Z")

</div>

![image](https://s3.eeclub.top/original/2X/7/79f1d55bfd48a11961695eb9ebaaab6af5f5a7d9.jpeg)

采样线好像没连上，而且电流采样没用开尔文走线

---

<div class="post-metadata">

作者： ![wan0501](https://bbs.eeclub.top/user_avatar/bbs.eeclub.top/wan0501/32/1929_2.png) [@wan0501](https://bbs.eeclub.top/u/wan0501)\
发布日期： [2026 年4 月 8 日 15:43 UTC](https://bbs.eeclub.top/t/topic/114/51 "2026-04-08T15:43:20Z")

</div>

是那个电阻不小心旋转了一下 PCB没问题 电流采样我确实没注意到要走开尔文 感谢博主提醒

---

<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 年5 月 14 日 11:12 UTC](https://bbs.eeclub.top/t/topic/114/52 "2026-05-14T11:12:42Z")

</div>

这个HRTIM在PWM周期中心点触发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 年5 月 14 日 11:54 UTC](https://bbs.eeclub.top/t/topic/114/53 "2026-05-14T11:54:17Z")

</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 年5 月 14 日 12:12 UTC](https://bbs.eeclub.top/t/topic/114/54 "2026-05-14T12:12:14Z")

</div>

![image](https://s3.eeclub.top/original/2X/e/e74da555e100e8b282d02241c74d00dfb87b4683.jpeg)我只使用了C，D是为了以后拓展的

 ![image](https://s3.eeclub.top/original/2X/1/175897d905f5f448006b63a3e1cedcf4a9fa8537.jpeg)

 ![image](https://s3.eeclub.top/original/2X/8/85b06f64d80ee06d2ced8309f6d35398befcb927.jpeg)

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

我测试发现我的PC15引脚反转时刻据我设置的时刻总是慢2.5uS，以下是我的测试函数

// 回调函数

void HAL\_ADC\_ConvCpltCallback(ADC\_HandleTypeDef \*hadc)

{

```
// ADC1_2_IRQHandler();

if (hadc->Instance == ADC2)

{

    GPIOC->ODR ^= GPIO_PIN_15;

    Control_Loop_Update(); // 你的高频控制循环

    // GPIOC->ODR ^= GPIO_PIN_15;

}

else if (hadc->Instance == ADC1)

{

    // GPIOC->ODR ^= GPIO_PIN_13;

    // flag_adc1 = 1;

    PID_V();

    GPIOC->ODR ^= GPIO_PIN_13;

}

// HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); // 拉低

```

}

---

<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 年5 月 14 日 12:13 UTC](https://bbs.eeclub.top/t/topic/114/55 "2026-05-14T12:13:14Z")

</div>

这个截图不知道为啥顺序乱了 😅

---

<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 年5 月 15 日 12:21 UTC](https://bbs.eeclub.top/t/topic/114/56 "2026-05-15T12:21:48Z")

</div>

兄弟，你这测试方法本身就有问题啊。你在 HAL\_ADC\_ConvCpltCallback 里面翻转IO，测出来的根本不是“触发时间”，而是“ADC采样时间 + 转换时间 + 中断响应延迟 + HAL库庞大的判断开销”。  
你进去 HAL\_ADC\_IRQHandler 看看源码就知道了，ST的HAL库在调这个回调之前，要查一堆寄存器状态，这中间跑掉1~2us太正常了。加上你截图里配置的采样时间是6.5个Cycle，转换还要12.5个，这都是实打实的时间。  
想测真实的触发点，直接配个定时器比较输出引脚，用示波器抓PWM波和那个比较输出。如果非要在中断里测，把HAL库抛弃，直接在启动文件里找到ADC的中断入口，进去第一句话就翻转GPIO，你会发现延迟瞬间小很多。

---

<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 年5 月 15 日 12:24 UTC](https://bbs.eeclub.top/t/topic/114/57 "2026-05-15T12:24:24Z")

</div>

看了一下你的CubeMX截图，几个疑点你排查下：

1. 你的ADC触发源配置的是 `Timer C Compare 3`，我看你在Timer C配置里把Compare 3设成了 `46080 / 4`，如果你的PWM周期是46080，那中心点不应该是 `/2` 吗？（除非你用的是中央对齐模式，那要具体算算）。
2. 你的ADC触发边沿选的是 `Trigger detection on the falling edge`（下降沿触发），你确认HRTIM产生的触发事件在你预期的地方是下降沿吗？一般默认配上升沿多一点。
3. 就像楼上说的，2.5uS绝对是软件开销。G474主频170M的话，2.5uS差不多跑了400多条指令了，全耗在进中断压栈和HAL库的IF判断上了。建议上DMA，让ADC采完直接触发DMA搬运，别用CPU中断去等。

---

<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 年5 月 16 日 07:10 UTC](https://bbs.eeclub.top/t/topic/114/58 "2026-05-16T07:10:51Z")

</div>

对的，我之后又测试以下，发现塞ADC1\_2\_IRQHandler函数，延迟几乎没有了

---

<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 年5 月 29 日 07:18 UTC](https://bbs.eeclub.top/t/topic/114/59 "2026-05-29T07:18:07Z")

</div>

大佬们，我现在在测试过程中，开始功能正常（输出的’纹波’很大，和我的开关频率一样，但是放大，他的频率很高，如下图），之后我增加了几个输出电容，之后再上电，32的ADC好像全部坏了，现在ADC引脚测出的数据无论外部输入多少，他们都是一样的，这可能是什么原因造成的？我的输入电压是40V，输出设置为30V，负载是20R。我想问下测试模块后面是不是还要加一个保护32引脚的器件？如果加，有没有推荐的？谢谢大佬们！

 ![IMG_20260529_144252](https://s3.eeclub.top/original/2X/4/49f9d15414d4de9b8309e49e547dd6bad7f12d3b.jpeg)

 ![IMG_20260529_144321](https://s3.eeclub.top/original/2X/a/ac9085eaf8f22da7e16a9812231dc67aaa7a1445.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 年5 月 29 日 07:22 UTC](https://bbs.eeclub.top/t/topic/114/60 "2026-05-29T07:22:05Z")

</div>

以下是我的测量电路和主电路

 ![image](https://s3.eeclub.top/original/2X/8/89a96c46a431ea941254f5da8018c3c606ea4cf0.png)

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

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

---

<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 年5 月 29 日 11:12 UTC](https://bbs.eeclub.top/t/topic/114/61 "2026-05-29T11:12:01Z")

</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 年5 月 29 日 12:50 UTC](https://bbs.eeclub.top/t/topic/114/62 "2026-05-29T12:50:15Z")

</div>

拓扑是一样的，只不过这个是我自己画的

我的问题是

1.我的测输出交流分量的图中，为什么会出现这个很高的尖峰？在我的一个开关周期内，出现4次，我该如何消除这个的影响

2.在测试板子的过程中，STM32的ADC部分全部坏了，我不知道为什么ADC部分会损坏，我的ADC引脚前还有一个RC低通滤波，结果ADC引脚还是坏了，这个可能是什么原因造成的？之前我的提问是怀疑ADC引脚损坏，现在基本确定真的坏了。（我猜测是由于上图交流分量的尖峰太高导致我的32ADC引脚被损坏，不知道我的猜测是否正确）我已经弄坏两个主控了，都是因为ADC引脚损坏，但是找不到原因

3.如果我想给32的ADC引脚一个额外的保护，使ADC输入在0-3.3之间，有没有好用的方法/器件

4.布局时，是否要让从输入到输出整个环路最小（蓝色的线）？还是只要两个热点环路最小就行（红色的线），大的环路不用管？

如图

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

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

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