STM32C0 - GPTIM

高機能制御タイマ、汎用タイマ、基本タイマ
レビジョン1.0

STM32マイクロコントローラに搭載されている高機能制御タイ
マ、汎用タイマ、基本タイマのプレゼンテーションにようこそ。こ
こでは、タイミングに関連したイベントの処理、波形生成、入力信号のタイミング特性の測定に有用な主な機能について説明
します。

1

概要
• 複数のタイマユニットがタイミング･リソースを提供

ETR
CK_INT

トリガ/クロック
コントローラトリガ
出力• 内部（トリガ、タイムベース）

ITR0-3• 外部、入出力用：
16ビットプリスケーラ• 波形生成用（PWM）• 信号の監視または測定用（周波数またはタイミング）

自動再ロード+/-16/32ビットカウンタ
入力

出力

CH1

CH1

CH2

CH2
キャプチャ比較

…

…

CHn

CHn

アプリケーション側の利点• 多彩な動作モードにより、CPUの負担を軽減し、インタフェース回路を最小限に抑える• すべてのタイマ･インスタンスに対する単一アーキテク
チャにより、スケーラビリティと使いやすさを実現• モータ制御とデジタル電力変換のアプリケーションにも完全対応
2

STM32には、ソフトウェアタスクやハードウェアタスク向けのタイミング
リソースを提供する複数のタイマが搭載されています。
ソフトウェアのタスクは主に、タイムベースの提供、タイムアウトイベン
トの生成、タイムトリガで構成されています。
ハードウェアのタスクはI/Oに関連しています。タイマは出力で波形を生成し、入力される信号パラメータを測定し、入力で外部イベントに反応することができます。
STM32タイマは非常に汎用性が高く、複数の動作モードを提供することで、必要なインタフェース回路を最小限に抑え、反復的でタイムクリ
ティカルなタスクからCPUを解放します。
すべてのSTM32タイマは、スケーラブルな同じアーキテクチャに基づいています。
タイマの動作原理を一度理解すれば、それはどのタイマにも有効です。
このアーキテクチャには相互接続機能が含まれており、複数のタイマを組み合わせてより大きな構成にすることができます。
最後に、一部のタイマには、電気モータ制御と、照明やデジタルスイッ
チングモード電源などのデジタル電力変換のための専用機能が搭載されています。
2

主な機能• すべてのタイマは、同じアーキテクチャに基づき、以下の要素に関してスケーラブル:• 入出力数（1～10）• タイマ1の場合は10：TIM1_ETR、TIM1_BK、TIM1_BK2、TIM1_CH1、TIM1_CH1N、TIM1_CH2、TIM1_CH2N、TIM1_CH3、TIM1_CH3N、TIM1_CH4• 機能（PWMモード、DMA、同期、アップ／ダウンカウント）• 複数のタイマのリンクと同期が可能• 各タイマチャネルは入力または出力として個別に設定可能• 監視とトリガの目的で、他のペリフェラルとの複数の相互接続が可能

3

STM32タイマの主な機能です。すべてのタイマは同じアーキテク
チャに基づいており、このプレゼンテーションで後述するいくつかの派生物で使用可能です。Tim14などの2本のI/Oを備えた最小限のタイマから、Tim1やTim3などの10本のI/Oを備えた高機能制御
バージョンまで、タイマの主な違いは入力と出力の数です。
このプレゼンテーションの最後にある2つのスライドには、
STM32C0の各タイマでサポートされている機能がリストされています。
一部の機能は、最小の派生タイマには存在しないことがあります（DMA、同期、アップ／ダウンカウントモードなど）。
ほとんどのタイマは、リンクと同期を行って、より大きなタイムベー
スタイマを構築したり、同期波形の個数を増やしたり、複雑なタイミ
ングと波形を処理したりすることができます。
タイマの内部では、どのチャネルもすべて入力（通常はキャプチャ用）または出力（通常はPWM用）として、個別に設定可能です。
相互接続マトリックスにより、タイマは、たとえばADC変換の開始や内部クロックの監視など、他のペリフェラルのトリガとしての役目を果たすことができます。
3

ブロック図（TIM1）
入力段と信号調整
クロックと同期ユニット
内部クロック（CK_INT）

RCC
TIM1_ETR

相互接続マトリクス

ETR
ITR0
ITR1
ITR2
ITR3

極性選択、エッジ検出、
プリスケーラ

入力フィルタ

ETRF

トリガ
コントローラ

TRGO

相互接続
マトリクス

TIF
TRGI

ITR
TI1F_EDTRC

TI1FP1TI2FP2

チャネル

スレーブ
コントローラモード

エンコーダ
インタフェース

CK_PSC
リセット
イネーブル
アップ/ダウンカウント

タイマカーネル

4

クロックおよび同期ユニットは、CK_PSCと呼ばれる基準クロックをタイ
マカーネルに提供します。
カウンタクロックは、次のクロックソースが提供します。
• 内部クロック（CK_INT）• 外部クロックモード1：外部入力ピン、選択した入力または内部トリガの各立ち上がりエッジまたは立ち下がりエッジをカウントします。
• 外部クロックモード2：外部トリガ入力ETRまたはトリガ• チャネルからのTI1FP1およびTI2FP2に基づくエンコーダモード
ETRは、ADCアナログウォッチドッグ、コンパレータ、またはTIM1_ETR
入力ピンによってアサート可能なトリガです。
ITRは、別のタイマによってアサートできるトリガです。
内部トリガの入力と出力は相互接続マトリックスに接続されています。
関連するプレゼンテーションを参照してください。
選択したトリガ入力（TRGI）の立ち上がりエッジによりTIFフラグが設定されます。
1つのタイマがマスタモードで設定されている場合、そのタイマはスレー
ブモードで設定されている別のタイマのカウンタをリセット、開始、停止、またはクロックすることができます。

4

ブロック図（TIM1）
チャネル
クロックと同期ユニット

TI1F_ED TI1FP1 TI2FP2

ETRF
CC1I

XOR
TI1

TIM1_
CH1

入力フィル
タとエッジ
検出回路

タイマカーネル

カウンタ

U

CCI1

DTGレジスタ

TI1FP1TI2FP1

IC1

プリスケーラ

IC1PS

キャプチャ比較1レジスタ

OC1REF

出力
回路

DTG

TRC
CC2I

TIM1_
CH2

TI2

入力フィル
タとエッジ
検出回路

U

IC2

プリスケーラIC2PS

キャプチャ比較2レジスタ

OC2REF

出力
回路

DTG

TRC
CC3I
TIM1_
CH3

TI3

入力フィル
タとエッジ
検出回路

U

IC3

プリスケーラIC3PS

キャプチャ比較3レジスタ

OC3REF

出力
回路

DTG

TRC
CC4I
TIM1_
CH4

TI4

入力フィル
タとエッジ
検出回路

TIM1_CH1N

OC2

TIM1_CH2

OC2N

TIM1_CH2N

OC3

TIM1_CH3

OC3N

TIM1_CH3N

TIM1_CH4

CC3I

TI3FP3
TI4FP3

TIM1_CH1

OC1N

CC2I

TI1FP2TI2FP2

OC1

U

CC4I

TI3FP4
TI4FP4

IC4

プリスケーラ

IC4PS

キャプチャ比較4レジスタ

OC4REF

出力回路

OC4

キャプチャ比較5レジスタ

OC5REF

出力回路

OC5

キャプチャ比較6レジスタ

OC6REF

出力
回路

OC6

TRC

チャネル

BRK_req

BRK2_req

ブレーク回路5

タイマ1は6つの独立したチャネルをサポートします。:• インプットキャプチャ（チャネル5、6を除く）• 出力コンペア• PWM生成（エッジおよびセンター揃えモード）• ワンパルスモード出力
キャプチャまたは比較イベントが発生すると、対応するCCIフラグが設定されます。
左側には入力段と入力調整回路が示されており、右側には出力段があります。
TIM1チャネル1～4のピンが両側に表示され、入力と出力の両方が可能であることを示していることに注意してください。
チャネル1～4はピンに出力できますが、チャネル5と6はマイクロコントロー
ラ内でのみ使用できます（たとえば、複合波形生成またはADCトリガ用）。
タイマ1は、ブレークイベントが発生するたびにチャネル出力を事前定義された状態に自動的に設定するために使用できるブレーク入力をサポートしています。
タイマ1は、チャネル1～4のPWM相補出力にデッドタイムを挿入するデッド
タイムジェネレータユニット（DTG）もサポートしています。

5

ブロック図（TIM1）
ブレーク回路チャネル

ブレーク回路BRK_req
SBIF

BRK2_req

BIF

B2IF

内部ソース

TIM1_BKIN

ブレーク回路TIM1_BKIN2

