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

1.0 版

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

1

概要• ソフトウェア障害の発生を検出するために使用します。
• WWDG カウンタは、タイムウィンドウ内でリフレッシュする必要があります。
• プログラムされた時間が経過したときにシステムリセットを生成します。
• 異常に遅いあるいは早いアプリケーション動作を検出するようにプログラムできます。
• 一度有効化すると無効にできず、リフレッシュする必要があります。

2

アプリケーション側の利点• 正確なタイムウィンドウ内で反応するウォッチドッグ• 設定可能なタイムウィンドウ• リセットが発生する前に使用できる
EWI：Early Wakeup Interrupt （早期ウェイクアップ割込み）

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

2

主な機能

3

• WWDG の主な機能• タイムウィンドウ外でリフレッシュされる場合

Logic• タイムアウト値に達する前に生成されます。

= 0x40 ?

• 早期ウェイクアップ割込み（EWI）

Logic• タイムアウト値に達した場合

CMP• リセットの生成：

APB bus• プログラム可能なタイムアウト値• プログラム可能なタイムウィンドウの幅

ウィンドウ型ウォッチドッグには、いくつかの機能があります。
• ユーザは、アプリケーションニーズに応じたタイムアウト値とウィンドウ幅をプログラムできます。
• 次の 2 つの条件に基づいてリセットを生成できます。
• ダウンカウンタ値が 0x3F 以下になった場合• ウォッチドッグがタイムウィンドウ外でリフレッシュされる場合• ダウンカウンタが 0x40 に達した場合に、早期ウェイクアップ割込みを生成できます。
早期ウェイクアップ割込みは、リセットの生成を回避したり、システム復旧およびコンテキストのバックアップ操作を管理したりするために、ダウンカウンタのリロードに使用できます。
図に示しているように、ウィンドウ型ウォッチドッグはタイムベースのリファレンスクロックとして APB クロック（pclk）を使用します。
pclk は RCC ブロックによって供給されます。

このクロックは 4096 およびアプリケーションによってプログラムされた値で分周されます。
アプリケーションで、ダウンカウンタビット T[6:0] のリロード値をプログラムすることもできます。
ウィンドウ幅はビット W[6:0] で制御されます。

3

ウォッチドッグの統合

4• WWDG1 は、MCU（Cortex® M4）専用です。
• WWDG1 は、Cortex M4 および Cortex
A7 に早期割込みを生成できます。
• WWDG1 は、ウォッチドッグリセットが有効化されたときに Cortex A7 に割込みを生成できます（EXTI 経由）。
• WWDG1 は Cortex M4 に対してローカルリセットを生成します。

STM32MP1 には、Cortex M4 での使用に特化したウィンドウ型ウォッチドッグが組み込まれています。
WWDG1 は APB1 バスに接続されており、WWDG1 を使用する前にWWDGEN ビットで APB クロックを有効にする必要があります。
WWDG1 の早期割込み出力は NVIC と GIC に接続されており、CortexM4 および A7 の両方で割込みを処理できます。
WWDG1 のリセット出力は RCC に接続されており、Cortex M4 のリセットのみ生成します。また、このリセット出力は EXTI に接続されており、ウィンドウ型ウォッチドッグのリセットが発生したときに Cortex A7 を有効化します。
この機能を使用することで、Cortex A7 は必要に応じて Cortex M4 を適切に再起動できます。
Cortex M4 がデバッグモード（コア停止）である場合、ウォッチドッグを停止するかどうかを選択できます。詳細については MPU デバッグユニット（DBGMCU）の説明を参照してください。
Cortex M4 が CStop モードまたは STANDBY モードである場合、ウィンドウ型ウォッチドッグを停止しますが、CSleep モードではアクティブなままとなります。

4

WWDG の機能説明

5

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

WWDG のリセットを防ぐには、カウンタの値がタイムウィンドウ値 W[6:0] より小さいときにリロード値 T[6:0] を書き込みます。
7bit のダウンカウンタ T[6:0] が 0x40 に達して 0x3F に戻ったときに、リセットを開始します。

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

5

WWDG 設定とリセットフラグ

6• ウィンドウ型ウォッチドッグクロックを有効にします。
• RCC ブロック：• APB クロックをウォッチドッグに供給するために WWDG1EN ビットを“1”にセットします。
• ウォッチドッグを SLEEP モードで動作させたままにするために、WWDG1LPEN ビットを“1”にセットします。

• WWDG タイムベースの設定：• PCLK クロックからプリスケールされた WWDG タイムベース• 4096 分周の内部分周回路と 8 個の前置分周回路：1、2、4、16～128 をレジスタ WWDG_CFR で選択できます。

• 次の式を使用した WWDG タイムアウトの設定：
tWWDG (ms) = tPCLK x 4096 x 2WDGTB x (T[5:0] +1)• WWDG リセットソースの確認：• RCC ブロックのリセットフラグは、WWDG1 リセットが発生するタイミング（デバイスリセット後）を示します。

ウィンドウ型ウォッチドッグクロックを有効にするには、RCC ブロックの対応するウィンドウ型ウォッチドッグイネーブルビットを 1 にセットする必要があります。
ウォッチドッグの APB クロックを一度有効にすると、アプリケーションで無効にできないことに注意してください。システムリセットでのみ、ウォッチドッグクロックを無効にできます。
CPU が SLEEP モードの場合でも、アプリケーションでウィンドウ型ウォッチドッグを有効化したままの状態が求められる場合、低電力イネーブルビットもセットできます。
ダウンカウンタは、4096 分周されてから、アプリケーションによって選択された分周比で再び分周された APB クロック PCLK を使用します。
この分周比は、WWDG_CFR レジスタで定義されている 1、2、4、8、16、32、64、128 に設定できます。
このスライドに示された公式を使用すれば、ウォッチドッグのタイムアウト値を決定できます。

RCC ブロックが供給するステータスフラグにより、システムリセットが発生したときにどの部品によってリセットが発生したのかを識別できます。
ウィンドウ型ウォッチドッグは、ソースの 1 つに指定できます。
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

低電力モードCM4 モード

8

説明

CRUN

アクティブです*。

CSLEEP

アクティブです*。ウィンドウ型ウォッチドッグクロックは、RCC ブロックの WWDGxLPEN
ビットがクリアされるとクロックゲーティングで無効にできます。

CSTOP

使用できません。

*WWDG が有効である場合

ウィンドウ型ウォッチドッグは、Cortex M4 が CRUN モードおよび CSLEEP モードである場合にアクティブになります。STOPモードや STANDBY モードでは使用できません。

CSLEEP モードでは、RCC ブロックにある対応した低電力イネーブルビットをクリアすることで、ウィンドウ型ウォッチドッグクロックを無効にできます。

8