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

1.0 版

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

1

概要

2

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

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

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

2

主な機能

3

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

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

3ブロック図4

APB バス

コア電圧ドメイン

APB クロック（pclk）

プリスケーラレジスタ

ステータスレジスタ

リロードレジスタ

キー
レジスタ

ウィンドウ
レジスタ

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

8bit
プリスケーラVDD 電圧ドメイン

12bitダウン
カウンタ

IWDG リセット（iwdg_out_rst）

12 bit
ウィンドウ
コンパレータ

IWDG

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

4

ウォッチドッグの統合

5• IWDG_SW オプションビットを通じてリセット後に自動的に有効化可能

Logic• IWDG は LSI1 と LSI2 からクロック供給

LSI2Logic• 製品が STOP モードにある場合には
IWDG_STOP オプションビット経由

LSI1• IWDG カウントダウンは停止可能：• 製品が STANDBY モードにある場合には
IWDG_STDBY オプションビット経由• CPU1 がデバッグモードにある場合にはDBG_IWDG_STOP 経由

STM32WB マイクロコントローラには独立型ウォッチドッグ（IWDG）が含まれています。
IWDG は、LSI1 または LSI2 からクロック供給が可能です。
IWDG はどちらか有効化されている方を使用します。
LSI が両方とも無効化されている場合に IWDG が有効化されると、LSI1 が強制的にオンとなります。
LSI1 と LSI2 は両方とも低電力 32kHz RC オシレータであることに注意してください。
IWDG は、通常、CPU1（Cortex® M4）によって使用されます。
オプションバイトを通じて、ハードウェアスタートまたはソフトウェアスタートが選択可能です。
CPU1 がデバッグ（コア停止）モードであるときにウォッチドッグが停止するか否かを選択可能です。
最後に、STOP モードまたは STANDBY モードにおける動作の制御も可能です。
タイムアウトが発生するか、許されたウィンドウ外で IWDG がリフレッシュされた場合には、IWDG が RCC ブロックによって処理されるシステムリセットを行います。

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 bit がリセットされるのを待つ必要があります。


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

IWDG 設定とリセットフラグ

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

9低電力モード
モード

説明

RUN

有効*

低電力 RUN有効*SLEEP有効*低電力 SLEEP有効*

STOP0/STOP1/STOP2

有効*STANDBY

有効*

SHUTDOWN

動作せず。SHUTDOWN 終了時に IWDG がリセット。
* IWDG 有効時

IWDG は、SHUTDOWN モードを除くすべてのモードでアクティブにできます。
STM32WB マイクロコントローラが SHUTDOWN モードを終了
すると、IWDG レジスタは初期値にセットされます。

10