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

1.0版

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

1

概要

2

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

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

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

2

主な機能

3

• IWDGの主な機能••••

125マイクロ秒から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• IWDGはLSIからクロック供給

Logic• リセット後に自動的にIWDGを有効（IWDG_SW ）• 製品がSTOPモードのときにIWDGをフリーズ（IWDG_STOP）• 製品がSTANDBYモードの場合にIWDGをフリーズ（IWDG_STDBY）

Logic• オプションビット（FLASH_OPTR）には、いくつかのオプションがある• デバッグ機能:• 製品がデバッグモードのときにIWDGをフリーズ（DBG_IWDG_STOP）

IWDGはLSIという32kHz RC発振器によってクロック供給されます。
IWDGが有効な場合、LSI発振器は自動的に有効になります。
オプション・ビットは、アプリケーションのニーズに応じてIWDGの動作を調整できます。
IWDG_SWビットを介してリセットした後、自動的にIWDGを有効にするかしないかは、ハードウェアまたはソフトウェアのライセンス認証モードと呼ばれることがよくあります。
• 製品がIWDG_STOPビットを介してSTOPモードにある場合、
IWDGをフリーズ• 製品がIWDG_STDBYビットを介してSTANDBYモードにある場合、IWDGをフリーズ
製品がデバッグモード（コア停止）のときにウォッチドッグがフリーズするかどうか選択できます。

5

IWDGの機能説明

6

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

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

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

6

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

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

独立型ウォッチドッグハードウェアは、デバイスのオプションバイトによってを有効化されます。
ハードウェアモードが有効化されていると、毎回のシステムリセットの後にウォッチドッグがカウンタに0xFFFを自動的にロードし、カウントダウンを開始します。
プリスケーラは0にセットされ、入力クロックが4分周されます。
このオプションが有効化されている場合、リセットを防止するには、カウンタが0に達する前でタイムウィンドウ内の定期的インターバルで、キーレジスタがリフレッシュされる必要があります。
LSI1またはLSI2のクロック周波数が正確に32kHzであることを考えると、アプリケーションにとっては、ウォッチドッグリセットが生成される前に約0.5秒あります。

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

9低電力モード
モード

10

説明RUN

有効*

低電力RUN

有効*

SLEEP

有効*

低電力SLEEP

有効*

すべてのSTOPモード

有効*

STANDBY

有効*

SHUTDOWN

動作しない SHUTDOWN終了時にIWDGがリセット*IWDG有効時

IWDGは、SHUTDOWNモードを除くすべてのモードでアクティブにできます。
製品がSHUTDOWNから存在する場合、IWDGレジスタは初期値に設定されます。

10