6ブレーク機能の目的は、PWM信号で駆動されるパワースイッ
チを保護するためです。
2つのブレーク入力は、通常、パワーステージや3相インバータの故障出力に接続されています。
起動すると、ブレーク回路はPWM出力をシャットダウンし、あらかじめ定義された安全な状態に強制的に移行させます。
また、マイクロコントローラの内部イベントの中から、出力シャットダウンのトリガを選択することも可能です。
タイマ1に関して、ブレークは2つのチャンネルを備えています。
システムレベルの障害（クロック障害、パリティエラーなど）とア
プリケーションの障害（入力ピンと内蔵コンパレータから）の両方を収集するブレークチャンネルは、デッドタイム期間後に出力を事前に定義されたレベル（アクティブまたは非アクティブのいずれか）に強制することができます。
ブレーク2チャネルは、アプリケーション障害のみを含み、出力を非アクティブ状態にすることができます。

6タイマクロック供給スキーム

7

複数の内部または外部クロック供給オプション• CK_INT内部クロックは，APBクロックPCLKを2逓倍したものである可能性がある• 外部クロック供給ソース:• 他のオンチップタイマ（ITRx入力）• 入力ピン1および2（TI1、TI2）•

デジタルフィルタとプログラム可能なエッジ感度を含む• 多目的外部トリガ入力（ETR）•

デジタルフィルタ、プログラム可能なエッジ感度、基本プリス
ケーラ（/2、/4、/8）を含む• エンコーダからの直交信号• エッジ検出回路（TI1F_ED）

RCC

CK_INTエッジ／レベル感度
フィルタとプリスケーラ
相互
接続
マトリクス

ITR0

クロックおよびトリガコント
ローラ

TRGO

ITR3

TI1F_ED
フィルタ付きタイマ
TI1FP1
入力
1および2 TI2FP2

エンコーダ
インタ
フェース

メインクロック（CK_PSC）

7

タイマ1、タイマ3は、複数のクロック供給オプションがあります。
タイマチェーンも担当するクロック・同期ユニットは、カウンタのクロックを処理します。
デフォルトクロックは、リセットおよびクロックコントローラから供給されます（RCC）。
このタイマクロックCK_INTは、APBクロックが2逓倍される可能性があります。
外部タイマによるクロック供給により、外部イベントのカウントや、カウント周期を外部から調整することが可能となります。
クロックソースは、4本の内部トリガ入力（ITR0～ITR3）の1本を使って、他のオン
チップタイマから供給することもできます。
入力ピン1および2は、外部クロックとしても機能し、オプションでスプリアスイベントを除去するためのデジタルフィルタを使用することができます。
外部トリガ入力（ETR）は、デジタルフィルタ、プログラム可能なエッジ感度、および必要に応じて受信信号の周波数を低減するための第1の基本的なプリスケーラス
テージを備えた外部クロックとして設定することができます。
TI1F_EDエッジ検出器入力は、タイマクロックとしても使用できます。TI1F信号の立ち上がりと立ち下がりの両方のエッジでパルスが生成されます。本来の目的ではありませんが、外部クロック（受信クロック周期ごとに2回カウント）で周波数2逓倍器として使用できます。
最後に、このプレゼンテーションで後述するように、エンコーダからの直交信号は、クロックとカウント方向を提供するように処理することが可能です。

7カウント周期管理
微細かつ正確な周期設定• 各タイマには、16bitリニアプリスケーラ（1、2、3…65536）が組み込まれている• 自動再ロードレジスタでカウント周期を定義

CK_PSC

自動再ロードレジスタ

16ビットプリスケーラ• オーバーフロー／アンダーフローで更新イベント（割込みまたはDMA）を発行• プリロードレジスタからアクティブ･レジスタへの内容（プリスケーラ、周期、比較）の転送をトリガ•

正確な周期変更（プリスケーラはオーバーフローでのみ更新）•

比較レジスタ更新時のグリッチレス動作• 一部のタイマでは、更新割込みの発行レートを繰り返しカウンタで調整可能（TIM1、TIM16-17）• その他のタイマでは、カウンタが再ロードされるたびに更新イベントが発生

CK_CNT

CNTカウンタ（+）

繰り返しカウンタ（TIM1、TIM16-17）
更新
イベント

プリスケーラレジスタ

プリスケーラレジスタ

自動再ロードレジスタ

自動再ロードレジスタ

キャプチャ／比較
レジスタ1

キャプチャ／比較
レジスタn

プリロードレジスタ

シャドウレジスタ

8

このスライドでは、タイマカウント周期を調整方法を説明します。
各タイマにはリニアクロックプリスケーラが組み込まれており、1〜65536の任意の整数クロックをで分周します。
これにより、カウントペースを精密に調整することができます。
例えば、APBクロックが48MHzの場合、48で除算すると、1MHzのカウントレートが正確に得られます。自動再ロードレジスタは、カウント周期が定義されます。
ダウンカウントモードでは，カウンタがアンダーフローすると、自動的に周期値が再ロードされます。
アップカウントモードでは，カウンタが自動再ロード値を超えると、ロールオーバーしてリセットされます。
センターアライメントモード（アップダウンカウント）では、カウンタは0から自動再ロード値はマイナ
ス1までカウントし、カウンタオーバーフローイベントを発生させ、次に自動再ロード値から1までカウントしてカウンタアンダーフローイベントを発生させます。
その後、0からカウントを再開します。カウンタがアンダーフローまたはオーバーフローし、新しい周期が開始されると、更新イベントが発行されます。
これにより、タイマの周期に同期した割り込みやDMAリクエストのトリガとなり、リアルタイム制御に有効なタイマのパラメータを調整することができます。
この更新イベントによって、複数のパラメータと、特にクロックプリスケーラ、自動再ロード値、比較
レジスタおよびPWMモードのプリロードからシャドウレジスタへの転送をトリガされます。
16ビットのプログラム可能な繰り返しカウンタによって、割込み発行レートをカウント周期から切り離して、たとえば、1回目、2回目、3回目、そして最高で65536回目のPWM周期ごとに1回の割込
みを得ることができます。
これは、高いPWM周波数を扱う際に特に役立ちます。
STM32C0マイクロコントローラに関しては、繰り返しカウンタはタイマ1、タイマ16および17にのみ実装されています。

8カウントモード
インクリメンタル／直交エンコーダとモータ駆動アプリケーションをサポート• アップ／ダウンカウント･モードをサポート

センターアラインモード
タイマクロック• TIM1およびTIM3

アップデー
トイベント

自動再ロード• センターアラインPWMの生成

比較• オーバーフローとアンダーフローで方向が変化• 電気モータの音響ノイズを低減

OCx• 直交エンコーダの組み込みサポート

直行エンコーダ• ロータリーエンコーダ／デジタルポテンショメータ• 位置センサ• タイマの直接角度読出しが可能

前進

ジッタ

後進

ジッタ

前進

カウンタ

アップ

ダウン

アップ

9

STM32タイマの一部（高機能制御タイマ1および汎用タイマ3）は、
アップ／ダウンカウントモードに対応しています。
カウント方向はソフトウェアでプログラムするか、センターアライン
PWMモードのタイマで自動管理することができます。このモードでは、カウンタのオーバーフローとアンダーフローでカウント方向が自動的に変化します。特定のPWMスイッチング周波数に対して、このモードを使用すると、有効電流リップル周波数を2倍にすることで音響ノイズが低減されるので、電力ステージのスイッチング損失とノイズの最適なトレードオフが得られます。
カウント方向は、タイマがエンコーダモードにあるときにも自動的に処理可能です。直交エンコーダは、通常、電気モータ内の高精度なロータ位置センシングや、デジタルポテンショメータのために使用されます。直交エンコーダセンサ（インクリメンタルエンコーダとも呼ばれる）の2つの出力から、タイマは、各アクティブエッジのクロックを抽出し、2つの受信信号間の相対的な位相シフトに応じてカウン
ト方向を調整します。タイマカウンタは、このようにモータまたはポ
テンショメータの角度位置を直接保持します。

9内部タイミングリソースとしてのタイマ
ソフトウェアとハードウェアのタイムベース用• タイマは単純なタイムベースとして使用できる• ソフトウェア管理用• 他のペリフェラルに周期的トリガを与えるため

TIM14
クロック

16ビットプリスケーラ• ADCその他のタイマ• （カウンタオーバーフロー時の）更新イベントは割込みのトリガに使用できる• 汎用タイマ使用時のその他の手段

自動再ロード16ビットカウンタ• 比較イベントを使用• 1周期当たり複数のイベントの生成が可能• タイマのトリガ出力を使用
10

タイマの最も簡単なユースケースは、内部タイムベースの提供です。
これは、一般的に、周期的割込みの提供やシングルショットタ
イムアウト保護のために、ソフトウェアルーチンによって使用されます。タイマは、相互接続マトリックスを介して、ADCその他のタイマなど、他のオンチップペリフェラルに周期的なトリガを与えることもできます。
タイマからの更新イベント（通常はカウンタオーバーフロー時）
は、ソフトウェアタイムベース割込みを発生させたり、周期的イベントをトリガしたりするための通常の手段です。
他のタイマ、比較イベント、または他のタイマのトリガ出力を使用して、内部タイミングを生成することも可能です。
複数の比較チャンネルを使用して、1つのタイマで複数のタイミ
ングイベントを発生させることができます。

10

