尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

STM32G474实现同步整流:设计、配置与调试实战解析

STM32G474实现同步整流:设计、配置与调试实战解析 做数字电源这些年同步整流Synchronous RectificationSR一直是绕不开的话题。只要你处理过超过100W的AC-DC电源或者做过服务器电源、充电头、OBC就一定会面对次级整流损耗这个问题。以前二极管整流靠0.7V压降硬扛反正效率要求没这么变态现在效率动不动就要90%以上甚至94%、96%你不上同步整流铜损、磁损调得再低也是白搭。最近在用STM32G474做一款240W的LLC电源次级用的就是同步整流方案这里把整个过程中的设计思路、物料选型、HRTIM配置逻辑、还有调试时踩过的坑记录下来希望能帮到正在摸这条路的人。STM32G474这颗芯片在数字电源领域的分量一句话概括它就是ST专门为高精度数字电源打造的那颗料。主频170MHz的Cortex-M4F内置高分辨率定时器HRTIM定时器分辨率能做到130ps级别还集成了比较器、运放、快速ADC甚至连CORDIC和FMAC都给了你。这意味着你可以用一颗MCU同时干完LLC原边PWM控制、PFC控制、副边SR控制以及环路补偿和电压电流采样不需要外挂额外的数字逻辑或专门的SR控制器芯片。这也是题主问“在STM32G474上实现同步整流”的最大意义所在——不是用MCU硬凑SR功能而是这颗芯片天生就是为了这类场景准备的。下面从方案选型、原理拆解、硬件设计、HRTIM配置、软件逻辑、调试经验这几个方面完整展开。这里不会只贴代码更多的篇幅会放在“为什么这么设计”和“调试时怎么判断问题”上。1. 整体方案与设计思路为什么SR要交给STM32G474来做1.1 从整流损耗开始同步整流到底解决了什么问题先看一组非常简单的损耗估算。假设次级输出是20V/12A总功率240W如果用的是典型肖特基二极管整流正向导通压降VF大约0.5V那整流损耗就是0.5V × 12A 6W两个绕组交替导通的话也要约6W的有效损耗。在240W的电源里6W的损耗意味着大约2.5%的效率损失。这个账在铜损和磁损都优化完之后根本没法忽略。如果换成同步整流用一颗RDS(on) 5mΩ的MOSFET代替二极管同样的输出电流12A下导通损耗只有 I²R 12² × 0.005 0.72W而且MOSFET是双向导通的压降是线性而不是固定0.5V轻载下优势更明显。也就是说仅仅把二极管换成MOSFET在满载条件下就能挽回4W以上的损耗效率提升超过1.5%。这个数字对追求94%甚至96%效率的产品来说是绝对值得争取的。但问题来了换MOSFET不是简单把漏源极并联在原副边绕组上就能工作的你必须精确控制它什么时候导通、什么时候关断而且时序要求比正常PWM严格得多。这就是为什么同步整流不能靠几个分立器件随便搭必须要有一款能产生高精度、多路、可编程时序的控制器——STM32G474的HRTIM就是干这个用的。1.2 STM32G474的资源底牌为什么选它而不是其他方案不少人在设计SR控制时首先想到的是专用SR控制器芯片比如TI的UCC24624、NXP的TEA1995这些芯片用检测Vds的方式自适应控制集成度高外围也很简单。但如果你的项目同时还要控制原边LLC、需要做各种保护逻辑、要和上位机通信、要做多重故障响应专用SR控制器的灵活性就很有限了。它们在轻载到重载的跳跃响应上也无法与你的主控制算法进行深度联动。STM32G474这一类数字电源MCU的另一边是C2000系列。两者都能做SR但STM32G474的优势在于HRTIM的灵活性和高分辨率。HRTIM提供6个独立的定时器单元每个单元又有多个输出通道而且支持交叉触发、外部事件同步、故障输入等。更关键的是HRTIM可以通过DLL倍频把PWM分辨率提升到130ps级别。这意味着在1MHz的LLC工作频率下你依然能用非常精细的死区调节来优化ZVS和SR时序。我用下来最大的感受是STM32G474处理SR的天然优势有几个第一HRTIM输出通道足够多原边和副边全部由一颗MCU控制可以在时间维度上完全同步第二内部COMP比较器可以实时采集SR MOSFET的Vds检测电流过零并立即关断SR管这比用ADC采样再算要快得多第三故障保护是硬件级联的一旦过流或过压HRTIM输出可以马上被拉低而不用等中断响应。这套组合就是做数字电源最舒服的地方。1.3 整体控制架构LLC原边与SR副边的协同关系回到我这次做的240W LLC电源。整个控制架构是这样的PFC前级先用STM32G474的定时器和ADC配合做平均电流控制输出约380V直流母线LLC原边使用HRTIM的两个通道输出互补PWM驱动半桥或全桥副边SR使用另外两个HRTIM通道控制但与原边通道之间存在严格的时序和死区关系。原边与副边不是完全独立的两套PWM而是由同一个HRTIM定时器单元主从同步起来。主定时器产生设计好的开关频率原边通道和副边通道都可以通过从模式触发产生各自的波形再通过寄存器配置插入死区时间。这种主从同步的优势在于无论频率怎么变化原边和SR的相位关系都能保持恒定不会因为软件抖动产生额外误差。SR管的开关逻辑在设计上是这样规定的当原边某个MOSFET导通使副边绕组处于正向导通状态时对应SR管要提前或同时导通当原边两个MOSFET都关断进入死区时SR管是否继续导通取决于负载模式和是否发生负电流。这部分细节会在后面的章节展开。2. 同步整流的控制原理与核心时序设计2.1 三种常见SR控制策略对比同步整流的控制策略在业界常用的大致分三种。第一种是固定时序SR即副边MOSFET按原边PWM的固定相位关系开关简单但笨拙无法适应全负载范围尤其轻载时会造成负电流和效率下降。第二种是Vds电压检测法通过比较器检测SR管的漏源电压当电流即将过零或反向时Vds会从负压回升到接近0V甚至正压比较器捕获这个跳变沿立即关断SR管。第三种是自适应或最优死区时间调节法通过实验或在线监测调整死区时间使SR管在临界导通点开关复杂度高但能兼顾极轻载和重载的效率。STM32G474的方案里我用的是一个组合策略正常重载和满载时采用固定时序SRPWM的占空比和相位由软件计算进入轻载/临界模式时切换到基于比较器触发的Vds检测模式利用HRTIM的从模式事件来关断SR管。这种双模策略既能保证重载时的波形稳定性又能在轻载时避免负电流带来的损耗和噪声。为什么需要组合策略因为固定时序SR在重载CCM模式下非常好用此时副边绕组电流方向一个周期内不会反向只要把SR管导通时间设置得适当长一点就没有问题。但轻载时LLC会进入间歇工作模式输出电流很小SR管导通后期副边电流会自然过零如果这时还继续开着SR管电流就会从输出电容流回副边绕组形成负电流不仅损耗增加还可能把MOSFET体二极管抽进反向恢复严重时直接炸管。所以轻载必须依靠检测手段来精确关断。2.2 死区时间到底该怎么给给多少死区时间在SR控制里是一个让很多人头疼的参数。死区给大了SR管导通不充分体二极管导通时间变长整流损耗又回去了死区给小了原边开关管和副边SR管出现瞬间共通直接短路电源和地等着你的就是一阵白烟。死区时间的计算必须结合电路寄生参数和MOSFET的栅极电荷特性。以我常用的英飞凌IPT015N10N5为例输出电容Coss大约1100pF关断延时约30ns开通延时约20ns。考虑到驱动芯片的传播延迟和电平转换时间我在设计LLC原边到SR副边的过渡死区时预留了约150ns的死区时间。这个值不是拍脑袋拍的而是用示波器观察原边Vds波形和SR驱动波形后逐步从300ns往下压直到出现细微的共通迹象再回退20%~30%。还要注意一个反直觉的点SR管开通应该比副边绕组电压反向的时间稍微推迟一点不要追求与原边驱动完全同步。因为原边MOSFET开关瞬间会有振铃副边绕组电压也带着dv/dt噪声如果SR管过早导通一旦栅极噪声误触发就可能引起共通。我会把SR的开通延迟设为约50~100ns让原边开关状态稳定后再让SR管进入导通状态。2.3 负电流检测与关断逻辑负电流是整个SR设计中最容易翻车的地方。所谓负电流就是副边电流从输出端流向变压器绕组而不是从绕组流向输出电容。普通二极管整流不存在这个问题因为二极管天然阻断反向电流而MOSFET是双向导通器件如果不加处理反向电流会烧毁整个SR级。在STM32G474上我习惯用内部COMP比较器来监测SR管的Vds。当SR管导通时Vds等于 -I × RDS(on)如果输出电流为正Vds为负当电流减小到接近零Vds会向0V方向回升一旦电流反向Vds压差减小并可能变正比较器触发CCF标志位硬件自动关闭HRTIM对应输出。整个反应链路是ns级的比在中断里判断ADC采样值再关闭PWM要快几个数量级。比较器阈值的设置是这里最容易出错的地方。阈值太靠近0V噪声可能引起误触发在重载大电流时SR管Vds可能有几十毫伏到上百毫伏的负压一旦阈值不准比较器会提前关断整流损耗急剧上升。阈值设置远离0V又会导致轻载时电流过零检测不灵敏负电流已经存在一段时间才关断。我一般把阈值设在-10mV到-20mV左右并且在软件里加一个小的数字滤波窗口确保只有Vds在设定时间内持续超过阈值才触发关断而不是被单个噪声尖峰骗走。3. 硬件设计与器件选型SR部分的物料怎么挑3.1 MOSFET选型的关键参数SR MOSFET的选型关注点只有三个RDS(on)、Qg、Qrr。RDS(on)决定满载损耗选低电压的管子通常RDS(on)可以做得极低比如40V耐压的管子能做到2~4mΩ100V耐压的管子能做到5~10mΩ。但RDS(on)和Qg基本上是互相矛盾的RDS(on)越低芯片面积越大Qg也越大驱动损耗就越高。同步整流频率通常在100kHz~1MHzQg过大意味着驱动损耗在轻载时不可忽视。Qrr是体二极管的反向恢复电荷这在同步整流管里是一个非常致命的指标。如果Qrr太大当原边开关管导通时副边SR管的体二极管还处于反向恢复阶段会产生巨大的瞬间电流和电压尖峰不仅增加损耗还会带来严重的EMI噪声。所以SR管最好选择带快恢复体二极管的器件或者干脆用集成了理想二极管功能的新型功率MOSFET。老实说Qrr不达标的MOSFET在SR应用里就是定时炸弹选型时一定要看清楚datasheet里的曲线。我在这个240W的项目里最终选了某款100V/1.6mΩ的管子Qg约为75nC对于120kHz的开关频率来说驱动损耗约0.9W可以接受。换到更高开关频率的场合你可能需要牺牲一点RDS(on)来换取更小的Qg。3.2 驱动电路与栅极电阻的取舍SR MOSFET的栅极驱动电压一般推荐0到10V或0到12V最好能用负压关断但很多方案为了简化驱动电源只用0到12V的单极性驱动。STM32G474的HRTIM输出是3.3V逻辑电平不能直接驱动大功率MOSFET必须经过栅极驱动芯片。我建议SR驱动用专门的同步整流驱动芯片或者至少使用带Source/Sink电流能力较强的半桥驱动。例如UCC27624这种双通道驱动峰值电流5A开关速度足够快。但要注意驱动芯片的传播延迟在SR控制里非常要命因为SR的开通和关断时机只有几十ns的窗口一颗传播延迟高达100ns以上的驱动芯片会把整个系统时序全部打乱。因此选驱动芯片时一定要把传播延迟的条件列到极端温度、电压范围内。栅极电阻的选择也有讲究。SR管开通电阻可以稍微大一点比如10Ω减缓dv/dt抑制振铃关断电阻则要尽量小比如2Ω确保关断速度够快不会因为关断过慢导致桥臂共通。在很多高可靠设计里会用一个电阻并联一个二极管的方式实现开通慢、关断快的不对称驱动。我在STM32G474的SR驱动板上就采用了这种配置。3.3 电压电流采样Vds检测和输出电流采样怎么布局Vds检测是同步整流闭环里最关键的一个采样点。检测电压是两个大节点之间的差如果采样电路布局不好寄生电感会引入大量噪声直接影响比较器阈值的准确性。我建议直接在SR MOSFET的漏源两端靠近管脚的地方放置一对RC滤波器把采样点的噪声高频成分滤掉然后送入STM32G474内部的比较器输入引脚。这个RC滤波器的时间常数要慎重选择太小起不到滤波作用太大会把Vds的真实波形边缘抹平导致过零检测滞后。输出电流采样则用于环路保护和显示。我采用低边采样电阻加运放放大后送入ADC的方法采样电阻放在输出电容负极和地之间运放采用STM32G474内部集成的运放OPAMP即可节省外部器件。注意采样电阻的功率额定值要足够12A电流流过5mΩ的采样电阻会产生0.72W的功耗要选额定功率1W以上的合金电阻并注意散热。4. HRTIM配置与软件开发实操4.1 STM32CubeMX中的HRTIM初始化配置我建议用STM32CubeMX做初始化骨架生成但HRTIM这种复用度极高的外设手动配置寄存器的方式会让人崩溃。CubeMX里HRTIM的配置逻辑并不难核心点就是把定时器单元、输出通道、死区、触发源这几个关键项填对。我以两个SR通道为例说明配置流程。首先是定时器单元分配。STM32G474的HRTIM有TIM_A到TIM_F共6个定时器单元每个单元两个输出通道即TIMA1、TIMA2TIMB1、TIMB2等等。我的配置是TIM_A单元产生原边LLC半桥PWMTIM_B单元产生SR通道1TIM_C单元产生SR通道2。主定时器采用TIM_E设置为自由运行模式产生基准频率。所有单元都从TIM_E触发保证同步。其次是周期计算。LLC开关频率我设计为120kHzSTM32G474的主频170MHzHRTIM的计数器时钟可以通过内部DLL倍频最高约5.44GHz等效时钟170MHz × 32。实际使用时123kHz左右的频率计数器周期值要填入约44280具体数值需结合时钟树确认。这里建议在代码里使用浮点计算然后取整避免手动硬编码错数。再次是死区设置。HRTIM的每个输出通道都有独立的上升沿和下降沿死区插入寄存器。为原边LLC半桥设置150ns死区为SR通道设置约100ns的开通延迟和50ns的关断提前。这些值在CubeMX里可以图形化设置但运行时我建议用寄存器动态调整因为随着温度变化和MOSFET老化最优死区会有漂移。4.2 比较器与HRTIM的联动配置Vds比较器要理解成“一个硬件看门狗”它直接通过HRTIM的从模式事件来干预PWM输出。我使用STM32G474内部的COMP1和COMP2分别监测两个SR MOSFET的Vds。比较器非反相输入连接到SR漏极采样点反相输入连接到DAC输出DAC电平由软件设置为阈值比如-15mV。比较器输出在内部直接连接到HRTIM的某个事件输入。当比较器翻转时HRTIM可以选择通过从模式执行重置、设置或清除对应输出。我配置的是比较器翻转后HRTIM输出通道立即被设置为无效状态即关闭SR管这个过程不需要CPU介入。在CubeMX中配置比较器时还需要把比较器的消隐时间blanking time设置好。消隐时间的作用是在SR管刚刚开通的瞬间Vds上有很高的dv/dt瞬态变化但这个变化并不是电流过零信号需要在开通后一段时间内屏蔽比较器触发。消隐时间的长度大概在100ns到200ns之间具体值必须配合示波器实测Vds波形来定。4.3 核心控制代码状态机与SR开关逻辑下面给出一个简化版但能上板跑的SR控制逻辑框架主要包括模式判断、SR开关、比较器保护处理三个部分。在这里我以C语言伪代码形式展示但关键逻辑都是可以直接移植的。typedef enum { SR_MODE_CCM_FIXED 0, // 重载固定时序模式 SR_MODE_DCM_SENSED, // 轻载比较器检测模式 SR_MODE_BURST // 间歇/打嗝模式 } SR_Mode_t; SR_Mode_t sr_mode SR_MODE_CCM_FIXED; // 主控制循环或定时器中断中调用 void SR_Control_Task(uint16_t output_current, uint16_t output_voltage) { // 1. 根据输出电流判断当前采用哪种SR模式 if (output_current LIGHT_LOAD_THRESHOLD) { sr_mode SR_MODE_DCM_SENSED; } else { sr_mode SR_MODE_CCM_FIXED; } // 2. 在不同模式下配置HRTIM死区及从模式触发源 switch (sr_mode) { case SR_MODE_CCM_FIXED: // 使用固定的更新事件同步SR关断时间由寄存器直接决定 HRTIM1-sTimerxRegs.TIMx_DTR 40; // 上升沿死区约100ns HRTIM1-sTimerxRegs.TIMx_DTF 25; // 下降沿死区约60ns // 关闭比较器从模式触发避免固定模式下误动作 HRTIM1-sTimerxRegs.TIMx_CR ~HRTIM_TIMCR_SYNCSTRTM; break; case SR_MODE_DCM_SENSED: // 将比较器事件映射为HRTIM通道清除信号 HRTIM1-sTimerxRegs.TIMx_CR | (1 8); // 取决于实际寄存器位 break; case SR_MODE_BURST: default: // Burst模式下直接关闭SR通道让体二极管自然整流 HRTIM1-sTimerxRegs.TIMx_DIS 1; break; } } // 比较器中断服务函数记录SR关断触发次数用于调试 void COMP1_IRQHandler(void) { if (LL_EXTI_IsActiveFlag_0_31(LL_EXTI_LINE_20)) { g_sr_neg_current_count; LL_EXTI_ClearFlag_0_31(LL_EXTI_LINE_20); } }要特别说明的是这段代码只是一个控制逻辑骨架真正工程上还需要增加防抖滤波和故障恢复逻辑。但核心思路是固定时序模式用HRTIM的硬件定时能力精确控制SR导通宽度轻载比较器模式则切换到比较器关断。两种模式之间做了滞回切换避免在阈值附近来回抖动导致模式频繁跳变。4.4 轻载与Burst模式下的SR处理策略LLC电源在轻载或者待机状态下通常会进入Burst模式原边PWM并非连续工作而是发出一簇脉冲后停止一段时间。这种模式下SR处理方式与重载完全不同。如果在Burst期间继续按原边开关波形控制SR可能出现很奇怪的波形甚至导致系统效率还不如纯二极管整流。我的做法是当检测到进入Burst模式后SR通道的主动驱动关闭让副边自然通过MOSFET体二极管进行整流。这样做乍一听有点浪费但实际上Burst模式本身就是为了提升轻载效率此时输出功率只有几瓦体二极管损耗绝对值很小主动驱动SR反而会因为驱动电路、死区调节等引入额外损耗。只有退出Burst模式并重新进入正常连续开关状态后再恢复SR驱动。另外Burst模式的切换需要在过零点附近预留足够的回差。比如输出电流低于0.5A时进入Burst模式当输出电流回升到0.8A时才退出Burst并恢复SR。这个滞回区间能有效防止系统在临界点频繁抽搐。如果你发现电源在某个负载点出现反复开关的异响大概率就是Burst模式的滞回区间设置太小了。5. 调试过程与常见问题排查5.1 上电初调试先开环后闭环先原边后SR同步整流调试最大的忌讳就是直接全系统闭环上电。我的习惯是循序渐进的调试流程第一步先用基本的开环PWM驱动原边LLC副边不接SR驱动只靠体二极管整流验证电源空载和带载基本能力。此时通过示波器观察原边Vds波形和副边输出电压确认变压器极性、同名端、反馈极性全部正确。第二步在开环状态下引入SR驱动但把SR的死区时间调到比较宽松的值比如300ns观察SR驱动波形和Vds波形之间是否合理。如果没有明显异常再逐步缩小死区时间。这一步务必用示波器的差分探头测量SR管Vds不能使用普通探头直接接地否则你的“地”不是真正的安全地测出来的波形会一塌糊涂。第三步才进入闭环让环路补偿生效同时把比较器保护阈值、消隐时间也设好。此时再全范围扫描负载记录效率曲线和关键波形。如果你跳过了第二步直接上闭环SR时序一旦有问题你很可能分不清是环路振荡还是SR逻辑错误导致的波形畸变调试难度会直线上升。5.2 常见问题速查表与排查方法为了便于查找问题我把调试过程中遇到的高频故障整理成了表格每个问题都附上了常见的判断手段和解决方向。现象可能原因排查方法解决方向上电瞬间SR管直接炸裂共通电流过大或体二极管反向恢复严重检查SR驱动波形与原边PWM重叠情况观察死区是否足够增大死区时间检查栅极电阻是否过小导致di/dt过大轻载时输出纹波明显增大负电流检测阈值不准或比较器消隐时间不对用示波器抓SR Vds波形观察Vds在轻载下是否出现明显正压尖峰调整比较器阈值或改变消隐时间必要时切换Burst模式整机效率重载偏低SR导通时间不足或死区设置过大计算SR占空比是否接近理想值查看Vds导通期间长度缩短死区时间增大SR导通宽度确认栅极驱动电压达到10V以上频繁听到变压器啸叫模式切换点在来回跳动用示波器或逻辑分析仪观察模式切换信号增加Burst/轻载切换滞回区间负载瞬间增大时输出电压跌落过大SR从比较器检测模式切换回固定模式不够快检查模式切换代码是否被其他任务阻塞把模式切换放到高优先级中断中执行或者用硬件比较器自动切换示波器看到SR管Vds波形振铃严重采样回路寄生电感过大调整探头测量点缩短从管脚到RC滤波器的距离优化PCB布局采样点尽量靠近MOSFET管脚5.3 一条非常实用的调试技巧用HRTIM的DAC配合比较器抓负电流做SR调试如何快速观测负电流的出现一直是新手最困惑的地方。拿示波器直接看Vds波形当然可以但轻微负电流引起的Vds变化幅度可能只有几十毫伏淹没在开关噪声里不容易分辨。我这里有个非常实用的技巧利用STM32G474内部DAC输出设置阈值将比较器输出的触发信号直接接到示波器外部触发通道上。具体做法是先用DAC输出一个比0V略高的电压比如10mV把它接到比较器反相端以监测Vds超过这个阈值的时间然后把比较器输出通过某个GPIO或调试MUX引出到示波器外部触发。当SR管出现负电流时Vds会越过0V变成正压比较器翻转发出一根尖峰脉冲示波器外部触发捕捉到后你就能直观观察到负电流发生的时间和持续宽度。这个方法在调试DCM阈值、负电流保护门限时省了无数时间。你不再需要靠肉眼在一堆高频波形里找轻微异常而是直接看触发脉冲的频率和宽度就能判断负电流的严重程度。5.4 实测结果与效率收益调试完成后这个240W LLC电源在不同负载点下的效率数据也整理了一下。在满载240W输出时未启用SR、仅靠体二极管整流的效率约90.2%启用SR后效率提升到92.8%提升了2.6个百分点在半载120W的时候提升更明显从90.8%提升到了94.1%。轻载条件30W下由于Burst模式和比较器检测模式的介入整体效率维持在了87%左右比固定SR方案硬扛时高了约4%。核心就是SR把整流损耗这一块彻底摁住了。还有一个在实测中反复确认的东西SR对散热影响巨大。未启用SR时副边二极管发热明显散热量大且需要加散热片启用SR后虽然MOSFET也有损耗但热源从二极管转向了管壳更利于贴散热器温度均匀很多。整机温升下降了将近10℃。这在一定意义上比那2%的效率更让人舒服——因为电源的可靠性往往取决于那些超过100℃的发热点。6. 一些需要提前埋进设计里的扩展思考6.1 不断电更新与在线调参SR参数的寄存器映射安排数字电源相比模拟电源最大的优势之一就是软件可调。我在设计SR控制逻辑时提前把死区时间、比较器阈值、消隐时间、Burst切换阈值全部定义成参数结构体让上位机可以通过UART或CAN修改。调试时不用反复烧录程序直接在运行中扫参数组合效率极高。这种设计对实际生产也有很大帮助。不同批次的MOSFET参数不可能完全一致如果写死在代码里换料后要重新编固件如果把参数放到EEPROM或Flash的配置区产线只需通过工具下发不同参数即可。STM32G474内部有足够大的Flash来存储多套配置而且它的双bank特性支持在线升级对设备维护来说非常友好。6.2 多相交错电源中的SR扩展如果你的产品需要多相交错并联来提升整体输出能力STM32G474的HRTIM同样能胜任。一个HRTIM单元可以工作在主模式多组从单元跟随主单元相位偏移每组有自己的SR通道并且各自的比较器独立工作。这意味着你可以用一颗芯片同时控制两相交错LLC或四相交错DC-DC及其全部SR逻辑。不过要注意的是相位偏移量、各自的死区时间、比较器阈值都必须独立配置。一些设计师在单相调通后直接把单相代码复制成多路使用结果由于共用参数导致每相特性不一致。正确的做法是将SR控制逻辑抽成一个函数通过参数索引区分通道号在初始化阶段为每个通道加载独立配置。6.3 与DSP库和数学加速单元的结合SR控制本身并不需要多么复杂的数学计算但当你把SR和整机环路、自动死区优化、甚至在线负载检测结合在一起时计算量会迅速增加。STM32G474内置的CORDIC和FMAC协处理器这时候就能派上用场比如用FMAC做数字滤波和PID用CORDIC做坐标变换或三角函数计算。我就是用FMAC跑了一个二阶低通滤波器平滑输出电流采样值从而获得更稳定的模式判断输入。当然如果你只是单一地做SR协处理器利用率并不高。但如果你正好要做一台完整的数字电源PFC、LLC、SR、环路、保护全都要在G474上跑这些数学硬件就会成为你的底气。一个简单原则能用硬件单元完成的运算绝不占用CPU周期因为CPU要留给故障处理、通信和模式切换这些更考验响应速度的任务。ST官方文档里对这款芯片的设定也一直是“高分辨率定时器 丰富模拟外设”的数字电源专用平台。与其说你在用MCU实现同步整流不如说你在把它本来的功能发挥出来。SR这件事在STM32G474上并不复杂难的是对电源拓扑和时序的深度理解以及对调试细节的把握。希望这篇基于实际项目经验的记录能给你一个比看datasheet更落地的参考。
返回列表