STM32G0 - WWDG
システムウィンドウ型ウォッチドッグ
レビジョン 1.0

STM32 システムウィンドウ型ウォッチドッグのプレゼンテーションへようこそ。ここでは、ソフトウェア障害の検出のために使用されるこのペリフェラルの主な機能について説明します。

1

概要• ソフトウェア障害の発生を検出するために使用• WWDG カウンタを時間枠内でリフレッシュする必要がある• プログラムされた時間が経過すると、システムリセットを生成する

2

アプリケーション側の利点• 正確な時間枠内で反応するウォッチドッグが必要なアプリケーションに適している• アプリケーションの異常に遅いまたは早い動作を検出するようにプログラムできる• 時間枠を設定可能• 一度有効化すると無効にできずリフレッシュする必要がある• リセットが発生する前に早期ウェイクアップ割込み（EWI）を使用可能

ウィンドウ型ウォッチドッグは、ソフトウェア障害の発生を検出するために使用されます。
ウィンドウ型ウォッチドッグは、アプリケーションの異常に遅いまたは早い動作を検出するようにプログラムできます。
正確な時間枠内で反応する必要があるアプリケーションに適しています。
一度有効にすると、デバイスのリセットによってのみ無効にすることができます。
システム復旧を行ったり、システム再起動前の特定動作を管理したりするために、リセット発生前に早期ウェイクアップ割込みを生成することができます。

2

主な機能

3

• WWDGの主な機能• タイムアウト値をプログラム可能

レジスタ
インタフェース

リードバック

プリロード

Logic

• 早期ウェイクアップ割込み（EWI）• タイムアウト値に達する前に生成

Logic

WWDG_CR への書込み= 0x40 ?

• タイムアウト値に達したとき• タイムウィンドウでリフレッシュされたとき

CMP• リセット生成：バス
APB bus
APB• 時間枠幅をプログラム可能

7 ビット
ダウンカウンタ

ウィンドウ型ウォッチドッグはいくつかの機能を備えています。
• ユーザは、アプリケーションのニーズに応じて、タイムアウト値やウィンドウ幅をプログラムできます。
• 次の 2 つの条件下でリセットを生成できます。
• ダウンカウンタ値が 0x3F 以下になったとき、または• ウォッチドッグがタイムウィンドウでリフレッシュされたとき。
• ダウンカウンタが 0x40 に達すると、早期ウェイクアップ割込みを生成できます。
早期ウェイクアップ割込みは、リセット生成の回避のためにダウンカウンタを再ロードする場合、またはシステム復旧とコンテキストバックアップの処理を管理する場合に使用できます。
図に示すように、ウィンドウ型ウォッチドッグでは、タイムベースのリファレンスクロックとして APB クロック（pclk）を使用します。
pclk は RCC ブロックから供給されます。
このクロックは、4096 分周された後、アプリケーションによってプログラムされた値でさらに分周されます。
アプリケーションは、ダウンカウンタ T[6:0] ビットの再ロード値をプログラムすることもできます。
ウィンドウ幅は、W[6:0] ビットによって制御されます。

3

WWDGの機能詳細
CNT ダウンカウンタ

リフレッシュ禁止

4

カウンタが W[6:0] に格納された値より大きいときにソフトウェアがカウンタを再ロードした場合に、リセットを生成。

リフレッシュ許可時間

この領域で更新が発生した
場合

T6 ビットWWDGのリセットを防ぐには、カウンタの値がタイムウィンドウ値 W[6:0] より小さいときに再ロード値 T[6:0] を書き込む。
7 ビットダウンカウンタ T[6:0] が 0x40 から 0x3F にロールオーバーした場合、リセットを開始。

この図は、ウィンドウ型ウォッチドッグがどのように動作するかを示しています。
7 ビットダウンカウンタが 0x40 から 0x3F にロールオーバーした場合、リセットを開始します。これは、アプリケーションソフトウェアがウィンドウ型ウォッチドッグを時間通りにリフレッシュしなかった場合に発生します。
早期割込み（有効な場合）は、ダウンカウンタが 0x40 に達した場合に生成できます。
ダウンカウンタが W[6:0] ビットに格納された値より大きいときにソフトウェアがウォッチドッグをリフレッシュした場合に、リセットが生成されます。
これは、アプリケーションがウォッチドッグをリフレッシュするのが早すぎる場合に発生します。この場合には、割込みは生成されません。
ウィンドウ型ウォッチドッグのリセットを防ぐには、ダウンカウンタの値がタイムウィンドウの値よりも小さく 0x3F よりも大きいときに、ウォッチドッグのリフレッシュが発生する必要があります。これは、緑色の領域に示されています。
リフレッシュ動作は、ダウンカウンタに T[6:0] ビットを再ロードすることから構成されています。
T[6:0] に 0 を書き込むと、ただちにリセットをかけることができます。

4

WWDG設定とリセットフラグ