入力キャプチャ
CPUオーバーヘッド低減のための信号の事前調整を含む• 各チャネルは入力キャプチャとして個別に設定可能であり、次のような機能を備えている：• 入力の再配置（1つの入力を2つのキャプチャチャネルに配置できる）• プログラム可能なエッジ感度（立ち上がり／立ち下がり／両方）• イベントプリスケーラ（1/2/4/8イベントごとに1キャプチャ）• デジタルフィルタ（デバウンスおよびノイズ除去用）• キャプチャイベントによって、カウンタ値がキャプチャレ
ジスタに転送され、割込みまたはDMAリクエストがトリガされる• キャプチャレジスタが読み出されずに上書きされると、オーバー
キャプチャフラグがセットされる

TI1

入力フィル
タとエッジ検出回路

TI1FP1TI2FP1
TRC

TI2

入力フィル
タとエッジ検出回路

TI1FP2TI2FP2
TRC

IC1

プリス
ケーラ

IC2

プリス
ケーラ

デジタルフィルタ

入力
内部
カウンタ
フィルタリング
された信号

入力
内部
カウンタ
フィルタリング
された信号

11

このスライドでは、入力キャプチャ機能について説明します。
チャンネル1～4は、入力キャプチャとして個別に設定可能であり、いくつかの信号調
整オプションを備えています。
1つの入力を2つのキャプチャチャネルに配置できます（通常は立ち下がりエッジ
キャプチャと立ち上がりエッジキャプチャを区別するため）。右上の図をご覧ください。
TRC入力はキャプチャトリガとして選択することができ、ITR入力の1つに接続されています（タイマとタイマの相互接続）。
エッジ感度はプログラム可能であり、立ち上がりエッジ、立ち下がりエッジ、両エッジのいずれかとなります。
イベントプリスケーラによって、2、4、8イベントごとに1イベントのキャプチャが可能です。これにより、高周波信号を処理する際のCPU負荷が軽減され、複数の入力信号周期にわたって測定が行われるため、測定精度が向上します。
ノイズやバウンスによるスプリアス遷移イベントは、プログラム可能なデジタルフィル
タを使用して除去できます。この図は、フィルタ許可が4に設定された場合の信号のフィルタ方法を示しています。
上側のケースでは、内部カウンタ値を見れば分かるように、立ち上がりエッジから4
サンプリング周期後に、きれいな立ち上がりエッジキャプチャがトリガされています。
下側のケースでは、グリッチのためにフィルタカウンタがリセットされ、ハイレベルの4サンプルが連続でカウントされた後に、キャプチャが発生しています。
キャプチャトリガが発行されると、タイマのカウンタがキャプチャレジスタに転送され、割込みまたはDMAリクエストを発行できます。前回のキャプチャが読み出される前に新しいキャプチャが発生すると、キャプチャレジスタが上書きされ、必要に応じてソフトウェアがこの状態を管理するために、オーバーキャプチャフラグがセットされます。

11

高度なキャプチャオプション
ソフトウェアオーバーヘッドのない直接測定• クリア・オン・キャプチャモード• このモードでは、キャプチャがトリガされると直ちにカウンタをリセットできる

タイマクロック

PWM

カウンタ• PWM入力モード• タイマは、2つのキャプチャレジスタ内の信号の周期とパルス幅を直接キャプチャする• XOR機能付きクリア・オン・キャプチャモード

IC1-デューティサ
イクル
IC2–周期

x

6
10

10

• 最大3つの入力の任意のエッジ間のインターバルを
キャプチャ可能• 通常、電気モータのホールセンサに使用される
12

このスライドでは、より高度なキャプチャ関連の機能について説明します。
クリア・オン・キャプチャモードでは、キャプチャがトリガされた直後にカウンタがリセットされます。従来のフリーランニングカウンタでは、トリガに続く周期を得るために追加の計算が必要でしたが、これにより周期を直接測定することができます。
PWM入力モードでは、タイマは入力されたPWM信号の周期とデューティサ
イクルの両方をキャプチャすることができます。
入力信号は、内部で2つのキャプチャチャネルにルーティングされます。信号の立ち上がりエッジは入力キャプチャ2でキャプチャされ、クリア・オン・
キャプチャモードで周期値を提供します。
立ち下がりエッジはキャプチャ1チャネルでキャプチャされ、パルス長の持続時間を提供します。この場合、デューティサイクルは単純に、入力キャプチャ
1と入力キャプチャ2の間の比率に相当します。
最後に、タイマには3つの入力チャネルをXORロジックで結合するXOR機能が含まれています。
これは通常、電気モータのホールセンサから得られる3つの120°位相シフ
ト信号を処理するために使用されます。これにより、3つの信号のすべてのエッジで「クリアオンキャプチャ」が発生し、速度調整に直接使用できるキャ
プチャ値を得ることができます。
12

出力比較
単純な出力波形の場合、または周期の経過を表示する場合• カウンタが比較レジスタ値に一致する場合• 対応する出力ピンを次のようにプログラムできる• セット、リセット、トグル、変更しない• 割込みステータスレジスタにフラグがセットされる• 対応するイネーブルビットがセットされている場合、割込みまたはDMAリクエストを生成する可能性がある

タイマクロック
割込み

割込み

OC1
新しいCCR1

CCR1• 比較レジスタは、プリロードレジスタの有無に関係なくプログラ
ムできる• プログラムされた出力モード（セット、リセット、トグル）もプリロードできる• あるモードから別のモードへのグリッチのない移行が可能（通常はPWMから連続的にオンまたはオフ状態に移行）
13

このスライドでは、出力比較機能について説明します。
カウンタが比較レジスタの値と一致した場合に、比較イベントが生成されます。このイベントは、割込みまたはDMAリクエストをトリガでき、出力セット、出力リセット、または出力トグルによって対応する出力ピンに反映できます。
比較レジスタはプリロードできます。カウント周期の間に複数の比較値を書き込む必要がある場合には、プリロードを無効にする必要があります。タイミング図では、プリロードは無効になっています。
逆に、リアルタイム制約のあるアプリケーションでは、プリロード
モードの使用を優先する必要があります。これにより、ソフトウェア
が比較レジスタを次の値に更新するのにより大きな時間マージンが得られるからです。プリロードからアクティブ値への転送は、カウ
ンタがオーバーフローまたはアンダーフローしたときに更新イベント
によってトリガされます。
また、出力比較モードをプリロードすることで、たとえば、PWMモードから強制オン／オフ状態へグリッチレスで移行することが可能です。

13

ワンパルス･モード
外部同期波形生成用
入力

出力• トリガに応じてカウンタを開始しパルスを生成できる

TIM_ARR• 長さはプログラム可能

TIM_CCR1• プログラム可能な遅延の後• ソフトウェアでプログラム可能な2つの波形

ttDelaytPulse• 単一パルス• 繰り返しパルス• 再トリガ可能オプション

カウンタ• 新規トリガの場合はパルス幅が拡大
出力14ワンパルスモードは、外部イベントに応じてプログラム可能な長さのパルスを生成するために使用されます。
パルスは、入力トリガが検出されるとすぐに、またはプログラム可能な遅延の後に開始できます。比較1レジスタ（CCR1）の値によってパルス開始時間が定義され、自動再ロードレジスタ（ARR）の値
によってパルスの終了が定義されます。したがって、有効パルス幅
は、ARRとCCR1のレジスタ値の差として定義されます。上のタイミ
ング図を参照してください。
トリガによって単一のパルスが生成されるように、または単一のトリガによって連続的なパルス列が開始されるように、波形をプログラ
ムできます。
ワンパルスモードには、再トリガ可能なオプションも用意されています。このスライドの一番下のタイミング図では、このオプションを強調しています。
パルスが終了する前に新しいトリガが到着すると、カウンタがリセッ
トされ、それに応じてパルス幅が拡張されます。
STM32C0マイクロコントローラでは、タイマ1、3のみが再トリガ可
能なワンパルスモードをサポートしていることに注意してください。
14

各種のPWMモード
複数のアプリケーションに対応する各種のPWMモード• 基本PWM、エッジアラインまたは
センターアライン

エッジアラインPWM

センターアラインPWM

非対称PWM

位相シフトPWM（非対称モード）• 非対称センターアラインPWM

15

このスライドでは、PWMモードについて説明します。
標準エッジアラインPWMモードは、周期を定義する自動再ロードレジスタとデューティサ
イクルを定義する比較レジスタを用いてプログラムされ、カウンタはアップのみまたはダウンのみのカウントモードになっています。1つのタイマで、個別のデューティサイクルと同一の周波数を持つ最大6つのPWM信号を生成できます。
同じタイマによって複数のPWM波形が生成される場合、すべての立ち下がりエッジが同時に発生します。そのため、エッジアラインと呼ばれます。
逆に、センターアラインのPWMの立ち上がりエッジと立ち下がりエッジは、カウンタのロールオーバーと同期していないため、スイッチング時間はデューティサイクル値によって異なります。これは、カウンタをアップダウンモードでプログラミングすることによって実現されます。このモードは、同じタイマによって複数のPWMが生成されるときにスイッチ
ングノイズを拡散するからです。
これは、電気モータ駆動用の3相PWM生成にとって重要な機能です。なぜならこれによって、特定のスイッチング周波数に対して電流リップルの周波数を2倍できるからです。
たとえば、10KHzのPWMによって、不可聴の20KHzの電流リップルが生成されます。これにより、PWM周波数によるスイッチング損失を最小限に抑えつつ、PWM動作の静音性が確保されます。
センターアラインモードの変形として、非対称PWMモードあります。このモードでは、2つの比較レジスタによってPWM信号のターンオンとターンオフが定義されます。これにより、
ターンオン時間とターンオフ時間が個別に定義されるため、パルス幅設定の分解能が向上します。また、フルブリッジ位相シフトトポロジに基づくDC/DCコンバータの駆動に必要となる位相シフトPWM信号の生成も可能です。
右下のタイミング図では、タイマは、同一の周波数、50%のデューティサイクル、および0から180°まで変化する位相シフトを持つ2つのPWM信号を提供します。

