好的,使用 STM32G474 的 HRTIM 和比较器 COMP 来实现 COT (Constant On-Time) Buck 变换器控制模式,特别是处理比较器输出长时间有效(Vout 低于 Vref 超过 Ton_max)时需要强制重复导通的情况,是一个非常典型的应用场景。G474 的 HRTIM 硬件能力非常适合实现这种需求。
以下是实现的核心思路、关键硬件配置和具体步骤:
核心思路:
- 事件驱动导通 (On-Demand Turn-On): 使用比较器 COMP2 比较 Vout 和 Vref。当 Vout < Vref 时,COMP2 输出变高(或低,取决于极性配置),这个上升沿作为 导通触发事件。
- 固定导通时间 (Ton): 在接收到 COMP2 的触发事件后,HRTIM 立即开启 Buck 的高边开关(例如 TIM A 输出 PWMHx)。同时启动一个计时器(Ton计时器)。这个 Ton 计时器可以通过 HRTIM 内部的比较器或周期匹配事件来实现。
- 时间到关断: 当 Ton 计时器达到预设的固定时间 (
Ton_fixed) 后,立即关闭 PWMHx。同时启动(或进入)一个最小关断时间保护计时器 (Toff_min timer)。
- 处理“反复导通”需求(关键部分):
- 在关断期间 (
Toff_min 内),虽然 Vout 可能仍低于 Vref (COMP2 输出仍有效),但 不能立刻响应新的比较器触发。这就是最小关断时间保护,防止开关频率过高。
- 当
Toff_min 计时器结束时:
- 如果此时 COMP2 输出仍然有效(Vout < Vref),说明负载很重或输入电压突降,仅靠常规的事件触发+Ton无法维持电压。此时,系统必须 强制 产生一个新的导通触发事件。
- 如果此时 COMP2 输出无效(Vout >= Vref),则系统处于正常稳态或轻载状态,等待下一次 COMP2 触发的自然发生。
- 这个“强制触发”操作,本质上是在
Toff_min 结束时刻,主动模拟一个 COMP2 触发信号(即使物理上的 COMP2 输出可能已经有效了很长时间)。
- HRTIM 在检测到这个“强制触发”信号后,就会立刻开始下一个开关周期:开启 PWMHx 并重新启动
Ton_fixed 计时器。
如何利用 STM32G474 HRTIM 实现上述逻辑(关键硬件配置):
HRTIM 的强大之处在于其事件、触发、门控和状态机逻辑,可以在硬件层面处理大部分 COT 时序需求,包括“反复导通”。
比较器 COMP2 设置:
- 连接 Vout (同相端) 和 Vref (反相端)。Vref 可由内部 DAC 或外部 DAC 提供。
- 配置为快速比较器模式(启用内部补偿电容以提高响应速度)。
- 配置输出极性,使其在 Vout < Vref 时输出高电平 (或低电平,但要与触发边沿选择匹配)。
- 将 COMP2 输出连接到 HRTIM 的一个 TRIGGER 输入源(如 TRIG1)。在 STM32CubeMX 或参考手册中寻找 “COMP2 HRTIM TRIGGER” 的路由选项。
HRTIM 设置 - 时间基准 (Timer A for Buck):
- 模式: 配置为
Burst Mode。在此模式下,通常需要一个外部事件(这里是 COMP2 触发)来启动计时器。当达到峰值条件(我们的 Ton_fixed 设置)时自动停止(复位)。这与 COT 的事件驱动特性完美契合。
- 主周期 (Period): 设置为一个远超预期最大 Ton 和最大开关周期的值(例如 65535)。HRTIM 实际控制逻辑是由触发和事件驱动的,Period 在此仅作为计数器上限。
- Ton 固定计时实现:
- 使用 比较器 (CMPx):设置一个比较寄存器
TIMx_CMP1 = Ton_fixed。配置对应的比较事件 (CMP1) 来触发 ADC Start of Conversion (如果使用 ADC 电流保护)。
- 使用 周期 (PER) 中断匹配: 配置
TIMx_PER 寄存器为 Ton_fixed。在 Burst Mode 下,计数达到 PER 值也会被视为结束条件。但通常用 CMP 更灵活。
- 关键链接: 在
TIMx_OUT 寄存器中,配置 FLT[0] 或 FLT[1] 的 FAULT 源为 CMP1 event (或 PER event)。这样,当 Ton_fixed 时间达到时,会触发 Fault 事件。
- 设置故障动作: 在
TIMx_FLTINx (x=1 或 2, 对应选择的 FAULT 源) 寄存器中,配置故障响应动作 DISACTION 为 Set output to reset/inactive level (对应高边开关关闭)。这样,Ton 时间一到就关闭开关。
- 强制状态机复位 (处理反复导通):
- 使用另一个 Timer (如 Timer E) 作为
Toff_min 计时器。
- 配置 Toff_min: 设置 Timer E 的
PER 寄存器 = Toff_min。
- 启动 Toff_min: 当 Timer A (Buck Timer) 的
FAULT 事件 (CMP1/PER 事件导致关断) 发生时,使用这个事件 (FAULTx) 作为 Timer E 的 软件更新触发 (SWUPDT) 或计数开始事件 (CONT)。这样,Timer A 关断的同时就启动了 Timer E (Toff_min) 的计时。
- Timer E Period 结束事件: 配置 Timer E 的
PER 事件 (达到 Toff_min 时间) 作为 HRTIM 的一个 GLOBAL RESET 触发源 (GRSTx)。
- GRSTx 动作: 关键点来了!配置 GRSTx 源为 Timer E 的 PER 事件。GRST 的作用是 强制 HRTIM 状态机复位。
- 连接 COMP2 状态 (门控): HRTIM 的输入触发可以被门控(Gating)。找到 TRIG1 (COMP2) 输入对应的门控配置
TIMx_TRIG1。
- 使能门控功能: 设置门控源
GATING (例如 GATENG1)。一个合适的门控源可以是另一个 Timer (如 Timer E) 的 PER 事件本身或其反相 (!PER)。配置门控类型 GTYPE 为 Enable。
- 目的: 在 Timer E 运行期间 (
Toff_min 内),禁止 TRIG1 (COMP2) 触发 HRTIM。在 Timer E PER 事件结束时 (Toff_min 结束),允许 TRIG1 触发或更重要地,强制状态机复位本身会像检测到一个触发一样开始下一个周期!
- 动作链 (处理反复导通):
Toff_min 结束 (Timer E PER 事件) -> 触发 GRSTx。
- GRSTx 强制 Timer A (Buck Timer) 状态机复位。
- 状态机复位后,HRTIM 会立即检查当前有效的触发源。此时:
- 如果 COMP2 输出依然有效 (Vout < Vref),则在 GRSTx 发生瞬间,TRIG1 输入是有效的。HRTIM 会立即将这个有效电平视为一个等待处理的触发事件! 因此它会立刻响应这个“新”触发,开始新的 Ton 周期(开启 PWMHx,启动 Ton 计时)。
- 如果 COMP2 输出此时无效 (Vout >= Vref),则复位后的状态机中没有等待的触发事件,HRTIM 保持等待状态,直到下一次 COMP2 有效触发发生。
- 这样,就实现了在
Toff_min 结束后,只要 Vout 仍然低,就强制开始一个新开关周期的逻辑,解决了反复导通的需求。整个过程是在硬件层面自动完成的。
PWM 输出设置 (TIMx_CHx):
- 配置选择的 TIMx_CHx (例如 TIMA_CH1) 输出为
PWM mode 1。
- 设置
DTG(死区时间生成器)防止半桥穿通(如果使用外部驱动或同步整流)。
- 将高边开关输出
PWMH1 连接到你功率级的 MOSFET Gate 驱动。
总结关键配置点以实现“反复导通”:
Toff_min 生成: 使用一个辅助 Timer(如 E)在 Buck Timer 关断事件启动,计时 Toff_min。
Toff_min 结束复位状态机: 将辅助 Timer 的 PER 事件连接到 GRSTx 源,用于强制复位 Buck Timer 的状态机。
- 门控 COMP2 触发: 使用辅助 Timer (
PER 或其反相 !PER) 门控 COMP2 的触发输入 (TRIGx),在 Toff_min 期间屏蔽触发。
- 复位与自动响应:
GRSTx 复位 Buck Timer 后,由于 COMP2 触发信号(门控已释放)在复位瞬间是有效的(等待状态),状态机会立即将其视为有效触发,从而开启新的 Ton 周期。如果 COMP2 在 Toff_min 结束时无效,状态机则保持等待。
实现步骤:
- CubeMX 配置:
- 启用 HRTIM,配置 Timer A (
Burst Mode), Period 很大 (0xFFFF)。
- 配置 HRTIM COMP1 值 =
Ton_fixed,并链接 COMP1 事件到对应 FAULT 输入,设置 FAULT Action 为 Disable Output (关断)。
- 配置 Timer E (
Continuous Mode),设置 Period = Toff_min。
- 设置 Buck Timer 关断事件(FAULTx)触发 Timer E 的
SWUPDT(软件更新,启动计时)或使其开始计数 (CONT)。
- 设置 Timer E PER 事件连接到
GRSTx 源(选择适当的 GRSTx)。
- 设置 COMP2 输出连接到
TRIG1 输入。
- 为
TRIG1 配置门控,启用门控功能,选择 Timer E 的 PER 或 !PER 作为门控源,类型 Enable(当门控源有效时允许触发)。
- 配置 PWM 通道输出、极性、死区等。
- 配置 DAC 产生 Vref 或外部连接 Vref。
- 配置 COMP2(正负输入,输出极性,速度等)。
- 初始化代码:
HAL_HRTIM_WaveformOutputStart(&hhrtim, HRTIM_OUTPUT_TAx) (启动 Buck PWM 输出)
HAL_HRTIM_WaveformCounterStart(&hhrtim, HRTIM_TIMERID_TIMER_A | HRTIM_TIMERID_TIMER_E) (启动 HRTIM 计数)
HAL_COMP_Start(&hcomp2) (启动比较器)
- 根据负载/输入,可能需要动态设置
Ton_fixed 或 Vref (DAC)的值,通过修改 TIMx_CMP1xR (Ton_fixed) 或 HAL_DAC_SetValue() (Vref)实现。
- 运行时:
- 主要逻辑在 HRTIM 硬件中自动执行。
- 软件只需监控系统状态(过压、过流保护需要配置)、处理用户命令(改变 Vref/DAC)、动态调整
Ton_fixed 值等。
重要注意事项:
- 响应速度: 确保 COMP2 的响应时间和 HRTIM 的触发->输出延迟足够快,以满足系统瞬态响应的要求。
- 斜率补偿: 对于工作在连续导通模式(CCM)的 D > 50% 的 Buck,COT 可能需要斜率补偿(通常通过向电流检测信号或 COMP2 比较端添加一个小斜坡实现)以防止次谐波振荡。STM32G474 内部资源(如斜坡发生器 DAC)可以辅助实现。
- 电流限制: 保护电路是必要的。使用 ADC 采样电流或 COMP1 进行峰值电流限制保护,连接到另一个 FAULT 输入并设置立即关断动作。
- 门控与复位选择: 仔细查阅 HRTIM 手册,理解 GRSTx 行为和 Gating 机制细节,选择正确的触发源、门控源和门控类型。
- 调试: 使用示波器仔细观测
COMP2_OUT, HRTIM TRIGx, TIMx_CHy, GRSTx, 辅助 Timer TIMER_E_PER 等关键信号,验证状态机转换是否符合预期,特别是“反复导通”部分。
通过合理配置 STM32G474 强大的 HRTIM 资源(特别是 Burst Mode, 触发、门控、GRST 和状态机复位逻辑),可以高效地在硬件层面实现 COT Buck 控制及其所需的“反复导通”特性,减轻 CPU 负担并提高系统响应速度和可靠性。
好的,使用 STM32G474 的 HRTIM 和比较器 COMP 来实现 COT (Constant On-Time) Buck 变换器控制模式,特别是处理比较器输出长时间有效(Vout 低于 Vref 超过 Ton_max)时需要强制重复导通的情况,是一个非常典型的应用场景。G474 的 HRTIM 硬件能力非常适合实现这种需求。
以下是实现的核心思路、关键硬件配置和具体步骤:
核心思路:
- 事件驱动导通 (On-Demand Turn-On): 使用比较器 COMP2 比较 Vout 和 Vref。当 Vout < Vref 时,COMP2 输出变高(或低,取决于极性配置),这个上升沿作为 导通触发事件。
- 固定导通时间 (Ton): 在接收到 COMP2 的触发事件后,HRTIM 立即开启 Buck 的高边开关(例如 TIM A 输出 PWMHx)。同时启动一个计时器(Ton计时器)。这个 Ton 计时器可以通过 HRTIM 内部的比较器或周期匹配事件来实现。
- 时间到关断: 当 Ton 计时器达到预设的固定时间 (
Ton_fixed) 后,立即关闭 PWMHx。同时启动(或进入)一个最小关断时间保护计时器 (Toff_min timer)。
- 处理“反复导通”需求(关键部分):
- 在关断期间 (
Toff_min 内),虽然 Vout 可能仍低于 Vref (COMP2 输出仍有效),但 不能立刻响应新的比较器触发。这就是最小关断时间保护,防止开关频率过高。
- 当
Toff_min 计时器结束时:
- 如果此时 COMP2 输出仍然有效(Vout < Vref),说明负载很重或输入电压突降,仅靠常规的事件触发+Ton无法维持电压。此时,系统必须 强制 产生一个新的导通触发事件。
- 如果此时 COMP2 输出无效(Vout >= Vref),则系统处于正常稳态或轻载状态,等待下一次 COMP2 触发的自然发生。
- 这个“强制触发”操作,本质上是在
Toff_min 结束时刻,主动模拟一个 COMP2 触发信号(即使物理上的 COMP2 输出可能已经有效了很长时间)。
- HRTIM 在检测到这个“强制触发”信号后,就会立刻开始下一个开关周期:开启 PWMHx 并重新启动
Ton_fixed 计时器。
如何利用 STM32G474 HRTIM 实现上述逻辑(关键硬件配置):
HRTIM 的强大之处在于其事件、触发、门控和状态机逻辑,可以在硬件层面处理大部分 COT 时序需求,包括“反复导通”。
比较器 COMP2 设置:
- 连接 Vout (同相端) 和 Vref (反相端)。Vref 可由内部 DAC 或外部 DAC 提供。
- 配置为快速比较器模式(启用内部补偿电容以提高响应速度)。
- 配置输出极性,使其在 Vout < Vref 时输出高电平 (或低电平,但要与触发边沿选择匹配)。
- 将 COMP2 输出连接到 HRTIM 的一个 TRIGGER 输入源(如 TRIG1)。在 STM32CubeMX 或参考手册中寻找 “COMP2 HRTIM TRIGGER” 的路由选项。
HRTIM 设置 - 时间基准 (Timer A for Buck):
- 模式: 配置为
Burst Mode。在此模式下,通常需要一个外部事件(这里是 COMP2 触发)来启动计时器。当达到峰值条件(我们的 Ton_fixed 设置)时自动停止(复位)。这与 COT 的事件驱动特性完美契合。
- 主周期 (Period): 设置为一个远超预期最大 Ton 和最大开关周期的值(例如 65535)。HRTIM 实际控制逻辑是由触发和事件驱动的,Period 在此仅作为计数器上限。
- Ton 固定计时实现:
- 使用 比较器 (CMPx):设置一个比较寄存器
TIMx_CMP1 = Ton_fixed。配置对应的比较事件 (CMP1) 来触发 ADC Start of Conversion (如果使用 ADC 电流保护)。
- 使用 周期 (PER) 中断匹配: 配置
TIMx_PER 寄存器为 Ton_fixed。在 Burst Mode 下,计数达到 PER 值也会被视为结束条件。但通常用 CMP 更灵活。
- 关键链接: 在
TIMx_OUT 寄存器中,配置 FLT[0] 或 FLT[1] 的 FAULT 源为 CMP1 event (或 PER event)。这样,当 Ton_fixed 时间达到时,会触发 Fault 事件。
- 设置故障动作: 在
TIMx_FLTINx (x=1 或 2, 对应选择的 FAULT 源) 寄存器中,配置故障响应动作 DISACTION 为 Set output to reset/inactive level (对应高边开关关闭)。这样,Ton 时间一到就关闭开关。
- 强制状态机复位 (处理反复导通):
- 使用另一个 Timer (如 Timer E) 作为
Toff_min 计时器。
- 配置 Toff_min: 设置 Timer E 的
PER 寄存器 = Toff_min。
- 启动 Toff_min: 当 Timer A (Buck Timer) 的
FAULT 事件 (CMP1/PER 事件导致关断) 发生时,使用这个事件 (FAULTx) 作为 Timer E 的 软件更新触发 (SWUPDT) 或计数开始事件 (CONT)。这样,Timer A 关断的同时就启动了 Timer E (Toff_min) 的计时。
- Timer E Period 结束事件: 配置 Timer E 的
PER 事件 (达到 Toff_min 时间) 作为 HRTIM 的一个 GLOBAL RESET 触发源 (GRSTx)。
- GRSTx 动作: 关键点来了!配置 GRSTx 源为 Timer E 的 PER 事件。GRST 的作用是 强制 HRTIM 状态机复位。
- 连接 COMP2 状态 (门控): HRTIM 的输入触发可以被门控(Gating)。找到 TRIG1 (COMP2) 输入对应的门控配置
TIMx_TRIG1。
- 使能门控功能: 设置门控源
GATING (例如 GATENG1)。一个合适的门控源可以是另一个 Timer (如 Timer E) 的 PER 事件本身或其反相 (!PER)。配置门控类型 GTYPE 为 Enable。
- 目的: 在 Timer E 运行期间 (
Toff_min 内),禁止 TRIG1 (COMP2) 触发 HRTIM。在 Timer E PER 事件结束时 (Toff_min 结束),允许 TRIG1 触发或更重要地,强制状态机复位本身会像检测到一个触发一样开始下一个周期!
- 动作链 (处理反复导通):
Toff_min 结束 (Timer E PER 事件) -> 触发 GRSTx。
- GRSTx 强制 Timer A (Buck Timer) 状态机复位。
- 状态机复位后,HRTIM 会立即检查当前有效的触发源。此时:
- 如果 COMP2 输出依然有效 (Vout < Vref),则在 GRSTx 发生瞬间,TRIG1 输入是有效的。HRTIM 会立即将这个有效电平视为一个等待处理的触发事件! 因此它会立刻响应这个“新”触发,开始新的 Ton 周期(开启 PWMHx,启动 Ton 计时)。
- 如果 COMP2 输出此时无效 (Vout >= Vref),则复位后的状态机中没有等待的触发事件,HRTIM 保持等待状态,直到下一次 COMP2 有效触发发生。
- 这样,就实现了在
Toff_min 结束后,只要 Vout 仍然低,就强制开始一个新开关周期的逻辑,解决了反复导通的需求。整个过程是在硬件层面自动完成的。
PWM 输出设置 (TIMx_CHx):
- 配置选择的 TIMx_CHx (例如 TIMA_CH1) 输出为
PWM mode 1。
- 设置
DTG(死区时间生成器)防止半桥穿通(如果使用外部驱动或同步整流)。
- 将高边开关输出
PWMH1 连接到你功率级的 MOSFET Gate 驱动。
总结关键配置点以实现“反复导通”:
Toff_min 生成: 使用一个辅助 Timer(如 E)在 Buck Timer 关断事件启动,计时 Toff_min。
Toff_min 结束复位状态机: 将辅助 Timer 的 PER 事件连接到 GRSTx 源,用于强制复位 Buck Timer 的状态机。
- 门控 COMP2 触发: 使用辅助 Timer (
PER 或其反相 !PER) 门控 COMP2 的触发输入 (TRIGx),在 Toff_min 期间屏蔽触发。
- 复位与自动响应:
GRSTx 复位 Buck Timer 后,由于 COMP2 触发信号(门控已释放)在复位瞬间是有效的(等待状态),状态机会立即将其视为有效触发,从而开启新的 Ton 周期。如果 COMP2 在 Toff_min 结束时无效,状态机则保持等待。
实现步骤:
- CubeMX 配置:
- 启用 HRTIM,配置 Timer A (
Burst Mode), Period 很大 (0xFFFF)。
- 配置 HRTIM COMP1 值 =
Ton_fixed,并链接 COMP1 事件到对应 FAULT 输入,设置 FAULT Action 为 Disable Output (关断)。
- 配置 Timer E (
Continuous Mode),设置 Period = Toff_min。
- 设置 Buck Timer 关断事件(FAULTx)触发 Timer E 的
SWUPDT(软件更新,启动计时)或使其开始计数 (CONT)。
- 设置 Timer E PER 事件连接到
GRSTx 源(选择适当的 GRSTx)。
- 设置 COMP2 输出连接到
TRIG1 输入。
- 为
TRIG1 配置门控,启用门控功能,选择 Timer E 的 PER 或 !PER 作为门控源,类型 Enable(当门控源有效时允许触发)。
- 配置 PWM 通道输出、极性、死区等。
- 配置 DAC 产生 Vref 或外部连接 Vref。
- 配置 COMP2(正负输入,输出极性,速度等)。
- 初始化代码:
HAL_HRTIM_WaveformOutputStart(&hhrtim, HRTIM_OUTPUT_TAx) (启动 Buck PWM 输出)
HAL_HRTIM_WaveformCounterStart(&hhrtim, HRTIM_TIMERID_TIMER_A | HRTIM_TIMERID_TIMER_E) (启动 HRTIM 计数)
HAL_COMP_Start(&hcomp2) (启动比较器)
- 根据负载/输入,可能需要动态设置
Ton_fixed 或 Vref (DAC)的值,通过修改 TIMx_CMP1xR (Ton_fixed) 或 HAL_DAC_SetValue() (Vref)实现。
- 运行时:
- 主要逻辑在 HRTIM 硬件中自动执行。
- 软件只需监控系统状态(过压、过流保护需要配置)、处理用户命令(改变 Vref/DAC)、动态调整
Ton_fixed 值等。
重要注意事项:
- 响应速度: 确保 COMP2 的响应时间和 HRTIM 的触发->输出延迟足够快,以满足系统瞬态响应的要求。
- 斜率补偿: 对于工作在连续导通模式(CCM)的 D > 50% 的 Buck,COT 可能需要斜率补偿(通常通过向电流检测信号或 COMP2 比较端添加一个小斜坡实现)以防止次谐波振荡。STM32G474 内部资源(如斜坡发生器 DAC)可以辅助实现。
- 电流限制: 保护电路是必要的。使用 ADC 采样电流或 COMP1 进行峰值电流限制保护,连接到另一个 FAULT 输入并设置立即关断动作。
- 门控与复位选择: 仔细查阅 HRTIM 手册,理解 GRSTx 行为和 Gating 机制细节,选择正确的触发源、门控源和门控类型。
- 调试: 使用示波器仔细观测
COMP2_OUT, HRTIM TRIGx, TIMx_CHy, GRSTx, 辅助 Timer TIMER_E_PER 等关键信号,验证状态机转换是否符合预期,特别是“反复导通”部分。
通过合理配置 STM32G474 强大的 HRTIM 资源(特别是 Burst Mode, 触发、门控、GRST 和状态机复位逻辑),可以高效地在硬件层面实现 COT Buck 控制及其所需的“反复导通”特性,减轻 CPU 负担并提高系统响应速度和可靠性。
举报