ZHCAFI8 July   2025 TDA4VE-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2了解 TDA4x 上的 PWM 工作机制
    1. 2.1 PWM 架构概述
    2. 2.2 计数器比较寄存器和占空比控制
    3. 2.3 动作限定器与输出行为
    4. 2.4 同步与更新时序
  6. 3立即 CMPA 寄存器更新导致的 PWM 占空比异常
  7. 4向上/向下计数模式下的非预期 PWM 占空比
  8. 5适用于 LED 调光控制的无缝 PWM 更新最佳实践
    1. 5.1 使用影子寄存器进行占空比更新
    2. 5.2 选择相应的计数器模式
    3. 5.3 影子寄存器下向上计数模式的寄存器配置
  9. 6总结
  10. 7参考资料

立即 CMPA 寄存器更新导致的 PWM 占空比异常

要改变 PWM 占空比,必须向 CMPA 寄存器写入新值。软件很难做到高度确定性的更新,因此 CMPA 寄存器可能在不合适的时刻更新,这会导致非预期的 PWM 占空比,进而在短时间内造成 LED 控制亮度异常或电机转速与扭矩控制失常。为了避免不可预测的更新,应使用影子寄存器更新来代替立即寄存器更新。让我们通过将 PWM 占空比从 20% 更改为 80%,尝试理解立即寄存器更新如何在向上计数模式下导致该问题。

考虑向上计数模式下的 PWM 配置为:当 TBCNT = 0 时输出高电平,当 TBCNT = CMPA 时输出低电平。如果 CMPA 寄存器在一个周期中途更新,根据新的 CMPA 值,PWM 输出可能会在当前周期中早于或晚于预期切换至低电平。这会导致持续一个或多个 PWM 周期的占空比失真。

以下寄存器配置可用于在向上计数模式下生成 20% 的 PWM 占空比。

EPWM_TBPRD = 62500 EPWM_TBCTL.CTRMODE = 0 → Up
                count mode EPWM_CMPA = 12500 (= 62500 x 20%) EPWM_CMPCTL.SHDWAMODE = 1 → Immediate
                mode

如下图所示,通过更新 CMPA 寄存器使 PWM 占空比达到 80%。

EPWM_CMPA = 50000 (= 62500 × 80%)

图 3-1 是通过逻辑分析仪探测到的 PWM 信号。

 探测向上计数模式下更新 CMPA 寄存器期间的 PWM
                    变化 图 3-1 探测向上计数模式下更新 CMPA 寄存器期间的 PWM 变化

预期占空比直接从 20% 变为 80%,但实际出现了 25% 和 83% 的非预期占空比。

 分析向上计数模式下 PWM 占空比从 20% 变为
                    80% 图 3-2 分析向上计数模式下 PWM 占空比从 20% 变为 80%

具体分析如下。

  • 当前占空比 = 20%。
    方程式 1. Duty = 100 × 1250012500 + 50000 = 20%
  • 软件会在 ① 至 ② 之间将 50000 写入 CMPA 寄存器。
  • CMPA 寄存器值会立即更新。
  • PWM 在 ② 时翻转,导致占空比变为 25%。
    方程式 2. Duty = 100 × 1250012500 + 37500 = 25%
  • 在随后的 PWM 周期中,PWM 占空比变为 83%。
    方程式 3. Duty = 100 × 6250062500 + 12500 = 83%
  • 经过两个连续的 PWM 周期后,PWM 占空比稳定在 80%。
    方程式 4. Duty = 100 × 5000050000 + 62500 = 80% 
注: 占空比计算公式如下。
方程式 5. Duty = 100 × High PeriodHigh Period + Low Period

这种行为的根本原因在于 CMPA 寄存器的立即更新模式。在此模式下,写入 CMPA 的任何新值都会立即生效 — 即便在周期中间写入亦是如此。由于 PWM 逻辑使用当前 CMPA 值进行比较事件判断,周期中间的变化会导致输出时序错误。这并非硬件缺陷,而是配置上的疏忽。立即更新在某些情况下是有效的,但对于运行过程中的动态占空比调整,这种更新方式并不安全。