15

その他のPWMモード
PWM機能を拡張し、外部グルーロジックを回避• 組合せPWMモード• 2つのチャネルをORまたはAND関数で結合し、より複雑な波形を実現• 組合せ3相モード• 4番目のPWMをレギュラの3相PWMと組み合わせて、ゼロベクタの挿入を可能にする

組み合わせPWM
Ch1=OC1またはOC2

組み合わせPWM
Ch1=OC1およびOC2

組み合わせ3相PWM
16

このスライドでは、組み合わせPWMモードについて説明します。
このモードでは、隣接するチャネル（出力比較1と2または出力比較3と4）によって2つのPWM信号の論理結合を生成することができます。
PWMの論理和または論理積を取って複雑な波形を作成できます。
複合3相PWMモードでは、1～3個のセンターアライメントPWM
信号を生成し、パルスの真ん中に1個のプログラマブル信号をAND接続することができます。
このモードは、特に3相モータ制御のアプリケーションを対象としています。
この場合、タイマのチャネル5を3つのチャネル（1、2、3）のいずれかと組み合わせて、センターパターンのPWM信号の途中にロー状態を挿入することができます。このモードでは、通常ゼロベクタ挿入と呼ばれる手法を使用することで、3相モータ制
御用の低コストの電流検出手法の実装が大幅に簡素化されます。
16高度なPWMモード
外部制御を必要とするPWM信号用• 可変周波数PWM• 外部信号により駆動• サイクルごとに制御されたデューティサイクル

リセット
出力
可変周波数
固定オン時間PWM• 電流ループでは、コンパレータまたは外部ピンにより
駆動

閾値
電流
コンパレータ
出力

サイクルごとに制御されたPWM

17

このスライドでは、周波数またはデューティサイクルを外部信号で駆動することができる、より具体的なPWMモードについて説明します。
タイマは、ETR、あるいはチャネル1または2の入力に接続された外部リセット
信号を使用して、可変周波数信号を提供できます。このモードの目的は、固定されたオンまたはオフ時間と、ハードウェアによって制御される連続的に調整された周波数を持つ信号を提供することです。タイマは、比較レジスタを使用してオン（またはオフ）時間の制御を行います。一方、自動再ロードレジスタ
は、外部リセットがない場合でもPWMが停止しないことを保証し、これによって境界条件での安全な制御が実現されます。この手法は、主電源アプリケー
ション用の遷移モードPFC（や電流制御のデジタルLED照明など、さまざまな用途に使用されます。
タイマのもう1つのモードは、オンチップコンパレータまたはオフチップ信号のいずれかを使用して、ハードウェアによってデューティサイクルを制御する
モードです。PWMは固定周波数で動作し、最大デューティサイクルは、比較
レジスタとサイクルごとに制御される実際の値によって設定されます。これは電流制御のPWMを必要とするアプリケーションに使用され、通常はDCモー
タやソレノイドの駆動に使用されます。この場合、コンパレータは負荷へのピーク電流値を監視します。電流がプログラムされた閾値を超えるとすぐに、
コンパレータはPWM出力をリセットし、次のPWM周期に自動的に再起動され、制御されたピーク電流値を提供します。

17

タイマのカスケード1/2
スケーラブルな設計で高い柔軟性を実現• トリガコントローラは、マスタ／スレーブ設定
で複数のタイマをカスケードできる

RCC

CK_INT

クロックおよびトリガコントローラ• スレーブ：トリガコントローラはTRGIで入力を収集• 外部トリガピン（ETR）から• ITRxの他のオンチップリソースから• 通常は他のタイマからのTRGO出力

ETR• マスタ：内部タイマ信号をTRGOに送信• 接続は相互接続マトリックスで行われる• カスケード設定では特定のタイマがスレーブ
モードとマスタモードで同時に 動作可能

エッジ／レベル感度
フィルタとプリスケーラ
相互接続
マトリクス

ITR0
ITR3

TRGO

相互接続
マトリクス

TRGI

TI1F_ED
フィルタ付きタイマ
TI1FP1
入力
TI2FP2
1、 2

エンコーダ
インタフェース
メインクロック（CK_PSC）

18

このスライドでは、タイマの同期機能について説明します。
トリガコントローラは、マスタ／スレーブ設定で複数のタイマをカスケードすることができます。タイマは、マスタタイマとして1つ以上のタイマを制御したり、スレーブとして他のタイマによって制御されたりすることができます。クロックおよびトリガコントローラは、タイマ間のリンクとして機能します。マスタモードでは、複数の内部制御信号を、そのタイマの外部のオンチップTRGOトリガ出力にリダイレクトできます。スレーブモードでは、
外部トリガピン（ETR）または他のTRGO出力に接続されている4つの内部トリガ入力（ITR1～ITR4）の1つから来るTRGI（メイントリガ入力）で複数の入力を収集します。さらに、入力キャプチャ1と2のピンは、内部トリガとして使用することもできます（通常はカウンタをリセットするため）。
スレーブモードとマスタモードは、個別にプログラムすることができます。
そのため、カスケード設定では特定のタイマがスレーブモードとマスタ
モードで同時に動作することができ、入力トリガを受けながら出力トリガを提供することができます。
マスタ同期とスレーブ同期は、タイマユニット内で個別にインスタンス化されます。すべてのSTM32C0タイマの機能をまとめた、このプレゼン
テーションの最後の表を参照してください。

18

タイマのカスケード2/2
タイマ間で複数の信号を共有可能• マスタモード：タイマは内部信号をTRGO出力に伝播• カウンタリセット、カウンタイネーブル、更新イベント、またはOC1比較一致• OC1～OC6で生成された波形のいずれか• スレーブモード：タイマはTRGI入力で制御される• トリガモード：カウンタの開始が制御される• リセットモード：TRGIの立ち上がりエッジでカウンタが再初期化される• リセットモードとトリガモードの組み合わせ（再トリガ可能なワンパルスモード用）• ゲートモード：カウンタの開始と停止の両方が制御される

Clock
あたしい
CCR1

CCR1
マスタCNT
マスタCC1

スレーブCNT

ゲートモード• ゲートモードとリセットモードの組み合わせ• クロックに関連するその他のモード：• 3つのエンコーダモード• 外部クロック
19

このスライドでは、さまざまな動作モードとタイマ間でやり取りされる信号を示しています。
マスタモードでは、TRGO出力に送信されるトリガを選択するために16のオプションが与えられています。出力は、カウンタリセット時に発行される単一の同期パルス、カウンタ開始に対応するカウンタイネーブル、更新イベント、または比較1一致イベン
トのいずれかとなります。あるいは、TRGO出力は、PWM信号を含む生成された6つの波形のいずれかを他のタイマモジュールに送信することができます（チャネル1～6で比較し、すべてのチャネルのパルスを比較します）。
スレーブモードでは、タイマの動作モードはTRGI入力によって制御されます。トリガ
モードでは、カウンタの開始が外部から制御されます。このモードは、複数のタイマを同時に開始する場合に使用します。
リセットモードでは、カウンタは、通常、可変周波数PWM動作のために、TRGI入力の立ち上がりエッジによってリセットされますリセットとトリガを含む組み合わせモー
ドは、再トリガ可能なワンパルスモードの生成に使用できます。
タイミング図に示すゲートモードでは、入力信号のレベルがハイのときにのみカウン
タがアクティブになります。
リセットとゲートを組み合わせたモードは，PWM信号の範囲外（デューティサイクル
が最大期待値を超える）を検出するために使用することができます。外部クロック
モード2は、他のスレーブモード（外部クロックモード1、エンコーダモードを除く）に加えて使用することができます。この場合、ETR信号を外部クロック入力として使用し、トリガ入力として他の入力を選択することができます。
最後に、スレーブモードの選択には、直交エンコーダデコーディングモードや外部クロック供給モードなどのクロック関係のモードが含まれます。

19同期動作の例
複数のタイマを組み合わせて高い柔軟性を実現• タイマの同時開始• サイクル精度の高い同期

マスタ
タイマ1
トリガコント
ローラ

カウンタ
更新

TRGO

タイマ3

ITR1

プリ
スケーラ

ITR x

カウンタ

• カスケード32ビットカウンタ

スレーブ

相互接続
マトリクス

クロック

カウンタ

マスタ

プリスケーラカウンタ

