STM32H7 – IWDG
独立型ウォッチドッグ

1.0版

STM32独立型ウォッチドッグのプレゼンテーションにようこそ。このペリフェラルは、問題発生時にデバイスをリセットするウォッチドッグとして、またはアプリケーションのタイムアウト管理用のフリーランタイマとして使用することができ、その主な機能について説明します。

1

概要

2

• ソフトウェア障害による誤動作の検出と対策に役立つ• 期待されるタイムウィンドウ内にリフレッシュされない場合にシステム･リセットをトリガ• メインクロックに障害が発生しても常時アクティブ• ひとたびアクティブになると無効にできず、リフレッシュする必要がある

アプリケーション側の利点• メインアプリケーションの外部にある完全に独立したプロセス• ハードウェア･スタートまたはソフトウェア･スタートを選択可能• STANDBYモードとSTOPモードでは低電力停止を選択可能

独立型ウォッチドッグは、ソフトウェア障害による誤動作の検出と対策に使用されます。
期待されるタイムウィンドウ内にリフレッシュされない場合に、リセットシーケンスをトリガします。
そのクロックは独立した32kHzロースピード内部RCオシレータ（LSI）であるため、メインクロックに障害が発生してもアクティブのままとなります。
ひとたび有効化されると、ロースピード内部オシレータが強制的にアクティブ化され、無効にできるのはリセットのみとなります。
アプリケーションにとっての主な利点の1つは、メインクロックとは独立に動作可能であることです。

2

主な機能

3

• IWDGの主な機能• 125µsから32.8秒の範囲でプログラム可能なタイムアウト• プログラム可能なタイム･ウィンドウ幅• 独立RCオシレータ（LSI）からクロック供給• 以下の時点でリセットを生成：• タイムアウト値に到達• ウィンドウ外でリフレッシュが発生• DEBUG、STOP、STANDBYの各モードで停止可能• 自動的に有効化されるように設定可能

独立型ウォッチドッグは、125マイクロ秒から32秒までの広範囲なタイムアウト値に対応しています。
独立型ウォッチドッグが有効化されると無効化できなくなる32kHzRCオシレータからクロック供給を受けます。
プログラムされたタイムアウト値が経過するか、プログラムされたタイムウィンドウ外でウォッチドッグリフレッシュが発生した場合にリセットを生成します。
このウィンドウ機能はオプションであり、すべての独立型ウォッチドッグに存在する訳ではありません。
システムリセット後に独立型ウォッチドッグを自動的に有効化することができます。
DEBUG、STOP、STANDBYの各モードで、独立型ウォッチドッグの動作を定義することができます。

3ブロック図

4APBバス

コア電圧ドメイン

APBクロック（pclk）

プリスケーラレジスタ

ステータスレジスタ

リロードレジスタ

キー
レジスタ

ウィンドウ
レジスタ

12ビット
リロード値
32kHz LSI
クロック
（lsi_ck）

8ビット
プリスケーラ

VDD電圧ドメイン

12ビットダウン
カウンタ

IWDGリセット（iwdg_out_rst）

12ビット
ウィンドウ
コンパレータ

IWDG

独立型ウォッチドッグレジスタは、コア電圧ドメインにあり、その機能はVDD電圧ドメインにあります。
次の2本のクロックが必要です。
APBクロックはレジスタのアクセスのために必要です。
LSIクロックはウォッチドッグの機能部分のために必要です。
このアーキテクチャにより、独立型ウォッチドッグレジスタはSTOPモードやSTANDBYモードでも動作可能となっています。
プログラム可能な8ビットプリスケーラは、LSIオシレータ周波数の分周に用いられます。
12ビットダウンカウンタによってタイムアウト値が定義されます。

4

ウォッチドッグの統合

5• IWDG1はCPU1専用

Logic• IWDG1およびIWDG2はD3ドメインに配置される

RCC• IWDG2はCPU2専用

Logic• システム･リセットを生成可能

STM32H7マイコンには、2つの独立したウォッチドッグ（IWDG）が含まれています。
IWDG1はCPU1の使用に特化し、IWDG2はCPU2の使用に特化しています。
それぞれの独立したウォッチドッグは、オプション・バイトにより、ハードウェアまたはソフトウェア・スタートを選択することができます。
各独立したウォッチドッグは、関連するCPUがデバッグ(コア停止)モードの時にウォッチドッグがフリーズするかどうかを選択することができます。
詳細はマイコン・デバッグ・ユニット(DBGMCU)の説明を参照してください。
STOPまたはSTANDBYモードでの動作の制御は、両方の独立したウォッチドッグで共通です。
“OTP Freeze Stop”を有効にすると、システムがSTOPまたはSTANDBYモードの時に独立したウォッチドッグがフリーズします。
“OTP Freeze Standby”を作動させると、システムがSTANDBYモードのときに独立したウォッチドッグがフリーズします。
両ウォッチドッグは、D3ドメインのAPB4バスに接続されています。両ウォッ
チドッグは、RCCブロックで処理されるシステムリセットを実行することができます。

5

IWDGの機能説明

6

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

