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

1.0 版

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

1

概要

2

• ハードウェアまたはソフトウェアの障害による誤動作を検出して解決するために使用• 期待されるタイムウィンドウ内でリフレッシュされない場合にシステムリセットを生成• メインクロックに障害が発生した場合でも常にアクティブ• 早期割込みを生成• 一度有効化すると無効にできず、リフレッシュする必要がある

アプリケーション側の利点• メインアプリケーション外の完全に独立した処理• ハードウェアまたはソフトウェアの選択可能な起動• STANDBY モードや STOP モードで選択可能な低電力凍結

独立型ウォッチドッグは、ハードウェアまたはソフトウェアの障害による誤動作を検出して解決するために使用されます。
これによって、期待されるタイムウィンドウ内でリフレッシュされない場合にリセットシーケンスが生成されます。
早期割込みも生成できます。
クロックが独立型の 32-kHz ロースピード内部 RC オシレータ（LSI）であるため、メインクロックに障害が発生しても動作を継続します。
アプリケーションの主なメリットの 1 つとして、メインクロックとは独立して実行できる点があります。

2

主な機能

3

• IWDG の主な機能• 187µs～131秒までのプログラム可能なタイムアウト範囲• プログラム可能なタイムウィンドウの幅• 独立型 RC オシレータ（LSI）からのクロック供給• 次の場合にリセットを生成：• タイムアウト値に達した場合• リフレッシュがウィンドウ外で発生した場合• プログラム可能な位置での早期割込み生成• デバッグモード、STOP モード、STANDBY モードで停止可能• タイムアウト値 131秒で自動的に有効になるよう設定可能

独立型ウォッチドッグには、187マイクロ秒～131秒の幅広いタイムアウト値があります。
32-kHz RC オシレータによってクロック供給され、独立型ウォッチドッグが有効である場合は無効にできません。
プログラムされたタイムアウト値が経過した場合や、プログラムされたタイムウィンドウ外でウォッチドッグのリフレッシュが発生した場合にリセットが生成されます。
また、IWDG はリセットが発生するまでのプログラム可能な位置で早期割込みを生成します。

システムリセット後に、独立型ウォッチドッグを自動的に有効にできます。この場合、デフォルトのタイムアウト値は 131秒に設定されます。
デバッグモード、STOP モード、STANDBY モードでの独立型ウォッチドッグの動作を定義できます。

3ブロック図4

APB バスCORE 電圧ドメイン

APB クロック（pclk）

プリスケーラ
レジスタ

ステータス
レジスタ

割込み
レジスタ
リロード
レジスタ

キーレジスタ

ウィンドウ
レジスタ

割込み
インタ
フェース

IWDG 割込み

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

8bit
プリスケーラ12bit ダウン
カウンタ

コンパレータロジック

IWDG ウェイクアップ
IWDG リセット

VDD 電圧ドメイン

IWDG

独立ウォッチドッグレジスタは、CORE 電圧ドメインに配置されていますが、その機能は VDD 電圧ドメインにあります。
そのため、CORE 電圧がオフになっても、独立型ウォッチドッグはカウントダウンを継続します。
次の 2 つのクロックが必要になります。
• APB クロックは、レジスタへのアクセスに必要です。
• LSI クロックは、ウォッチドッグの機能部分に必要です。
このアーキテクチャによって、独立型ウォッチドッグは STOPモードや STANDBY モードでも機能することができます。
プログラム可能な 8bit プリスケーラは、LSI オシレータ周波数を分周するために使用します。
12bit ダウンカウンタはタイムアウト値を定義します。
コンパレータロジックは、ウィンドウ機能と割込み生成に使用します。

4

ウォッチドッグの統合
STM32MP1

APB5 bus• IWDG1 および IWDG2 は Cortex®
A7 コア専用• システムリセットを生成可能

IWDG1

pclk5

iwdg1_it
iwdg1_wkup

lsi_onlsi_cklsi_onRCC

LSI

GIC

RCC

IWDG2APBENIWDG2APBLPEN• 割込みを生成可能

iwdg1_out_rst

TZ
LogicEXTI• システムをウェイクアップさせることが可能

IWDG1APBENIWDG1APBLPEN

5NRST

iwdg2_wkup
iwdg2_it

Logic

IWDG2

pclk4

iwdg2_out_rst

APB4 bus

STM32MP1 には、Cortex A7 コア専用の 2 個の独立型ウォッチドッグ（IWDG）が組み込まれています。
両方とも、ウォッチドッグクロックとしてロースピード内部オシレータを使用しています。
独立型ウォッチドッグが有効になると、ロースピード内部オシレータを強制的に有効化します。
IWDG1 は TrustZone 認識で、セキュアな APB5 バスに接続されています。
APB クロックの有効化は、RCC ブロックによって制御されます。
APB クロックは、ウォッチドッグのリフレッシュと設定に必要です。

ウェイクアップ信号は EXTI ブロックに接続されており、早期割込みが生成されるとシステムは STOP モードを終了できます。
割込み信号は、Cortex A7 コアのグローバル割込みコントローラ（GIC）に接続されています。
最後に、ウォッチドッグによって生成されるリセット信号は RCCブロックに接続されており、システムリセットを実行できます。

5

STOP、STANDBY、デバッグでの動作• CA7 が CSTOP に移行したとき、
IWDG1 または IWDG2 を停止可能

6STM32MP1
Debug options
STOP in CA7 debug (IWDG1)

APB5 bus

Freeze control (WDFZCTL)
Secure debug

pclk5
TZ

