移相全桥 + 副边同步整流是工业 DC‑DC 电源常用拓扑,原边需要两路带死区互补 PWM,两路之间支持 0‑180° 相位连续可调;副边同步整流管需要跟随原边开关时序生成控制脉冲。STM32G0B1 作为低成本电源专用 MCU,但单一定时器无法同时输出两组可独立移相的互补死区 PWM,也不能直接实现副边 SR 管的时序匹配。
本方案利用 STM32G0B1 定时器内部硬件级联同步机制,通过 TIM1/TIM2/TIM3/TIM4/TIM15 多定时器链式触发,完全依靠片上外设硬件生成整套时序,避免软件中断带来相位抖动。本文还原拓扑时序要求、定时器级联架构、各定时器寄存器配置要点、时序差异说明以及工程落地注意事项。
资料获取:实战经验 | LAT1694 基于STM32G0B1系列MCU的全桥移相+同步整流PWM方案
1. 拓扑与 PWM 时序需求
1.1 功率拓扑开关定义
- 原边全桥:A (Q1)、B (Q2) 构成左半桥;C (Q3)、D (Q4) 构成右半桥;
- 副边同步整流 SR 管:E (Q6)、F (Q5)。
1.2 硬件时序硬性要求
- 左半桥 A/B:互补输出,固定 50% 占空比,死区时间 500ns;
- 右半桥 C/D:互补输出,固定 50% 占空比,死区时间 500ns;
- 左右两组半桥对角相位差支持0‑180° 连续可调,依靠相位差调节变换器输出电压;
- SR‑F(Q5):D (Q4) 导通时打开;B (Q2) 导通时关闭;
- SR‑E(Q6):C (Q3) 导通时打开;A (Q1) 导通时关闭。
关键约束:相位调节必须硬件完成,若依靠软件中断修改延时,会受内核中断、调度影响,产生相位抖动,不适合高频开关电源。
2. STM32G0B1 定时器资源与整体级联架构
STM32G0B1 没有定时器可以直接实现两组互补 PWM 直接互相移相,TIM1 无法直接触发 TIM15,需要引入中间定时器做链式中转。
2.1 定时器分工与级联链路
- TIM1(主 Master):生成原边左半桥 A/B 互补 PWM;更新事件 UEV 作为全局同步源;同步触发 TIM2、TIM3;
- TIM3:被 TIM1 UEV 同步;使用 CCR1 产生 OC1 触发事件,用来控制 TIM15 移相;CH2 输出副边 SR‑E 驱动 PWM;
- TIM15(从 Slave):由 TIM3 的 OC1 事件触发;生成原边右半桥 C/D 互补 PWM;TIM3‑CCR1 数值决定 TIM1 相对于 TIM15 相位偏移;
- TIM2:被 TIM1 UEV 同步;CCR1 输出 OC1 触发 TIM4,实现 180° 相位偏移;
- TIM4:TIM2 OC1 触发;CH2 输出副边 SR‑F 驱动 PWM。
完整链路:
- 原边右半桥链路:
TIM1 → TIM3 → TIM15,实现左右半桥相位可调;- 副边 SR‑F 链路:
TIM1 → TIM2 → TIM4,实现 E/F 两路 SR 管 180° 相位差。
输出对应关系:
| 定时器通道 | 输出信号 | 功能 |
|---|---|---|
| TIM1 CH1 / CH1N | PWM_A / PWM_B | 原边左半桥互补驱动 |
| TIM15 CH1 / CH1N | PWM_C / PWM_D | 原边右半桥互补驱动 |
| TIM3 CH2 | PWM_E | 副边同步整流 E (Q6) |
| TIM4 CH2 | PWM_F | 副边同步整流 F (Q5) |
3. 各定时器关键配置参数
PER 代表定时器周期计数值,PWM 模式均使用 PWM mode1 / PWM mode2,死区由高级定时器 TIM1、TIM15 硬件死区寄存器插入。
TIM1
CCR1 = PER / 2,输出 50% 占空比;- CH1/CH1N 开启互补输出,硬件死区配置 500ns;
- 更新事件 UEV 作为 TRGO 输出,用于同步 TIM2、TIM3。
TIM2
- 从模式,接受 TIM1 同步;
CCR1 = PER /2,OC1 事件作为 TRGO 输出,触发 TIM4,实现 180° 移相。
TIM3
- 从模式,接受 TIM1 同步;
CCR1:控制原边左右半桥之间移相角度,由电源控制环路实时计算更新;CCR2 = CCR1 + 死区计数值,用于 SR‑E 导通触发;- CH2 配置为 PWM mode2,输出 PWM_E。
TIM4
- 从模式,接受 TIM2 OC1 事件同步;
CCR2 = TIM3_CCR1 + 死区计数值;- CH2 配置 PWM mode2,输出 PWM_F。
TIM15
- 从模式,由 TIM3 OC1 事件触发;
CCR1 = PER /2;CH1/CH1N 开启互补输出,硬件死区 500ns。
4. 时序偏差说明
该硬件生成方案,对比理想需求时序存在一处差异:
副边 E、F 同步整流管关断时刻相比理论时序会提前,提前时长等于原边半桥死区时间(500ns)。文档指出该偏差不影响变换器正常工作;如果需要消除该偏差,可以微调 TIM3、TIM4 移相 CCR 寄存器值进行补偿。
全部相位调节只需要运行时修改
TIM3‑CCR1寄存器,即可连续修改 0‑180° 移相角,软件无需中断延时,全部由定时器硬件链路完成。
5. 工程落地实施要点
5.1 CubeMX 配置重点
- TIM1、TIM15 开启互补通道与硬件死区功能,死区时间配置 500ns;
- 配置定时器从模式触发源:TIM2、TIM3 触发源来自 TIM1 的 UEV;TIM15 触发源来自 TIM3 OC1;TIM4 触发源来自 TIM2 OC1;
- TIM3_CH2、TIM4_CH2 设置为 PWM mode2;
- 关闭不需要定时器中断,尽量使用硬件链路,减少 CPU 干预;
- 移相调节只修改
TIM3->CCR1,不要改动 PER 周期,保证开关频率恒定。
5.2 调试验证手段
- 使用示波器多通道同时抓取 A/B/C/D/E/F 六路波形,核对:
- 左右半桥 50% 占空比、死区 500ns;
- 修改 CCR1,对角相位可以平滑 0‑180° 变化;
- SR 管 E/F 跟随原边开关时序动作;
- 观察相位是否出现抖动,如果存在抖动,排查是否开启不必要定时器中断。
6. 故障排查清单
- 现象:TIM1、TIM15 相位无法调节,相位始终对齐
- 核查 TIM15 触发源是否配置为 TIM3 的 OC1 事件,而不是 TIM1 直接同步;确认 TIM3‑CCR1 可以被环路正常改写。
- 现象:SR 的 E/F 时序错乱,和原边开关不匹配
- 核查 TIM2‑TIM4 级联链路;核对 TIM3_CCR2、TIM4_CCR2 的计算公式;确认 PWM mode2 模式配置正确。
- 现象:半桥上下管无死区,存在直通风险
- TIM1/TIM15 高级定时器的 BDTR 死区寄存器配置,不能用软件做延时替代硬件死区。
- 现象:相位存在抖动
- 尽量避免在中断中频繁启停定时器;移相仅修改 CCR1 比较寄存器,不修改 ARR 周期;全部依靠硬件级联链路。
7. 小结
- STM32G0B1 单定时器无法直接生成两组独立移相互补 PWM;本方案利用多定时器硬件链式级联,
TIM1→TIM3→TIM15实现原边两组半桥 0‑180° 硬件移相;TIM1→TIM2→TIM4产生副边两路同步整流 SR 驱动脉冲,整体几乎不依赖软件中断,相位无抖动。 - TIM3 的 CCR1 寄存器是移相调节核心,电源环路只需要实时更新该寄存器,就可以连续调整输出电压。
- 本方案 SR 管关断会提前一个死区时长,属于固有时序差异,不影响变换器运行,可通过 CCR 偏移做补偿。
- 这套方案基于通用定时器硬件触发链路,具备可移植性,可以迁移到其它拥有定时器从模式级联功能的 STM32 系列 MCU,帮助用低成本 MCU 实现移相全桥 + 同步整流数字电源控制。
8. FAQ
Q:为什么不能直接使用软件延时中断来实现移相?
A:软件方式会受中断抢占、系统调度影响,高频开关电源场景会引入相位抖动,会造成 ZVS 工作点不稳定,优先使用硬件定时器级联。
Q:能否只用 TIM1+TIM15,不使用 TIM2/TIM3/TIM4?
A:TIM1 和 TIM15 没有直接内部触发链路,必须借助中间定时器中转,无法直接级联。
Q:开关频率变化,死区 500ns 如何处理?
A:需要根据开关频率重新配置 TIM1/TIM15 的 BDTR 死区寄存器,同时重新换算 CCR 寄存器计数值。
免责声明:本文全部基于 ST 官方 LAT1694 文档,数字电源产品实际调试需要结合示波器实测波形,以芯片参考手册为准。
234