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

1.0 版

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

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 は CPU1 専用• WWDG は WWDG_SW オプションビットを使用してリセット後に自動的に有効化可能• WWDG は CPU1 がデバッグモードにある場合には DBG_WWDG_STOP を使用して停止可能

STM32WB
wwdg_out_rst• システムリセット

Othersources

WWDG
pclk1

NRSTCPU1
wwdg_ewit• WWDG は以下を生成可能：• CPU1 に対する早期ウェイクアップ割込み

RCC

DBG_WWDG_STOP(from DBGMCU_APB1FZR1 register)

WWDG_SW(from FLASH_OPTR register)

STM32WB に組み込まれている WWDG は、CPU1 専用です。
WWDG は APB1 バスに接続されており、APB1 クロックから供給を受けます。
WWDG 早期ウェイクアップ割込み出力は、CPU1 の NVIC に接続されています。

オプションバイトを使用して、ハードウェアスタートまたはソフトウェアスタートが選択可能です。ハードウェアモードでは、リセット後に WWDG が自動的に有効化可能です。
システムが STOP、STANDBY、SHUTDOWN のいずれかのモードである場合、ウィンドウ型ウォッチドッグは停止しますが、CPU1 が CSleep モードにある場合にはアクティブなままとなることができます。
タイムアウトが発生するか、許されたウィンドウ外で WWDGがリフレッシュされた場合には、WWDG が RCC ブロックによって処理されるシステムリセットを行います。
4

WWDG の機能説明

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

リセットを防ぐには、ダウンカウンタがW[6:0] の値よりも小さく、0x3F よりも大きい場合にリロード値 T[6:0] を書き込み。

ダウンカウンタが 0x40 から 0x3F に遷移した場合、リセットを開始。

この図には、ウィンドウ型ウォッチドッグの動作方法が図示されています。
7bitダウンカウンタが 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 の有効化：• CPU1 が RUN モードまたは STOP モードとなり次第、WWDG が動作。

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

ハードウェアモードでは、ウォッチドッグを有効化する必要はありません。
CPU1 が 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
低電力 RUN有効。

SLEEP
低電力 SLEEP

ハードウェアスタートモードでは常時有効。
ソフトウェアスタートモードでは、RCC の WWDGSMEN ビットを使用して無効化可能。

STOP0、STOP1、STOP2

使用不可

STANDBY

使用不可

SHUTDOWN

使用不可

RUN モードと STOP モードではウィンドウ型ウォッチドッグが有効になります。STOP、STANDBY、SHUTDOWN の各モードでは使用できません。
SLEEP モードでは、ソフトウェアスタートモードでウォッチドッグが使用されている場合、RCC ブロックにある低電力イネーブルビットをクリアすることにより無効化できます。

9