JADU157A December 2025 – June 2026 MSPM33C321A , MSPM33C321A-Q1
デバイス リセットが発生した後、リセット処理中に発生した最も低レベルのリセット要因がハードウェアに記録されます。これにより、アプリケーション ソフトウェアはリセットの理由を確認し、アプリケーション起動時に適切な処理を実行できます。最小レベルのリセット要因は、SYSCTL のリセット要因レジスタの 5 ビット フィールドにエンコードされます。リセット要因レジスタの内容は、読み取り時に常にクリアされます。また、読み取り後に新たなリセットが発生していない場合、その後の読み取りではゼロを返します。リセット要因エンコーディングを、表 2-12に示します。
| リセット | デバイス モジュール リセット | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| リセット レベル | 要因 ID | リセットの原因 | NRST/SWD の無効化 | SHUTDN STOREx | コア レギュレータ | デバッグ サブシステム | RTC、LFXT、LFCLK の状態 | SRAM | BCR の実行 | IOMUX | EVENT、DMA、FLASHCTL、SYSCTL | ペリフェラル | CPU | |
| 0x00 | 0 | 最後の読み取り以降にリセットなし | ||||||||||||
| POR | 0x01 | 1 | VDD < POR — 違反 | R | R | R | R | R | R | R | R | R | R | R |
| PMU トリム パリティ障害 | ||||||||||||||
| SHUTDNSTOREx パリティ障害 (存在する場合) | ||||||||||||||
| 0x02 | 2 | NRST ピンのリセット (1 秒超) | R | R | R | R | R | R | R | R | R | R | R | |
| IWDT | R | R | R | R | R | R | R | R | R | R | R | |||
| 0x03 | 3 | ソフトウェア トリガ POR | R | R | R | R | R | R | R | R | R | R | R | |
| BOR | 0x04 | 4 | VDD < BOR — 違反 | R | R | R | R | R | R | R | R | R | ||
| 0x05 | 5 | SHUTDOWN からの復帰 (存在する場合) | R | R | R | R | R | R(1) | R | R | R | |||
| 0x06 | 6 | 予約済み | ||||||||||||
| 0x07 | 7 | 予約済み | ||||||||||||
| BOOTRST | 0x08 | 8 | 予約済み | |||||||||||
| 0x09 | 9 | 致命的なクロック障害 | R | R | R | R | R | R | R | |||||
| 0x0A | 10 | 予約済み | ||||||||||||
| 0x0B | 11 | 予約済み | ||||||||||||
| 0x0C | 12 | NRST ピンのリセット (1 秒未満) | R | R | R(2) | R | R | R | ||||||
| 0x0D | 13 | ソフトウェア トリガ BOOTRST | R | R | R(2) | R | R | R | ||||||
| 0x0E | 14 | WWDT0 違反 | R | R | R(2) | R | R | R | ||||||
| 0x0F | 15 | 予約済み | ||||||||||||
| SYSRST | 0x10 | 16 | BSL 終了 (存在する場合) | R | R(2) | R(3) | R | R | ||||||
| 0x11 | 17 | BSL エントリ (存在する場合) | R | R(2) | R(3) | R | R | |||||||
| 0x12 | 18 | 予約済み | ||||||||||||
| 0x13 | 19 | WWDT1 違反 | R(2) | R(3) | R | R | ||||||||
| 0x14 | 20 | フラッシュの修正不可能な ECC エラー | R(2) | R(3) | R | R | ||||||||
| 0x15 | 21 | CPU ロックアップ違反 | R(2) | R(3) | R | R | ||||||||
| 0x16 | 22 | 予約済み | ||||||||||||
| 0x17 | 23 | 予約済み | ||||||||||||
| 0x18 | 24 | 予約済み | ||||||||||||
| 0x19 | 25 | 予約済み | ||||||||||||
| 0x1A | 26 | デバッグトリガ SYSRST | R(2) | R(3) | R | R | ||||||||
| 0x1B | 27 | ソフトウェア トリガ SYSRST | R(2) | R(3) | R | R | ||||||||
| CPURST | 0x1C | 28 | デバッグトリガ CPURST | R | ||||||||||
| 0x1D | 29 | ソフトウェア トリガ CPURST | R | |||||||||||
| 0x1E | 30 | 予約済み | ||||||||||||
| 0x1F | 31 | 予約済み | ||||||||||||
2 つのリセットの原因が同時に発生した場合、最も小さい原因のリセット ID 値が優先され、報告されます。たとえば、WWDT0 違反 (原因 0x0E) と、VDD < BOR 違反 (原因 0x04) が同時に発生した場合、報告されるリセットの原因は BOR 違反 (原因 0x04) となります。これはこれがより下位レベルのリセットであり、デバイス状態のより広範な要素をクリアするためです。
リセット要因エンコーディングにより、アプリケーションの起動時に簡単なソフトウェア処理が可能になります。リセット要因の値は、アプリケーション ソフトウェアで読み出すことができ、特定の値の範囲内であることをテストすることで、次のことが発生したかどうかを確認できます。
次の例は、リセット後にアプリケーションを起動す際に、リセット要因をテストして特定のアクションを実行するための方法を示しています。
// Read reset cause into SRAM variable
uint8_t cause = RESETCAUSE;
// Handle device re-configuration based on reset cause level
if (cause!=0)
{
if (cause<0x04)
{
// NRST/SWD disable state was lost
// SHUTDNSTOREx memory state was lost
// PMU/VCORE domain state was lost
// RTC/LFXT/LFCLK state was lost
}
if (cause<0x0C)
{
// RTC/LFXT/LFCLK state was lost
}
if (cause<0x1C)
{
// The peripherals were reset
}
}