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

1.0版

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

1

概要

2

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

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

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

2

主な機能

3

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

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

ウォッチドッグの統合

4• WWDG1は、EXTIを介してCPU1への割込みとCPU2への割込みを発生させることが可能

Logic• WWDG1はD1ドメインに位置し、CPU1専用

Logic

RCC

• WWDG2は、EXTIを介してCPU2への割込みとCPU1への割込みを生成することが可能

EXTI• WWDG2はD2ドメインに位置し、CPU2専用• システム･リセットを生成可能

STM32H7には、WWDG1とWWDG2の2つのウィンドウ・ウォッチドッグを搭載しています。
WWDG1はCPU1専用として準備され、WWDG2はCPU2専用に準備されています。
WWDG1はD1ドメインのAPB3バスに接続されています。
WWDG2はD2ドメインのAPB1バスに接続されています。
WWDG1早期割込み出力は、CPU1のNVICだけでなく、EXTIにも接続されており、アプリケーションがそのような機能を必要とする場合には、CPU2をウェイクアップさせて割込みをかけることができます。
同様に、WWDG2早期割込み出力は、CPU2のNVICだけでなく、EXTIにも接続されており、アプリケーションがこの機能を必要とする場合には、CPU1をウェイクアップさせて割込みをかけることができます。
各ウィンドウのウォッチドッグは、関連するCPUがデバッグ(コア停止)モードの時にウォッチドッグを停止するかどうかを選択することができます。詳細はマイコン・デバッグ・ユニット(DBGMCU)の説明をご参照ください。
ウィンドウ・ウォッチドッグは、システムがSTOPまたはSTANDBYモードにあるときに停止しますが、対応するCPUがCSleepモードにあるときにはアクティブな状態を保つことができます。
どちらのウォッチドッグも、RCCブロックで処理されるシステムリセットを実行する機能を持っています。
4

WWDGの機能説明

5

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

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

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

5

WWDG設定とリセット･フラグ

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

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

6

割込み
割込みイベント

EWI

7

説明
早期ウェイクアップ割込み。実際にリセットが生成される前に特定の安全処理や、データ･ロギングを実施する必要がある場合に使用できます。

• ダウンカウンタ値が0x40に達したときに、EWI割込みが発生• EWI割込みは、WWDG_CFRレジスタのEWIビットをセットすることによって有効• EWI割込みは、WWDG_SRレジスタのEWIFビットに“0”を書き込むことによってクリア

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

7低電力モード
モード

8

説明

RUN

アクティブ*

SLEEP

アクティブ*
RCCブロックのWWDGxLPENビットがクリアされると、クロック･ゲーティングによってウィンドウ･ウォッチドッグ･クロックを無効にすることが可能

STOP

使用不可

STANDBY

使用不可*WWDGイネーブルの時

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

8