• システムが STANDBY に移行したとき、
IWDG1 または IWDG2 を停止可能• 自動的に IWDG1 または IWDG2 を起動可能（ハードウェアモード）• デバッグモードで IWDG1 または IWDG2を停止可能

Option bytes configuration

IWDG1

OTP Hardware/Software Start (IWDG1_HW)OTP Freeze Standby (IWDG1_FZ_STANDBY)OTP Freeze Stop (IWDG2_FZ_STOP)

lsi_onLSIBOOTROM Freeze
Debug options

lsi_cklsi_on
STOP in CA7 debug (IWDG2)

IWDG2Option bytes configuration
OTP Hardware Start (IWDG2_HW)OTP Freeze Standby (IWDG2_FZ_STANDBY)OTP Freeze Stop (IWDG2_FZ_STOP)

pclk4
APB4 bus

アプリケーションで、STOP モード、STANDBY モード、デバッグモードでの両ウォッチドッグの動作を制御できます。
さらに、システムリセット後にウォッチドッグを自動的に有効にできます（ハードウェアモード）。
独立型ウォッチドッグはそれぞれ、オプションバイトを使用してハードウェアやソフトウェアのモードを選択できます。
独立型ウォッチドッグはそれぞれ、Cortex A7 が CSTOP に移行した場合や、システムが STANDBY に移行した場合に停止するかどうかを定義できます。

IWDG1 には、セキュアモードにリンクされた固有のオプションがいくつかあります。
セキュアデバッグが無効であり、両方の Cortex A7 コアがデバッグモードの•場合、IWDG1 を停止できます。
セキュアデバッグが有効である場合、IWDG1 停止の動作は WDFZCTL•
ビットに依存し、次のいずれかのようになります。
•1 個以上の Cortex A7 コアがデバッグモードである場合、IWDG1は停止します。
両方のコアがデバッグモードである場合、IWDG1 は停止します。
•Cortex A7 コアのいずれかがデバッグモードである場合、IWDG2 も停止できます。
最後に、ブート ROM が実行されている場合、両方の IWDG は停止し、ブートROM でウォッチドッグ設定を変更できないようになります。

6

IWDG のリセット生成

7

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

IWDG のリセットを防ぐには、カウンタの値がタイムウィンドウ値 WIN[11:0] より小さいときにウォッチドッグをリフレッシュ

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

7

IWDG の割込み生成

8• アプリケーションで割込みが生成される位置をプログラム• ダウンカウンタ（IWDCNT）がプログラムされた閾値に達すると、ウェイクアップ信号が有効化• 割込み信号は、APB クロックが使用できるようになると有効化• 割込みはアプリケーションによってクリアされる

図に示す通り、アプリケーションで割込みが生成される位置をプログラムできます。
ダウンカウンタ（IWDCNT）がプログラムされた閾値に達すると、システムが STOP モードだった場合にシステムを STOP モードからウェイクアップさせるためにウェイクアップ信号が有効化されます。
割込み信号は、APB クロックが使用できるようになるとすぐに有効化され、CA7 がこの割込みを処理できます。
割込みサービスルーチンの終了時、アプリケーションは EWICビットに“1”を書き込んで割込みをクリアする必要があります。

8IWDG ハードウェア起動の設定

9• IWDG ハードウェア起動では、システムリセット後に IWDG が自動的に有効• カウンタが 0 に達する前にウィンドウ内で、ソフトウェアはキーレジスタ（IWDG_KR）に 0x0000 AAAA を一定間隔で書き込む必要がある（ウィンドウオプションが有効である場合）

独立型ウォッチドッグハードウェアは、デバイスのオプションバイトによって有効になります。
ハードウェアモードが有効である場合、各システムリセット後にウォッチドッグが 0xFFF を持つカウンタを自動的にロードし、カウントダウンを開始します。
リセットを防ぐために、カウンタが 0 に達する前にタイムウィンドウ内（このオプションが選択されている場合）で、キーレジスタを一定間隔でリフレッシュする必要があります。

9

IWDG ソフトウェア起動の設定

10• 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 を書き込んでカウンタをリフレッシュします。
10

IWDG 設定とリセットフラグ

11• IWDG タイムベースの設定：• LSI クロック（32kHz）からプリスケールされた IWDG タイムベース• 7 つのプリデバイダIWDG_PR レジスタで 4～1024 を選択可能（および 12bit ウォッチドッグカウンタリ
ロード値、RLR[11:0]）• 次の式を使用した IWDG タイムアウトの設定：
TIWDG = TLSI x 4 x 2 PR x (RL +1) + 2
ここでは、TLSI = 1/32000 = 31.25µs、PR と RL は IWDG レジスタのフィールド• IWDG リセットは RCC レジスタで識別可能

IWDG タイムベースは、32kHz の LSI クロックからプリスケールされます。IWDG_PR プリスケーラレジスタは、LSI クロック周波数を最大 4 分周できます。
ウォッチドッグカウンタリロード値は、IWDG_RLR レジスタに書き込まれる 12bit 値です。
独立型ウォッチドッグの時間は、LSI 周期とそのプリスケーラ、選択されたウォッチドッグカウンタリロード値に基づきます。
これは、幅広いタイムアウト値に対応しています。

製品のリセットおよびクロックコントローラ（RCC）には、リセットのソースを提供するレジスタがあることに注意してください。
このようにして、アプリケーションはリセットが独立型ウォッチドッ
グによって発生したかどうかをチェックできます。

11

低電力モード
モード

12

説明

RUN

アクティブ*

SLEEP

アクティブ*

STOP

アクティブ*

STANDBY

アクティブ**IWDG が有効である場合

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