IWDGリセットを防止するには、カウンタの値がタイム･ウィンドウ値WUT[11:0]よりも小さい間にウォッチドッグをリセットします。

この図には、独立型ウォッチドッグの動作方法が図示されています。
ダウンカウンタがゼロに達すると、ウォッチドッグリセットがアクティブ化されます。
これは、時間内にアプリケーションソフトウェアによってウィンドウ型ウォッチドッグがリフレッシュされない場合に発生します。
ダウンカウンタがウィンドウレジスタに格納された値より大きい間にソフトウェアがウォッチドッグをリフレッシュした場合にも、リセットが生成されます。
ウォッチドッグリセットを防止するには、ダウンカウンタの値がゼロではなく、かつタイムウィンドウ値よりも小さい間にリフレッシュが発生する必要があります。

6

IWDGハードウェア･スタートの設定

7• IWDGハードウェア･スタートでは、システム･リセット後にIWDGが自動的に有効化• カウンタが0に達する前でウィンドウ内（ウィンドウ･オプションが有効化されている場合）の定期的インターバルで、ソフトウェアによってキーレジスタ（IWDG_KR）に0x0000 AAAAを書き込む必要がある

独立型ウォッチドッグハードウェアは、デバイスのオプションバイトによってを有効化されます。
ハードウェアモードが有効化されていると、毎回のシステムリセットの後にウォッチドッグがダウン-カウンタに0xFFFを自動的にロードし、カウントダウンを開始します。
このオプションが有効化されている場合、リセットを防止するには、カウンタが0に達する前でタイムウィンドウ内の定期的インターバ
ルで、キーレジスタがリフレッシュされる必要があります。

7

IWDGソフトウェア･スタートの設定

8• レジスタIWDG_KRに0x0000 CCCCを書き込んでIWDGを有効化• レジスタIWDG_KRに0x0000 5555を書き込んでレジスタ･アクセスを有効化• レジスタIWDG_PRをプログラミングしてIWDGプリスケーラをセット• リロード･レジスタ（IWDG_RLR）をセット• レジスタが更新される（IWDG_SR=0x0000 0000）のを待つ• ウィンドウ･オプション有効時：IWDG_WINRレジスタにウィンドウ値を書き込む
これにより、カウンタ値IWDG_RLRが自動的にリフレッシュされる• ウィンドウ･オプション無効時：レジスタIWDG_KRに0x0000 AAAAを書き込んでカウンタ値をIWDG_RLRにリフレッシュする

独立型ウォッチドッグのソフトウェアスタートは、わずか数ステップで設定されます。


最初のステップは、0x0000 CCCCの値をキーレジスタに書き込んで、ウォッチドッグをスタートさせることです。
次に、0x0000 5555を書き込んでキーをアンロックし、独立型ウォッチドッグレジスタ保護を解除します。
カウンタクロックを供給するプリスケーラ分周回路を選択して、IWDG_PRレジスタに独立型ウォッチドッグプリスケーラをセットします。
リロードレジスタ（IWDG_RLR）に書き込んで、ウォッチドッグカウンタにロードされる値を定義します。

前のレジスタにアクセスした後、レジスタが更新されていることを確認するために、IWDG_SRビットがリセットされるのを待つ必要があります。


ここで、独立型ウォッチドッグウィンドウオプションを有効にするか無効にするかという2つのオプションがあります。
• ウィンドウオプションを有効化するには、IWDG_WINRレジスタにウィンドウ値を書き込みます。
• そうしない場合には、キーレジスタに0x0000 AAAAを書き込んでカウンタをリフレッシュし、ウィンドウオプションを無効化します。

8

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

9• IWDGタイムベースの設定：• LSIクロック（32kHz）から分周されたIWDGタイムベース• 7個のプリディバイダ：IWDG_PRレジスタによって選択可能な4～256（および12ビット･ウォッチドッグ･カウンタ･リロード値RLR[11:0]）• 次の式を用いてIWDGタイムアウトをセット：
tIWDG = tLSI x 4 x 2 PR x (RL +1)
ここで、tLSI = 1/32000 = 31.25µs、PRとRLはIWDGレジスタのフィールド• IWDGリセットはRCCレジスタを通じて特定可能

IWDGタイムベースは、32kHzのLSIから分周されます。IWDG_PR
プリスケーラレジスタは、LSIクロック周波数を4から最高256の間の値で分周できます。ウォッチドッグカウンタリロード値は、
IWDG_RLRレジスタに書き込まれている12ビットの値です。
独立型ウォッチドッグタイムアウトの決定には、上記式を用いることができます。独立型ウォッチドッグ時間は、LSI周期とそのプリスケーラ、ならびに選択されたウォッチドッグカウンタリロード値に基づいています。
マイクロコントローラのリセットおよびクロックコントローラ（RCC）は、リセットのソースを特定するレジスタを備えています。
こうすれば、独立型ウォッチドッグによってリセットが起きたかどうかをアプリケーションにより確認できます。

9低電力モード
モード

10

説明

RUN

有効*

SLEEP

有効*

STOP

有効*

STANDBY

有効**IWDG有効時

IWDGは、すべてのモードでアクティブにできます。

10