トリガコント
ローラ
更新

TRG1

相互接続マトリクス

クロック

タイマ3

スレーブ

タイマ1
ITR1
プリスケーラ

ITR x
カウンタ

更新

20

このスライドでは、同期動作の例を2つ示します。
1つ目の例は、2つのタイマを同時に開始する方法を示しています。マスタ／スレーブリンクの遅延を補正するためにマスタタ
イマを少し遅らせて開始し、すべてのタイマをサイクル精度で同期させることができるメカニズムになっています。図のようにタイマ1と3のチャネルを組み合わせることで、最大8個のPWM
チャネルを同期させることができます。
2つ目の例は、2つの16ビットタイマをカスケード接続して32
ビットタイマを作成する方法を示しています。ここでは、カウンタのロールオーバー時に生成される更新イベントを後続のス
レーブタイマの入力クロックとして使用し、タイマ3のカウンタは最下位の16ビットを保持し、タイマ1のカウンタは上位のビット（ビット16～31）を保持するようにしました。

20

モータ制御機能STM32タイマはモータ駆動のあらゆる側面をカバー• PWMの生成• センターアラインモードと組み合わせ3相モード• デッドタイム挿入• 6ステップモード• 保護（デュアルブレーク緊急停止機構）• 速度と位置のセンシング• エンコーダ、ホールセンサ、およびタコメータ･ジェネレータ専用モード• ADCトリガ
21

このスライドは、タイマの4つの主な電気モータ制御機能をまとめたものです。
 タイマには、電源スイッチ制御専用のPWMモードが含まれています。上記のセンターアラインPWMと組み合わせ3相PWMに加えて、タイマは、相補PWM生成のためのデッドタイム挿入と、ブラシレス
DCモータ駆動用の6ステップモードを備えています。
 これには、障害発生時にハードウェアによってPWM出力を無効にするデュアルレベルの緊急停止メカニズムを備えた電力ステージ
保護回路が搭載されています。
 モータ制御システムで見られる最も一般的なセンサを扱うことができます直交エンコーダとホールセンサは粗密な位置フィードバックに使用されます。一方、タコメータジェネレータはコスト効率の良い
速度フィードバックに使用され、クリア・オン・キャプチャモードのみが必要です。
 最後に、タイマには同期ADCトリガオプションが含まれています。これは、電圧と電流のセンシングを適切に管理し、電力ステージのス
イッチングノイズによる取得の問題を回避するために必要です。
21

デッドタイム挿入
タイマあたり最大3つのハーフブリッジコンバータを直接駆動• ハードウェア・デッド・タイム・ユニットは、重複のない相補的なPWM信号を生成する• 機能安全のためにデッドタイムレジスタをロック（読出し専用）可能• ハーフブリッジコンバータとフルブリッジコンバータのクロスコンダクションを防止• DC/DCコンバータ、DCモータ、3相ブラシレスモータ

フルブリッジDCモータ駆動

デッドタイム22

このスライドでは、デッドタイム挿入機能について説明します
ハードウェアデッドタイムジェネレータは、基準PWM信号から2つの重複のない相補的なPWMを提供します。STM32タイマには、OC1、OC2、
OC3チャネル用の最大3つのデッドタイムジェネレータが組み込まれています。デッドタイムの持続時間は8ビット値でプログラムされます。実行時にこの重要な値が破損するのを防ぐために、ユーザはこの値をロッ
クできます。これを行うには、次のマイクロコントローラリセットまでデッド
タイムレジスタを読出し専用モードに切り替える1回のみ書込みロック
ビットをセットします。
デッドタイム挿入は、ハーフブリッジを駆動する場合に必要になります。
ハーフブリッジでは、2つの電源レールの間にトランジスタのペアが直列に接続されます。この場合、物理的なスイッチング特性を考慮して、一方のスイッチがオンになる前に少しの時間を挿入してもう一方のスイッ
チをオフにできるようにする必要があります。
ハーフブリッジは通常、ここに示すフルブリッジトポロジを使用するDCま
たはステッピングモータ駆動用のDC/DCコンバータ、または3つのPWM
ペアを備えた3相インバータに見られます。

22

6ステップ／ブロック転流
ブラシレスDC（BLDC）モータ駆動用のCPUの負荷軽減

ホール

排他的
論理和

ITR 0

タイマ3
プリス
ケーラ

トリガコン
トローラ

TRGO

相互接続
マトリクス

• 1つのタイマでホールセンサのフィードバックを処理し、同期PWM生成用の高度なタイマをトリガできる
マスタ
スレーブ
タイマ1
ITR 0

ITR x

カウンタ

更新

ITR x

プリス
ケーラ

カウンタ

転流イベント生成
CH1
CH1N

6ステップ
信号

CH2
CH2N
CH3
CH3N

プログラム可能な転流の遅延

同期PWM生成相電流23

このスライドでは、STM32タイマを使用して6ステップ駆動（ブロック転流とも呼ばれる）を管理する方法について説明します。
これは、2つのタイマをチェーンすることで構成されます。1つは3つのホールセン
サ信号を処理し、もう1つはロータの角度位置と同期したPWM生成を管理し、6つの連続するステップを生成します。
1つ目のタイマは、3つの入力によってトリガされるクリアオンキャプチャモードで動作します。
比較レジスタ（ここでは比較2）は、元の角度位置と転流時間の間にプログラム可能な遅延を追加する役割を果たします。
キャプチャレジスタ1は、連続するホールセンサエッジ間のタイミング間隔を保持し、速度調整ループに必要です。
比較2一致イベントは、TRGO出力を介してスレーブタイマに伝播されます。左のタイミング図にあるCCR2を参照してください。
これらのイベントは転流イベントとして機能し、PWM生成の変化をトリガします。
シーケンスの6つのステップのそれぞれについて、6つの出力の状態は、強制的にアクティブまたは非アクティブになるか、PWM信号を生成するように定義されます。
あるステップから別のステップへの遷移は、転流割込みルーチンでソフトウェアによってプリロードされ、次の転流が到着したときに出力動作モードを再プログラムするためにハードウェアによって自動的に転送されます。
右の図は、2つの連続した完全な6ステップシーケンスの6つのPWM信号と、モー
タ相の1つの電流を示しています。
23

ブレーク機能
クラス最高の保護スキーム• ブレークイベントがPWM出力を無効にする• ハードウェアにより（最小遅延時間）• 非同期（クロックレス動作、クロック関連の遅延なし）• プログラム可能な安全状態（ハイ／ローまたはハイインピーダンス）• 相補的な出力を持つタイマで使用可能• タイマ1および16/17• タイマ1に2つのブレークチャネルを実装• デュアルレベルの保護スキームが可能• すべての出力がOFF、または一部の出力が強制ONで一部の出力がOFF• デッドタイム挿入によりシュートスルーのリスクがないことを保証
24

このスライドでは、ブレーク機能について紹介します。
ブレークイベントが発生すると、PWM出力を自動的に無効にするハードウェア保護メカニズムがトリガされ、PWM出力が強制的にユーザが設定可能な状態（ハイレベ
ルまたはローレベルでのローインピーダンス、あるいはハイインピーダンス）になります。
論理回路は、クロックを使用せずに非同期的に動作します。
これにより、システムクロックに障害が発生した場合でも機能が保証され、保護を遅らせる傾向のあるクロック関連の伝播時間が回避されます。
この機能は、電力変換タスクを実行できる相補的なPWM出力を備えたすべてのタイマで使用できます（タイマ1および16/17）。
タイマ1には2つの個別のブレークチャネルがあり、タイマ16/17は独自のブレークチャネルをサポートしています。
2つのブレークチャネルをサポートすることで、デュアルレベルの保護スキームが実現されます。たとえば、すべてのスイッチがオフの優先度の低い保護を、ローサイド
スイッチがアクティブの優先度の高い保護で上書きすることができます。
さらに、フォールトモードに入る直前にデッドタイム遅延を挿入して、電力ステージを安全に無効にすることができます。これにより、潜在的なシュートスルー状態が防止されます。たとえば、ハイサイドPWMがオンのときに障害が発生するとします。一方、安全状態は、ハイサイドスイッチをオフにしてローサイドをオンにするようにプログラムされているとします。障害が発生すると、システムはまずハイサイドPWMを無効にしてから、ローサイドをスイッチをオンする前にデッドタイムを挿入します。

24

ブレーク機能
複数の緊急停止入力ソース（BRK入力）
Cortex®-M0+ロックアップ
LOCKUPロック
パリティロック
RAMパリティエラー&&

システムブレーク
割込みフラグ（SBIF）

システムブレークリクエスト

クロック・セキュリティ・システム（クロックの損失）

ソフトウェアブレークリクエスト（BG）
AF入力

BKINP
AFコント
ローラ

BKF[3:0]==0b000

BKIN入力
BKINE

&

フィ
ルタ

BKE

BKP

&

ブレーク割込み
フラグ（BIF）

アプリケーション
ブレークリクエスト

BKF[3:0]

双方向ブ
レークI/O

ブレーク
リクエスト

双方向モード制御ロ
ジック

MOE

