STM32G474 中包含了针对数字电源应用的高精度定时器(HRTIMER),客户在应用该定时器
产生 PWM 时,发现 PWM 的输出出现了“丢波”现象,本文对该问题进行分析并给出解决方案。客户使用高精度定时器产生 PWM, 其 PWM 产生的配置如下,Master Timer 的 period event与 compare 1 event 分别作为 Timer A 与 Timer B 的复位源,Timer A 与 Timer B 产生的 180 度移相的 PWM 输出,EEV4 作为外部事件来触发 PWM reset, 并且使用 blanking 功能过滤发生在PWM set 点附近的 EEV4 事件,Timer compare 3 event 用来限制 PWM 的最大占空比,当 PWM周期内没有 EEV4 发生或是发生的时间点晚于 compare 3 事件时,Timer compare 3 event 将触发PWM reset。
### 应用笔记LAT1167+STM32G474+HRTIME+PWM+丢波问题分析与解决
#### 1. 前言
在本篇文章中,我们将深入探讨一个关于STM32G474微控制器在使用其内置的高精度定时器(HRTIMER)来产生脉冲宽度调制(PWM)信号时所遇到的一个具体问题——即“丢波”现象,并提供一种可行的解决方案。STM32G474是一款高性能、低功耗的微控制器,特别适合应用于数字电源控制等场合。该控制器配备有高级定时器模块HRTIMER,能够满足高精度PWM输出的需求。
#### 2. 问题描述
客户在配置HRTIMER用于产生PWM时,遇到了“丢波”的情况。具体配置如下:
- **Master Timer**:
- 工作模式:交错模式(Half mode)
- Timer A 和 Timer B 的计数器重置触发源分别由Master Timer的周期事件(period event)和比较1事件(compare 1 event)提供。
- PWM 设置源和复位源:对于Timer A 和 Timer B,PWM的设置源同样分别为Master Timer的周期事件和比较1事件;而PWM的复位源则由Timer compare 3 event 和外部事件EEV4共同决定。
- **EEV4**(外部事件输入4):
- 源:比较器1(COMP1)的下降沿
- 快速模式:重新同步模式(re-sync mode)
- 过滤功能:从计数器重置/溢出到比较1期间的事件将被消隐(blanking)
这种配置的目的在于产生两路相位相差180度的PWM输出,并且通过外部事件EEV4来复位PWM,同时利用消隐功能避免在PWM设置点附近发生EEV4事件导致的错误触发。
#### 3. 问题分析
在正常情况下,此配置能够成功地产生预期的PWM信号。然而,在某些特定条件下,当外部事件EEV4接近PWM周期值发生时,会出现“丢波”的现象。具体来说,“丢波”是指在连续的PWM周期中,某一周期内的信号未能正确输出或输出时间异常缩短的情况。
**原因分析**:
- 当外部事件EEV4接近PWM周期值发生时,它可能会与Timer compare 3 event触发的PWM复位冲突。这是因为两者都可能在接近PWM周期结束时触发PWM复位,从而导致实际的PWM输出时间异常缩短或者完全丢失。
- 另外,虽然配置中启用了消隐功能来避免在PWM设置点附近的EEV4事件触发,但由于EEV4事件与PWM设置点之间的时间间隔较短,这可能导致消隐机制未能有效工作。
#### 4. 解决方案
为了解决上述“丢波”问题,可以采取以下措施:
1. **调整消隐窗口**:通过增加消隐窗口的长度,确保EEV4事件不会在PWM设置点附近触发。这可以通过调整计数器重置/溢出到比较1之间的消隐区间来实现。
2. **优化外部事件触发逻辑**:考虑修改EEV4的触发逻辑,例如改变其触发条件或延迟触发时间,以避免其与Timer compare 3 event冲突。
3. **调整Timer compare 3 event的阈值**:通过调整Timer compare 3 event的触发条件,使其触发时间更早,从而减少与EEV4事件之间的冲突可能性。
#### 5. 结论
通过对STM32G474中HRTIMER产生的PWM信号出现“丢波”现象的原因进行深入分析,并提出相应的解决方案,我们能够有效地提高系统的稳定性和可靠性。未来还可以进一步探索其他参数调整的方法,以适应不同应用场景下的需求。
1