JAJA937 July 2025 TDA4VE-Q1
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 信号です。
図 3-1 アップカウント モードにおける CMPA レジスタ更新時の PWM 変化のプローブ期待される動作は、デューティ サイクルが 20% から直接 80% に変化することですが、実際には意図しない 25% や 83% のデューティ サイクルが発生しています。
図 3-2 アップカウント モードにおける PWM デューティ サイクルの 20% から 80% への変化の分析これについては、次で分析します。
この挙動の根本原因は、CMPA レジスタが即時更新モードであることに起因しています。このモードでは、CMPA に書き込まれた新しい値は、周期の途中であっても即座に反映されます。PWM ロジックは現在の CMPA 値を基にコンペア イベントを処理するため、周期の途中で値が変更されると、出力タイミングが不正確になります。これはハードウェアの不具合ではなく、設定ミスによるものです。即時更新が有効なケースもあるが、動作中にデューティ サイクルを動的に変更する用途においては、安全ではありません。