ブレークリクエスト
システムブレークリクエスト

BKBID BKBDSRM

25

このスライドでは、ブレーク機能について説明します。
複数のブレークソースを組み合わせて、ブレークイベントをトリガできます。
システムブレークリクエストは、マイクロコントローラで重大なエラー（CPUロックアップ、RAMパリティエラー、クロックの損失）が検出された場合に発生します。
ロック信号は、SYSCFGペリフェラルにある1回のみ書込みイネーブルビットです。デフォルトでリセットされます（フォールトエラーはマスクされます）。一度設定（障害検出が有効化）されると、機能安全のためにマイクロコントロー
ラ全体がリセットされない限り、リセットできません。
アプリケーションブレークリクエストは、ボードの障害に起因します。
マイクロコントローラのピンアウトにあるオルタネート機能コントローラで、ブレーク入力を選択することもできます。
ブレーク検出ユニットに移行する前に外部ソースを調整することができます。
これにより、適切な極性を選択し、デジタルフィルタを使用してスプリアスグ
リッチを破棄できます。
通常、回復不可能なエラー状態を診断する際に、ソフトウェアでブレークをリクエストすることも可能です。
これらのブレークリクエストのいずれかが発生すると、PWM出力を安全な状態に設定するだけでなく、割込みまたはDMAリクエストがアサートされます。

25

ブレーク機能
複数の非常停止入力ソース（BRK2入力）

AF入力

ソフトウェアブレークリクエスト（BG）

BK2INPAFコント
ローラ

BK2F[3:0]==0b000

BKIN2入力
BK2INE

双方向ブ
レークI/O

&

フィ
ルタ

BK2P

アプリケーション
ブレークリクエスト&

ブレーク割込み
フラグ（B2IF）

BK2F[3:0]
BK2E

ブレークリクエスト
双方向モード制御ロ
ジック

MOE

BKBID

ブレークリクエスト
システムブレークリクエスト

BKBDSRM

26

このスライドでは、BRK2入力に関連するブレーク機能について説明します。
BRK入力とは異なり、BRK2イベントはCPUのロックアップ、
RAMのパリティエラー、クロックの喪失によって引き起こされることはありません。

26

ブレーク機能• ブレーク入力は双方向になり、外部障害イベントを受け入れたり、マイクロコントローラの外部の内部障害イベントを知らせたりするようになった• この機能により、次のことが可能になる• 外部のマイクロコントローラやゲートドライバが入力をシャットダウンするためのグローバルなブレーク
情報を、1本のピンで利用することができる• 複数の内部および外部ブレーク入力を統合する必要がある場合に、内部コンパレータと複数の外部
オープンドレインコンパレータ出力はまとめて論理和が取られ、ブレークイベントをトリガする• すべての内部フォールトソース（システム、コンパレータ）を、単一の信号に統合

27

STM32C0は、双方向のブレーク機能を実装しています。
ブレークIOパッドはボードレベルの障害を報告するために使用されますが、マイクロコントローラの内部の障害を知らせるための出力としても使用できます。
双方向モードは、ブレークとブレーク2入力の両方で使用でき、I/Oをアクティブロー極性でオープンドレインモードに設定する必要があります。
したがって、STM32C0内で検出されたグローバルブレーク情報は、他のCPUまたはゲートドライバに出力できます。
複数の内部および外部ブレークソースを統合する必要がある
場合、内部ブレークソースと複数の外部オープンドレインコン
パレータ出力はまとめて論理和が取られ、ユニークなブレーク
イベントをトリガします。

27

ブレーク機能
ブレーク解除のメカニズム• ブレーク入力は、ビットBKxBIDが1にセットされている場合、双方向モードに設定される• 安全なブレーク解除メカニズムは、システムが完全にロックされることを防ぐ• ブレーク入力でレベルがローになると、同じ入力でレベルをローに強制するブレークがトリガされる• ビットBKxDSRMが1にセットされると、ブレーク出力が解放され、障害信号をクリアしてシステムを再設定できる
MOE

BKxDIR

BKxDSRM（DiSaRMed）

0

0

X

設定（BKINは入力信号）

0

1

0

設定（BKINは双方向）

0

1

1

解除

1

X

X

設定

状態

28

このスライドでは、ブレーク回路を設定および解除する方法について説明します。
BKxBIDビットがセットされているときは双方向モードがアクティブになります。x
はBKまたはBK2ブレーク信号を意味します。
ブレークIOパッドは双方向性なので、ブレーク入力でレベルがローになると、同
じパッドでレベルをローに強制するブレークがトリガされます。そのため、ブレー
ク状態を解除するには、ブレーク解除のメカニズムが必要です。
メイン出力イネーブル（MOE）ビットは、チャネルが出力として設定されている場
合に関連します。このビットは、ブレーク入力の1つがアクティブになると、ハード
ウェアによって非同期にクリアされ、OCおよびOCN出力を無効にします。
ブレークイベント後に保護を再び設定するには、次のシーケンスを使用する必要があります。
• BKDSRM（BK2DSRM）ビットをセットして、出力制御を解放する必要があります。
• ソフトウェアは、システムブレーク条件（ある場合）がなくなるまで待ってから、SBIFステータスフラグをクリアする必要があります（または再設定の前にシステムでクリアします）。
• ソフトウェアは、BKDSRM（BK2DSRM）をハードウェアによってクリアされるまでポーリングする必要があります（アプリケーションブレーク条件がなくなるとき）。
この時点から、ブレーク回路は設定されアクティブになり、MOEビットをセットして、PWM出力を再び有効にできます。
28

ADCトリガ
ADCトリガの複数のオプション• ADCトリガは、タイマイベントによって生成可能

ソース
TIM1_TRGO2
TIM1_CC4
TIM3_TRGO• タイマ1のTRGO2出力はADC専用• 16個の使用可能なトリガソース• PWM周期ごとにデュアルADCトリガが可能• TRGOは同期目的のために空いたまま

OC6
OC4

カウンタ

OC4REF
OC6REF
TRGO2

29

このスライドでは、タイマに関連するADCトリガオプションについて説明します。
ADCは、表に示すように、タイマ1およびタイマ3の出力でトリガすることができます。
これは、比較イベントを使用して実行できます。ADC変換は、特定の比較一致で開始されます。これは、タイマ1のチャネル4に適用されます。
TRGOイベントも使用できます。これにより柔軟性が高くなります。なぜなら、TRGOは、レジスタ更新、カウンタリセット、トリガ入力などの比較
イベントまたはタイマ内部制御信号のいずれかになる可能性があるからです。一方で、これはTRGOが同期目的で使用されることを防ぎます。
このため、タイマ1には、ADCトリガ専用のTRGO2出力も追加されています。
TRGO2は、図に示すように、比較4と6のイベント、または比較5と6のイベントを組み合わせることにより、6つの比較イベントとPWM周期ごとにデュアルトリガを持つ可能性を含む16の可能性を提供します。
これにより、TRGOは複数のタイマ同期スキームのために空いたままに
なります。

29

ADC同期の例
ADC読出し中にPWM関連ノイズを回避• 3相モータ制御アプリケーションでは、カウンタ･オーバーフロー時のADCトリガにより、平均電流値を取得でき、ノイズの多いADC変換が回避される
Vdd
CH1
CH1N

CH2
CH2N

カウンタ
比較2
比較3

3相
モータ

CH3

M

ローサイドCH2N
ローサイドCH3N

相電流

相電流
平均電流

CH3N

シャント電圧

0V

ADC

ADC

ADC

ADC入力
（シャント電圧）カウンタのロール
オーバーによってトリガされたADC
サンプリング30

このスライドでは、PWM同期ADCトリガの例について説明します。
3相モータ制御では、電力ステージを制御するために生成されるPWMとADCの読出し値を同期させる必要があります。これにより、電流波形のリップルから平均値を抽出でき、電源スイッチに起因するリンギングから十分に離れた位置でADCの読出しが行われるようになります。
ここで左側に示されているのは、3相モータインバータです。6つのスイッ
チは、デッドタイムが挿入された3つの相補的なPWMペアによって制御され、モータ巻線の電流は、3つのハーフブリッジの下側に配置されたシャント抵抗を使用して測定されます。右側には、タイマのカウンタ、比較1と比較2の値、およびCH1NとCH2Nによって制御されるローサイド
スイッチに対応するPWM出力が示されています。下の2つの波形は、モータ相の電流と、シャント抵抗に対して得られたこの電流のイメージを表しています。この低コストのトポロジーでは、ローサイドスイッチがオンの場合にのみ電圧を測定できます。ADC入力に対して得られる信号が方形波状になるのはこのためです。この場合、ADCトリガはカウンタのロールオーバー時に生成されます。これにより、周期の途中で正確に読出しを行い、リップルの大きい信号の平均値を取得できます。さらに、PWM同期ADCトリガを使用することで、シャント電圧に存在するリンギ
ングノイズから離れた位置でADC変換が行われることが保証されます。

30

割込みとDMA
イベント

割込み

DMA

説明

更新

はい

はい

カウンタがオーバーフローまたはアンダーフローした場合、あるいは強制的なソフ
トウェアの更新リクエストが発生した場合に発行

