JAJA937 July   2025 TDA4VE-Q1

 

  1.   1
  2.   概要
  3.   商標
  4. 1はじめに
  5. 2TDA4x における PWM 動作の理解
    1. 2.1 PWM アーキテクチャの概要
    2. 2.2 カウンタコンペア レジスタとデューティ サイクルの制御
    3. 2.3 アクション クオリファイアと出力動作
    4. 2.4 同期と更新タイミング
  6. 3意図しない PWM デューティ サイクルの原因となる CMPA レジスタの即時更新
  7. 4アップダウン カウント モードにおける意図しない PWM デューティ サイクル
  8. 5LED 調光制御におけるシームレスな PWM 更新のためのベスト プラクティス
    1. 5.1 デューティ サイクルの更新にはシャドウ レジスタを使用する
    2. 5.2 適切なカウント モードの選択
    3. 5.3 シャドウ化されたアップカウント モードにおけるレジスタ設定
  9. 6まとめ
  10. 7参考資料

意図しない PWM デューティ サイクルの原因となる CMPA レジスタの即時更新

PWM のデューティ比を変更するには、CMPA レジスタに新しい値を書き込む必要があります。ソフトウェアによって非常に確定的なタイミングで更新することは困難であり、CMPA レジスタが不適切なタイミングで更新される可能性があります。これにより、意図しない PWM デューティ サイクルが発生し、LED 制御における輝度の誤差や、短時間内でのモータの速度およびトルク制御の誤作動につながる可能性があります。予測不能な更新を防ぐために、即時レジスタ更新ではなくシャドウ レジスタ更新を使用します。ここでは、PWM のデューティ比を 20% から 80% に変更する際、アップカウント モードにおいて即時レジスタ更新がどのように問題を引き起こすかを見てみます。

TBCNT = 0 のときに HIGH、TBCNT = CMPA のときに LOW となるように構成されたアップカウント モードの PWM を想定します。PWM 周期の途中で CMPA レジスタが更新されると、新しい CMPA 値に応じて、現在の周期内で PWM 出力が意図より早くまたは遅く LOW に切り替わる可能性があります。これにより、1周期以上にわたってデューティ サイクルの歪みが発生します。

以下のレジスタ設定は、アップカウント モードにおいて PWM のデューティ サイクルを 20% にするためのものです。

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%
  • ソフトウェアは、①と②の間に CMPA レジスタへ 50000 を書き込みます。
  • CMPA レジスタの値は即時に更新されます。
  • PWM は②のタイミングでトグルし、これによりデューティ サイクルは 25% となります。
    式 2. Duty = 100 × 1250012500 + 37500 = 25%
  • 次の PWM 周期では、PWM のデューティ サイクルは 83% となります。
    式 3. Duty = 100 × 6250062500 + 12500 = 83%
  • 2 周期連続で不安定な状態を経た後、PWM のデューティ サイクルは 80% に安定します。
    式 4. Duty = 100 × 5000050000 + 62500 = 80% 
注: デューティは、以下の式で算出されます。
式 5. Duty = 100 × High PeriodHigh Period + Low Period

この挙動の根本原因は、CMPA レジスタが即時更新モードであることに起因しています。このモードでは、CMPA に書き込まれた新しい値は、周期の途中であっても即座に反映されます。PWM ロジックは現在の CMPA 値を基にコンペア イベントを処理するため、周期の途中で値が変更されると、出力タイミングが不正確になります。これはハードウェアの不具合ではなく、設定ミスによるものです。即時更新が有効なケースもあるが、動作中にデューティ サイクルを動的に変更する用途においては、安全ではありません。