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

没看懂你的问题

源代码在此

还是没看懂你要问什么

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

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

看看你的PCB布局

这是PCB

输出也没有短路

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

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

这个HRTIM在PWM周期中心点触发ADC采样怎么配置啊,我尝试配置,但是触发时间不太对,比我设置的要晚很多,我该怎么排查问题出现在什么地方?

截图看看你是怎么设置的

我只使用了C,D是为了以后拓展的

我测试发现我的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); // 拉低

}

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

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

1個讚

看了一下你的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中断去等。
1個讚

对的,我之后又测试以下,发现塞ADC1_2_IRQHandler函数,延迟几乎没有了

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

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

没看懂你在说什么,这是我开源的板子吗?

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

我的问题是

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

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

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

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

如图