キャプチャ／比較1
キャプチャ／比較2
キャプチャ／比較3
キャプチャ／比較4

はいはい

比較一致時またはキャプチャがトリガされた場合に発行• 各キャプチャ／比較チャネルには、独自の割込みとDMAイネーブルビットおよびフラグがある

キャプチャ／比較5
キャプチャ／比較6

はい

不可

比較一致時やキャプチャのトリガ時に発行

トリガ

はい

はい

トリガイベント時に発行（内部トリガ入力ITRx、TI1エッジ検出回路、フィルタリング
されたTI1/TI2または外部トリガ入力ピンから）

転流

はい

はい

ブレーク

はい

不可

タイマ1およびタイマ16、17のみ

31

このスライドには、割込みとDMAリクエストのソースが一覧表
示されています。
ほとんどのイベントは、割込みまたはDMAリクエストを生成でき、2つを同時に生成することも可能です。カウンタがオーバー
フローまたはアンダーフローすると、更新が発行されます。これは主に、PWM周期の開始時にタイマの実行時設定をリフレッ
シュし、次のレジスタ更新までの間隔を最大化するために使用されます。繰り返しカウンタを使用すると、いくつかのPWM周期をスキップして、高いPWM周波数での割込みまたはDMAリクエストの数を減らすことができます。
6つのキャプチャ／比較イベントにはそれぞれ独自の割込みがあります。
DMA転送をトリガできるのは、チャネル1～4のみです。
TRGI入力時のトリガイベントも（トリガソースに関係なく）、割込
みまたはDMAリクエストをトリガできます。
最後に、割込みとDMAリクエストのその他のソースとして、タイ
マ1、16、17の転流イベントとブレークイベントがあります。
31

動作中のタイマ再設定が可能• 1回のDMAイベントで複数のレジスタの更新が可能• DMAの効率的な使用（1回のバーストが必要）

PWM周期1

RAM

レジスタ

OC1t0

OC1

OC2t0

OC2

OC3t0

OC3

OC1t1
PWM周期2

OC2t1
OC3t1

仮想
レジスタ

OC1t2
OC2t2
OC3t2
…

32

タイマには、1回のDMAストリームで複数のレジスタを再プログラムするDMAバーストモードが含まれています。これにより、複数の実行時パラメータを同時に変更したり（たとえば、複数のチャネルのデューティサイクルや周波数）、設定レジスタに書き込むことでタイマ設定を動的に変更したりできます。
この例では、新しいPWM周期開始時に、3つの比較値を含む
テーブルを1回のDMAバーストで比較レジスタに転送する方法を示しています。
DMAは、タイマ内のユニークな場所（仮想レジスタ
TIMx_DMAR）を指して、"メモリからペリフェラル"モードでプログラムする必要があります。更新イベントが発生すると、タイマ
はプログラムされたバースト長に対応する回数のDMAリクエス
トを送信します。その後、各値は、仮想レジスタから対象となる
アクティブレジスタに自動的にリダイレクトされます。
次の更新イベントでは、3つの新しい比較値が再度転送されます。この例では、通常であればこのような更新スキームで必要となる2つのDMAストリームが、このメカニズムにより節約され
ています。
32

低消費電力モード
モード

説明

RUN

アクティブ

SLEEP

アクティブ
• ペリフェラル割込みによりデバイスがSLEEPモードを終了する

STOP

停止
• ペリフェラルレジスタの内容は保持される

STANDBY

パワーダウン• ペリフェラルは、STANBYモード終了後に再初期化する必要がある

SHUTDOWN

パワーダウン• ペリフェラルは、STANBYモード終了後に再初期化する必要がある

33

この表は、現在のマイクロコントローラの電力に応じた汎用タイマ（GPT）の状態を示しています。
RUNモードとSLEEPモードでは、汎用タイマはアクティブです。
SLEEPモードでは、GPT割込みをウェイクアップイベントとして使用することができます。
STOPでは、汎用タイマは停止します。ペリフェラルレジスタの内容は保持されます。これらのモードを終了する際には、GPTの再設定は必要ありません。
STANDBYモードとSHUTDOWNモードでは、汎用タイマはパ
ワーダウンしているため、これらのモードを終了する際に再初期化する必要があります。

33

デバッグ
電力変換アプリケーションの安全なデバッグが可能• タイマごとに、DBGMCUモジュールのDBG_TIMx_STOP設定ビットによって、マイクロコントローラがデバッグモードに移行（Cortex®-M0+コアが停止）したときのタイマの動作を設定することができる• DBG_TIMx_STOP=0• TIMxカウンタの動作を維持• DBG_TIMx_STOP=1• コアの停止時にカウンタのクロックを停止• 相補的な出力を持つタイマの場合、出力は無効になる

34

デバッグモードでのタイマの状態は、1つのタイマにつき1つの設定ビットで設定することができます。
 デバッグビットがリセットされている場合、ブレークポイントの間、タイマクロックが維持されます。
 デバッグビットがセットされている場合、コアが停止するとすぐにタイマのカウンタが停止します。さらに、相補的な出力を持つタイマの出力は無効になり、強制的に非アクティブ状態になります。この機能は、タイマが電源スイッチや電気モータを制御しているアプリケーションに非常に役立ちます。これにより、過電流によって電力ステージが損傷したり、ブレークポ
イント到達時にモータが制御不能の状態になるのを防ぎます。

34

役立つ式1/2• PWM周波数セットアップ• 自動再ロード（TIMx_ARRのARR）とクロックプリスケーラ（TIMx_PSCのPSC）で定義：
• 𝑓

=

(

)×(

)

• 実際には、PSC=0（プリスケーラなし）で始める必要がある：• 𝐴𝑅𝑅 =

×()− 1 → 𝐴𝑅𝑅 =−1• 16ビット（または32ビット）の範囲を超える値が得られる場合は、ARRが適合するまでPSCを増やす必要がある：• 𝐴𝑅𝑅 =⁄

− 1 → 𝐴𝑅𝑅 =⁄− 1 → 𝐴𝑅𝑅 =⁄−1 → ⋯

35

このスライドでは、タイマのPWM周波数の設定方法について説明します。
このパラメータは、TIMx_ARRレジスタでプログラムされた自動再ロード
値（ARR）と、TIMx_PSCレジスタでプログラムされたクロックプリスケー
ラを使用して定義されます。
PWM周波数は、タイマ動作周波数（fTIM）を、（ARR+1）×（クロックプリ
スケーラ+1）で割ることで求められます。
実際には、両方のレジスタの値を見つけるのは繰り返し処理となり、PSC=0（クロック分周なし）で始める必要があります。これにより、PWMの分解能が可能な限り細かいものになることが保証されます。
この場合、ARR値は単純にタイマクロック周波数とPWM周波数の比率から1を引いたものになります。
この式で、タイマのARR範囲（選択したタイマに応じて16ビットまたは32ビットの値）を超えるARR値が得られる場合は、次の順序で、より高い
プリスケーラ値を使用して計算を再実行する必要があります。
ARR値=（2分周したタイマクロック周波数をPWM周波数で割って1を引いたもの）、次はARR値=（3分周したタイマクロック周波数をPWM周波数で割って1を引いたもの）、という順番で、ARR値がプログラム可能な範囲内に収まるまで続けます。

35

役立つ式2/2• デューティサイクルセットアップ• 自動再ロード（TIMx_ARRのARR）と比較値（TIMx_CCRxのPSC）で定義：
𝐶𝐶𝑅𝑥⇨ 𝐶𝐶𝑅𝑥 = デューティサイクル × 𝐴𝑅𝑅 + 1
デューティサイクル =𝐴𝑅𝑅 + 1

• PWM分解能• この分解能は、考えられるデューティサイクル値の数を与え、PWM信号の制御をどの程度細かくするかを示す：

𝑅𝑒𝑠(ステップ) =（PSC = 0のとき） もしくは𝑅𝑒𝑠(ステップ) =（PSC != 0のとき）• DAC コンバータの出力解像度を示す場合と同様に、ビット単位で表現する方法もある：

𝑅𝑒𝑠(ビット) = 𝑙𝑜𝑔 () （PSC = 0のとき）もしくは 𝑅𝑒𝑠(ビット) = 𝑙𝑜𝑔 () （PSC != 0のとき）

36

このスライドでは、特定のPWM周波数のデューティサイクルをプログラムする方法について説明します。
このパラメータは、TIMx_ARRレジスタでプログラムされた自動再ロード
値（ARR）と、TIMx_CCRxレジスタでプログラムされた比較値を使用して定義されます。
デューティサイクルは、PWM周波数に依存せず、（比較値）を、（自動再ロード値+1）で割って求められます。
もう1つの役立つ指標はPWM分解能です。
これは、考えられるデューティサイクル値の数を与え、PWM信号の制御をどの程度細かくするかを示します。この分解能は、デューティサイクル
ステップ数で表され、クロックプリスケーラPSCがNULLのときのタイマク
ロック周波数とPWM周波数の比に単純に等しくなります。
DAコンバータの出力解像度を示す場合と同様に、ビット単位で表現する方法もあります。この場合、分解能はロックプリスケーラPSCがNULLのときのタイマクロック周波数とPWM周波数の比率の底2の対数から1を引いたものになります。
クロックプリスケーラがNULLでない場合、分解能はタイマクロック周波数とARR+1値の比のベース2対数です。

