STM32G4 – WWDG
システムウィンドウ型ウォッチドッグ

1.0版

STM32システムウィンドウ型ウォッチドッグ（WWDG）のプレゼンテーションにようこそ。ここでは、ソフトウェア障害の検出に用いられるこのペリフェラルの主な機能の説明を行います。

1

概要

2

• ソフトウェア障害の発生検知に使用• WWDGカウンタは、タイムウィンドウ内に必ずリフレッシュ

アプリケーション側の利点• プログラムされた時間が経過するとシステ
ム･リセットが生成• 正確なタイムウィンドウ内で反応するウォッチドッグが必要なアプリ
ケーションに最適• タイムウィンドウを設定可能• リセットが発生する前に早期ウェイクアップ割込み（EWI）が可能• 異常に遅い、または早いアプリケーション動作の検出がプログラム可能• 一度アクティブになると無効にできずリフレッシュが必要

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

2

主な機能

3

• WWDGの主な機能• プログラム可能なタイムアウト値• プログラム可能なタイムウィンドウ幅• リセット生成：• タイムアウト値到達時• タイムウィンドウ外でリフレッシュされた場合• 早期ウェイクアップ割込み（EWI）• タイムアウト値に到達する前に生成

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

3

ウォッチドッグの統合

4• WWDGはWWDG_SW オプション･ビットを使用してリセット後に自動的に有効化可能
STM32WB• WWDGはCPU1がデバッグ･モードにある場合にはDBG_WWDG_STOPを使用して停止可能• WWDGは以下を生成可能：

wwdg_out_rst

Othersources

WWDG
pclk1

NRST

CPU1
wwdg_ewit• CPU1に対する早期ウェイクアップ割込み• システムリセット

RCC

DBG_WWDG_STOP(from DBGMCU_APB1FZR1 register)

WWDG_SW(from FLASH_OPTR register)

WWDGはAPB1バスに接続されており、APB1クロックから供給を受けます。
WWDG早期ウェイクアップ割込み出力は、NVICのポジション0に接続されています。
オプションバイトを使用して、ハードウェアスタートまたはソフトウェアスタートが選択可能です。ハードウェアモードでは、リセット後にWWDGが自動的に有効化可能です。
システムがSTOP、STANDBY、SHUTDOWNのいずれかのモードである場合、ウィンドウ型ウォッチドッグは停止しますが、デバイスがSLEEPモードにある場合にはアクティブなままとなることができます。
タイムアウトが発生するか、許されたウィンドウ外でWWDGがリフレッシュされた場合には、WWDGがRCCブロックによって処理されるシステムリセットを行います。

4

WWDGの機能説明

5

カウンタがW[6:0]に格納されている値より大きい間にソフトウェアがカウンタをリロードした場合に、リセットが生成リセットを防ぐには、ダウンカウンタがW[6:0]の値よりも小さく、0x3Fよりも大きい場合にリロード値T[6:0]を書込みダウンカウンタが0x40から0x3Fに遷移した場合、リセットを開始

この図には、ウィンドウ型ウォッチドッグの動作方法が図示されています。
7ビットダウンカウンタが0x40から0x3Fに遷移した場合、ウォッチドッグがリセットをアサートします。これは、時間内にアプリケーションソフトウェアによってウィンドウ型ウォッチドッグがリフレッシュされない場合に発生します。
ダウンカウンタが0x40に達した場合、早期ウェイクアップ割込みが有効化されていれば生成可能です。
ダウンカウンタがW[6:0]ビットに格納されている値より大きい間にソフトウェアがウォッチドッグをリフレッシュした場合に、リセットが生成されます。
これは、アプリケーションによってウォッチドッグがあまりに早くリフレッシュされた場合に発生します。この場合には、割込みは生成されません。
ウィンドウ型ウォッチドッグリセットを防ぐには、ダウンカウンタの値がタイムウィンドウの値よりも小さく、0x3Fよりも大きい間に、ウォッチドッグのリフレッシュが発生する必要があります。
これは、緑色の領域に示されています。
リフレッシュ動作は、ダウンカウンタにT[6:0]ビットをリロードすることから構成されています。