5• ウィンドウ型ウォッチドッグ･クロックの有効化：• RCCブロックで：• ウォッチドッグにAPBクロックを供給するために、WWDGENビットを「1」にセット• ウォッチドッグがSLEEP モードおよびSTOPモードで動作し続けるために、WWDGSMENビットを「1」にセット• WWDGタイムベースの設定：• WWDGのタイムベースは、PCLKクロックからプリスケールされる• 4096の内部デバイダと8個のプリデバイダ：レジスタ WWDG_CFR で 1、2、4、16 ... 128を選択可能• 次の式を使用してWWDGタイムアウトを設定：
tWWDG (ms) = tPCLK x 4096 x 2WDGTB x (T[5:0] +1)• WWDGリセットソースのチェック：• RCCブロックのリセットフラグは、WWDGリセットが発生したことを示す（デバイスのリセット後）。

ウィンドウ型ウォッチドッグクロックを有効にするには、RCC ブロックの対応するウィンドウ型ウォッチドッグイネーブルビットを 1 にセットする必要があります。
ウォッチドッグ用の APB クロックを一度有効にすると、アプリケーションで無効にすることはできないことに注意してください。システ
ムリセットのみがウォッチドッグクロックを無効にすることができます。
また、CPU が SLEEP モードまたは STOP モードでも、アプリケーションでウィンドウ型ウォッチドッグを有効にしておきたい場合は、低消費電力イネーブルビットをセットすることもできます。
ダウンカウンタは、APB クロック PCLK を 4096 分周し、さらにアプリケーションで選択した分周比で分周したものを使用します。
これは、WWDG_CFR レジスタで定義された、1、2、4、8、16、32、64、128 のいずれかになります。
このスライドに示されている計算式で、ウォッチドッグのタイムアウト値を決めることができます。
システムリセットが発生した場合、RCC ブロックが提供するステータスフラグにより、リセットの原因を特定することができます。
ウィンドウ型ウォッチドッグはその原因の 1 つとなります。
5

割込み
割込みイベント

EWI

6

説明
早期ウェイクアップ割込み
実際にリセットが生成される前に特定の安全処理やデータロギングを実施する必要がある場合に使用できる• ダウンカウンタ値が 0x40 に達したときに、EWI割込みが発生• EWI割込みは、WWDG_CFR レジスタの EWIビットをセットすることによって有効化• EWI割込みは、WWDG_SR レジスタの EWIFビットに「0」を書き込むことによってクリア

早期ウェイクアップ割込みは、以下のような緊急タスクをリセットが発生する前に実行するために使用できます。
 データロギング、
 データ保護、
 リセット防止のためのウォッチドッグのリフレッシュ、または その他の緊急タスク...
ダウンカウンタ値が 0x40 に達したときに、EWI 割込みが発生します。
WWDG_CFR レジスタの EWI ビットをセットすることによって有効になります。
EWI 割込みは、WWDG_SR レジスタの EWIF ビットに「0」を書き込むことによってクリアされます。

6

低消費電力モード
モード
RUN
低消費電力 RUN
SLEEP
低消費電力 SLEEPSTOP 07

説明アクティブ*アクティブ*• RCCブロックのWWDGSMENビットがクリアされると、クロック･ゲーティングによってウィンドウ型ウォッチドッグのクロックを無効にできる

STOP 1
STANDBY
SHUTDOWN

利用不可* WWDG が有効な場合

RUN モードではウィンドウ型ウォッチドッグがアクティブになります。SLEEP モードおよび STOP モードでは、RCC ブロックの対応するビットをクリアすることで、停止することができます。
STANDBY モードと SHUTDOWN モードでは、ウィンドウ型ウォッチドッグは使用できません。

7

STM32G0とSTM32F0のWWDGの比較

8• WWDG_CFRのWDGTBフィールドの変更• PCLK周波数が高い場合のために、プリスケーラを増やし適切なタイムアウトを得るために、1ビットを追加• WDGTBフィールドの位置を変更

STM32G0のWWDG

ビット 13:11 WDGTB[2:0]：タイマベース
プリスケーラのタイムベースは、次のように変更できます。
000：CK カウンタクロック（PCLK/4096） 1 分周
001：CK カウンタクロック（PCLK/4096） 2 分周
010：CK カウンタクロック（PCLK/4096） 4 分周
011：CK カウンタクロック（PCLK/4096） 8 分周
100：CK カウンタクロック（PCLK/4096） 16 分周
101：CK カウンタクロック（PCLK/4096） 32 分周
110：CK カウンタクロック（PCLK/4096） 64 分周
111：CK カウンタクロック（PCLK/4096） 128 分周

STM32F0のWWDG

ビット 8:7 WDGTB[1:0]：タイマベース
プリスケーラのタイムベースは、次のように変更できます。
00：CK カウンタクロック（PCLK/4096） 1 分周
01：CK カウンタクロック（PCLK/4096） 2 分周
10：CK カウンタクロック（PCLK/4096） 4 分周
11：CK カウンタクロック（PCLK/4096） 8 分周

WWDG_CFR のフォーマットは、STM32F0 のウィンドウ型ウォッチドッグと STM32G0 のウィンドウ型ウォッチドッグで同じではありません。
STM32G0 マイクロコントローラは、プリスケーラ比の値を 128に拡張するための追加ビットをサポートします。

8