36

アプリケーション例：LEDの調光• これは、電流が定格出力電流を超えない限り、PWM出力を使用して直接行うことができる• PWM周波数：1KHz• 周波数：𝐴𝑅𝑅 =−1 =− 1 = 127999• ARRが16ビットの最大値を超えている• プリスケーラを1にセットする必要がある• 𝐴𝑅𝑅 =⁄

− 1 ⇨ 𝐴𝑅𝑅 =⁄TIM1_CH1− 1 = 63999

STM32• 開始時のデューティサイクル = 20%• デューティーサイクル =⇨ 𝐶𝐶𝑅𝑥 = 𝐴𝑅𝑅 + 1 × デューティサイクル =64000 × 0.2 = 12800• 調光分解能• 64000ステップまたは、log2(64000) = 15.9ビット
37

このスライドでは、PWMの簡単な実用例として、低消費電力LEDを調光する例を示しています。
これは、電流が定格出力電流を超えない限り、PWM出力を使用して直接行うことができます。
最初のステップでは、周波数を1KHzに設定するようにプログラムします。プリスケーラを使用せず、タイマの動作周波数を128MHzにしてARR値の計算を行うと、結果は127999になります。これは、タイマ1で使用できる16ビットの範囲を超えています。
タイマを64MHzで動作させるには、タイマプリスケーラを1にセットする必要があります。これにより、ARRレジスタの有効な値は63999になります。
2番目のステップでは、デューティサイクルが20%となるように比較レジスタの値を計算します。これにより、12799の値が得られます。
最後に、調光分解能は前のスライドで示した式から計算できます。
64MHzで動作するタイマの場合、1KHz PWMで64000調光ステッ
プが得られます。これは、15.9ビットの等価分解能に相当します。

37

アプリケーションのヒントとコツ• タイマは全部設定、カウンタが開始され、PWMモードは有効になっており、対応する出力も有効だが、依然としてピンが動作しない…
• MOEビットとCCxEビットをセットすることを検討したか？

• デッドタイムジェネレータを備えたタイマ（タイマ1および15）の場合、TIMx_BDTRレジス
タのメイン出力イネーブル（MOE）ビットが、すべての出力を制御し、ブレーク入力で障害が検出された場合に回路遮断器として機能する（すべてのPWM出力をグローバルに無効にする）• 出力を有効にするには、MOEビットをセット（設定）する必要がある• これは、タイマがデッドタイム挿入なしで使用されている場合でも有効

38

このスライドでは、「タイマは全部設定した。カウンタが開始された。
PWMモードは有効になっている。対応する出力もそうなっている。
しかし、依然としてピンが動作しない」というよくあるサポート事例について説明します。
通常、これはMOEビットまたはCCxEビットがセットされていないことが原因です。
TIMxCCERレジスタのCCxEビットは、CCxチャネルの設定を入力
または出力として定義します。CH1チャネルでPWM信号を取得す
るには、CC1Eビットをセットする必要があります。
デッドタイムジェネレータを搭載したタイマ（タイマ1および16/17）の場合、TIMx_BDTRレジスタのメイン出力イネーブル（MOE）ビット
が、すべての出力を制御し、ブレーク入力で障害が検出された場
合に回路遮断器として機能します（すべてのPWM出力をグローバ
ルに無効にします）。
出力を有効にするには、MOEビットをセット（設定）する必要があります。
これは、タイマがデッドタイム挿入なしで使用されている場合でも有効であり、タイマは汎用アプリケーションに使用されます。
38

STM32C0タイマインスタンス機能機能

クロックソース

分解能

TIM1（高機能制御）

TIM3
（汎用）

TIM14
（汎用）

TIM16
（汎用）

TIM17
（汎用）

CK_INT
外部入力ピン
外部トリガ入力ETR

CK_INT
外部入力ピン
外部トリガ入力ETR
内部トリガ入力

CK_INT

CK_INT
外部入力ピン

CK_INT
外部入力ピン

16ビット

16ビット

16ビット

16ビット

16ビット

プリスケーラ

16ビット

16ビット

16ビット

16ビット

16ビット

カウンタ方向アップ、ダウン、アップ&ダウン

アップ、ダウン、アップ&ダウン

アップ

アップ

アップ



-

-





マスタ







-



スレーブ





-

-

-

1

1
• CH1/CH1N

1• CH1/CH1N

-

-

-

繰り返しカウンタ

同期

チャネル数

トリガ入力

•
•
•
•
•

6
CH1/CH1N
CH2/CH2N
CH3/CH3N
CH4
CH5 および CH6 出力のみ、外部では使用できない


4
•
•
•
•

CH1
CH2
CH3
CH4

• CH1



39

このスライドでは、STM32C0マイクロコントローラに搭載されているタイマインスタンスの一覧を示しています。
タイマ1はフル装備のタイマで、モータ制御に対応しており、すべてのPWMオプションと、3相PWM信号を同時に生成して2つの独立したADCトリガを生成するための6個の比較チャネルを搭載しています。
タイマ6、17は汎用タイマです。相補チャネルとブレーク機能をサポートします。
タイマ3は、高度なPWMモード、アップダウンカウント機能、および4チャネルを備えた汎用タイマです。
タイマ14は軽量型のタイマで、標準のPWMのみをサポートし、1つのチャネルとアップカウントモードのみを備えています。これらは、追加の独立したタイムベースが必要な場合に他のタイマを補完します。

39

STM32C0タイマインスタンス機能
TIM1（高機能制御）

TIM3

TIM14

TIM16

TIM17

入力キャプチャ･モード











PWM入力モード





-

-

-

強制出力モード











機能











標準
非対称
組合せ
組合せ3相
6ステップPWM

標準
非対称
組合せ

標準

標準

標準

プログラム可能なデッドタイム

(CH1-3)--

(CH1)

(CH1)

ブレーク入力

2双方向

-

-

1双方向

1双方向

ワンパルスモード











再トリガ可能なワンパルス･モード





-

-

-

エンコーダ･インタフェース･モード





-

-

-

タイマ入力XOR機能





-

-

-

DMA





-





出力比較モード

PWM

40

このスライドは、STM32C0に存在する各タイマに実装されている機能を示しています。
プログラム可能なデッドタイムは、タイマに相補出力がある場
合に意味があります。これに該当するのは、タイマ1（チャネル
1～3）とタイマ16/17です。
タイマ1、16、17はブレーク入力をサポートしています。
再トリガ可能なワンパルスモードは、タイマ14、16、17ではサポートされていません。
タイマ1、3のみがエンコーダインタフェースを備えています。
チャネルを結合するXOR機能は、タイマ1および3でのみ使用可能です。
タイマ14はDMAリクエストをアサートできません。

40

関連ペリフェラル• タイマにリンクされている次のペリフェラルのトレーニング資料を参照• ADC• タイマで変換のトリガが可能• 相互接続マトリックス• ペリフェラル間の直接接続を制御• RCC• RCCはタイマ内部クロックリファレンスを提供

41

タイマは、複数のオンチップペリフェラルにリンクされています。
ADコンバータのトリガソースとして機能します。
相互接続マトリックスにより、マスタインタフェースとスレーブイ
ンタフェースを使用したタイマ同士の直接接続、およびタイマと他のペリフェラル間の直接接続が可能になります。
RCCと呼ばれるリセットおよびクロック制御ユニットは、すべてのタイマの内部クロックリファレンスを提供します。

41

参照• 詳細については、次のソースを参照：• AN2592• How to achieve 32-bit timer resolution using the link system in STM32F10x and STM32L15x
microcontrollers (includes software: STSW-STM32009)• AN4013• STM32 cross-series timer overview• AN4507• PWM resolution enhancement through dithering technique for STM32 advanced-configuration, generalpurpose and lite timers (includes software: STSW-STM32151)• AN4776• General-purpose timer cookbook

42

以下の3つのアプリケーションノートがリファレンスマニュアルのタイマセクションを補完します。
AN2592は、同期した2つの16ビットタイマで構成される32ビッ
トタイマの実用的な実装方法を示しており、タイマ同期メカニズ
ム全体の理解を深めるのに役立ちます。ソフトウェア例も付属しています。
AN4013には、すべてのタイマ機能の詳細な概要と、使用可能なファームウェアの例が記載されています。
AN4507には、ディザリング技術を用いたPWM分解能の向上の実装方法が示されています。ソフトウェア例も付属しています。
AN4776は、タイマの動作原理に関する注意点から始まり、標準的なタイマの使用例がいくつか記載されています。ソフトウェ
ア例も付属しています。

42

Find out more at www.st.com© STMicroelectronics - All rights reserved.
ST logo is a trademark or a registered trademark of STMicroelectronics International NV or its affiliates in the EU and/or other countries.
For additional information about ST trademarks, please refer to www.st.com/trademarks.
All other product or service names are the property of their respective owners.

ありがとうございました。

43