5

WWDGの有効化

6• ソフトウェア･モードにおけるWWDGの有効化：• RCCブロック：• ウォッチドッグにAPBクロックを供給するため、WWDGENビットを‘1’にセット• ウォッチドッグがSLEEPモードで動作し続けるため、WWDGSMENビットを‘1’にセット• WWDGブロック：• WDGAビットを‘1’にセット• ハードウェア･モードにおけるWWDGの有効化：• デバイスがRUNモードまたはSLEEPモードとなり次第、WWDGが動作

WWDGは、ハードウェアモードかソフトウェアモードで動作可能です。
ソフトウェアモードでは、ウォッチドッグを有効化するために、アプリケーションはRCC経由でAPB1ウォッチドッグクロックを有効化し、WWDGの中でWDGAビットを‘1’にセットする必要があります。
ひとたびウォッチドッグ用APB1クロックを有効化すると、アプリケーションはそれを無効化できないことに注意してください。シス
テムリセットによってのみ、ウォッチドッグクロックを無効化できます。
デバイスがSLEEPモードである場合であっても、アプリケーションがウィンドウ型ウォッチドッグがアクティブのままとしたい場合には、低電力イネーブルビットをセットすることも可能です。
ハードウェアモードでは、ウォッチドッグを有効化する必要はありません。デバイスがRUNモードかSLEEPモードであるとWWDGがカウントダウンします。WWDGENとWWDGSMENビットはハードウェアによって‘1’に固定されています。

6

WWDG設定とリセットフラグ

7• WWDGタイムベースの設定：• pclkクロックからプリスケールされたWWDGタイムベース• 内部4096分周器と4個の前置分周器：レジスタWWDG_CFRによって1、2、4、8から選択可能• 次の式を用いてWWDGタイムアウトを設定：

tWWDG = tPCLK x 4096 x 2WDGTB x (T[5:0] +1)
ハードウェア･モードでは、ウォッチドッグがリフレッシュされないと、APBクロック（tPCLK）262144サイ
クル後にリセットが生成• WWDGリセット･リソースの確認：• RCCブロックのリセット･フラグは、（デバイス･リセット後に）WWDGリセットが発生したことを示す

ダウンカウンタは、4096分周された後に、アプリケーションによって選択された分周比で再び分周されたAPB1クロックを使用します。
この分周比は、WWDG_CFRレジスタに定義されているように、1、2、4または8から選択可能です。
このスライドに示されている式から、ウォッチドッグのタイムアウト値を求めることができます。
システムリセットが発生した場合、RCCブロックから供給されるステータスフラグによって、リセット原因を特定することができます。
ウィンドウ型ウォッチドッグがソースの1つとなります。

7

割込み
割込みイベント

EWI

8

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

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

8低電力モード
パワーモード9

説明

RUN

有効すべてのSLEEPモード

有効 RCCブロック内のWWDGSMENビットがクリアされると、クロック・ギャティングによってウィンドウ・ウォッチドッグ・クロックを無効にすることが出来る
ペリフェラルの割込みにより、製品はSLEEPモードを終了

すべてのSTOPモード

停止 ペリフェラル･レジスタの内容は保持

STANDBY

パワーダウン状態
STANDBYモードを終了した後、ペリフェラルを再初期化する必要がある

SHUTDOWN

パワーダウン状態
SHUTDOWNモードを終了した後、ペリフェラルを再初期化する必要がある

デバイスがRUNモードまたはSLEEPモードの場合、ウィンドウウォッチドッグが有効になります。STOPモードまたはSTANDBYモードでは使用できません。
SLEEPモードでは、RCCブロックにある対応する低電力イネーブルビットをクリアすることで、ウィンドウウォッチドッグクロックを無効にすることができます。

9