STM32WL5 - EXTI

拡張割込み/イベントコントローラ
レビジョン 1.0

STM32WL5 拡張割込み/イベントコントローラ（EXTI）のプレゼン
テーションへようこそ。

1

概要• 47 件のイベント/割込みライン• 23 件の設定可能なイベント• 24 件のダイレクトイベント• 独立マスクと設定• STM32WL5 の両方の CPU に対する独立したウェイクアップ

アプリケーション側の利点•

外部と内部のウェイクアップイベン
トと割込みを管理•設定可能なイベントのペンディン
グフラグを提供
2

拡張割込み/イベントコントローラ（EXTI）は、47 件の独立したイベントを提供します。これらは設定可能なイベントとダイレクトイベントの 2 つのカテゴリに分類されます。
アプリケーションは、外部通信またはリクエストによって各 CPUを別々にウェイクアップする STM32WL5 の機能を利用して、低消費電力モードをよりスマートに使用できます。

2

EXTI のブロック図
AHB-Lite

制御レジスタおよびステータス･レジスタ
sys_wakeup
c1_wakeup

PWR

c2_wakeup

割込みフラグのない
ペリフェラル

割込みフラグのある
ペリフェラルCortex®-M4

設定可能なイベント

EVG
イベントトリガダイレクトイベント

イベント

マスキン
グ

rxev イベント入力

NVIC

Cortex®-M0+

EVG

rxev イベント入力

EXTI
NVIC

EVG：イベントジェネレータ

3

拡張割込み/イベントコントローラのブロック図を示します。
割込み機能はないけれどもパルスの生成が可能なペリフェラル
では、設定可能なイベントが生成されます。EXTI コントローラは、割込みの検出、マスキング、およびソフトウェアトリガを提供します。
割込みリクエストに対応したペリフェラルでは、ダイレクトイベントが生成されます。この場合、EXTI コントローラを使用して、CPUに対するイベントが生成され、システムウェイクアップがリクエストされます。
拡張割込みとイベントコントローラは、設定可能なイベント 1 つごとに、両方の CPU に対して割込みを 1 つずつ発行します。CPUのウェイクアップは個別に発行されるので、両方のプロセッサを別々にウェイクアップできます。

3

主な機能• STOP モードからのウェイクアップ、割込み、およびイベントの生成• 独立した割込みとイベントマスク• 設定可能なイベント• アクティブエッジの選択• 単一のペンディングフラグ• ソフトウェアからトリガ可能• リンク先：• ダイレクトイベント• 関連ペリフェラルから提供されるステータスフラグ• リンク先：• RTC、TAMP、I2C、USART、LPUART、LPTIM、
Sub-GHz 無線、IPCC HSEM、Flash、およびDEBUG• GPIO、PVD、PVM、COMP、CPU SEV、およびSub-GHz 無線ビジー

4拡張割込みとイベントコントローラは、割込みとイベントを生成できるほか、STOP モードからプロセッサをウェイクアップできます。
設定可能なイベントは、GPIO、PVD、PVM、コンパレータCOMP、CPU 送信イベント、および Sub-GHz 無線ビジーからの外部割込みにリンクしています。
ダイレクトイベントは、RTC、TAMP、I2C、USARTS、LPUART、LPTIM、Sub-GHz 無線、IPCC、HSEM、Flash、およびDEBUG にリンクしています。

4Cortex®-m のイベントと割込みの比較
Cortex®-MEVGRxEV

イベント入力IRQx

NVIC

割込みリクエストイベン
ト
INSTR_N
WFE
INSTR_N+1WFE の実行

INSTR_N+1 の実行

INSTR_NWFIINSTR_N+1

割込みサービスルーチン
...
...
...
BX LR

WFI の実行

INSTR_N+1 の実行tt
スレッド

RxEV

ZZZスレッド

スレッド

ZZZ

ISR

スレッド

IRQx

• イベント生成可能なペリフェラル：• GPIO EXTI、RTC、TAMP、COMP、および CPU SEV
5Cortex®-M は、低消費電力状態に移行する次の 2 種類の方法をサポートしています。
1. WFE（Wait For Event）命令の実行
2. WFI（Wait For Interrupt）命令の実行

左側のシーケンスに示すように、WFE の場合、ウェイクアップイ
ベント後に実行される最初の命令は、次に続く命令 INSTR_N+1です。
WFI を実装することにより、有効な割込みリクエストを受け取ったプロセッサは、割込みサービスルーチンにジャンプします。
割込みリクエストは WFE の終了条件ですが、RXEV で受け取ったイベントは WFI の終了条件ではありません。
STM32WL5 シリーズでは、このスライドに挙げているペリフェラルでのみイベントを生成できます。

5

割込みの生成• 設定可能イベントを割込みリクエストとして使用
立ち上がりトリガ選択レジスタ（EXTI_RTSR1[y]）立ち下がりトリガ選択レジスタ（EXTI_FTSR1[y]）エッジ･ペンディング･レジス
タ（クリアするには 1 を書き込む）

設定可能なイベント
入力（y）

Cortex®-M4

非同期エッジ検出回路 & パルス発生回路

EXTI_PR1

It_exti_per(y)NVIC

ソフトウェア割込みイベント･レジスタ（EXTI_SWIER1[y]）EXTI

割込みマスクレジスタ（EXTI_IMR1/2[y]）による
EXTI CPU のウェイクアップ

6

この図は、設定可能なイベントのアクティブエッジを割込みリクエストに変換できるようにするさまざまなステージについて説明しています。
最初のステージは、2 つのレジスタである EXTI_RTSR1 とEXTI_FTSR1 で設定する非同期エッジ検出回路です。どちらのエッジも、場合によっては両方とも、選択できます。
EXTI_SWIER レジスタの該当ビットをセットすることにより、設定可能なイベントをソフトウェアでエミュレートできます。このビットは、ハードウェアによって自動的にクリアされます。
AND ゲートを使用して、CPU NVIC に対する割込みの生成をマスクまたは有効にすることができます。
最後に、NVIC に対して割込みが生成されると、EXTI_PR1 レジスタにフラグがセットされます。このフラグによって、割込みが発生した原因をソフトウェアで判定できます。
このフラグは割込みサービスルーチンによってクリアされることが想定されています。

6

CPU イベントの生成• 設定可能なイベントとダイレクトイベントを CPU イベントリクエストとして使用
Cortex®-M4立ち上がりトリガ選択レジスタ（EXTI_RTSR1[y1]）立ち下がりトリガ選択レジスタ（EXTI_FTSR1[y1]）設定可能なイベント入力（y1）

非同期エッジ検出回路 & パルス発生回路

CPU_event(y1)CPU_event(y2)ソフトウェア割込みイベント･レジスタ（EXTI_SWIER1[y1]）イベントパルス発生回路

c_event

rxev

割込みマスクレジスタ（EXTI_EMR1/2[y1]）による EXTI CPU のウェイクアップ
ダイレクト･イベ
ント入力（y2）

非同期立ち上がりエッジ検出回路およびパルス発生回路

EXTI

割込みマスクレジスタ（EXTI_EMR1/2[y2]）による
EXTI CPU のウェイクアップ

他の CPU イベント
7

この図は、設定可能なイベントのアクティブエッジを CPU イベン
トに変換できるようにするさまざまなステージについて説明しています。
設定可能なイベントとダイレクトイベントのどちらも、CPU の rxev
入力に送られるイベントを発行するように設定できます。
割込みリクエストとは異なり、CPU には固有のイベント入力があるので、すべてのイベントリクエストがまとめて論理和演算され、イベントパルス発生回路に入力されます。
イベント生成のマスクに使用されるレジスタは EXTI_EMR であり、割込み生成のマスクに使用されるレジスタ EXTI_IMR とは異なります。
デュアルコアの STM32WL5 マイクロコントローラには、そのCPU ごとに独立したイベント生成ロジックが搭載されています。

7

ウェイクアップイベントの生成• 設定可能なイベントとダイレクトイベントをコアとシステムに対するウェイクアップリクエス
トとして使用他のウェイクアップ

設定可能なイベント入力（y1）sys_wakeup
非同期エッジ検出回路 & パルス発生回路
CPU1 ウェイクアップ（y1）立ち上がりエッジ･ペンディン
グ･レジスタ（クリアするには1 を書き込む）

CPU1 ウェイクアップ（y2）hclk

EXTI_PR1

割込みマスクレジスタ（EXTI_IMR1/2[y1]）による EXTI CPU ウェイクアップ

c1_wakeup

フリップ･フロップ

PW
R

CPU1 イベント
CPU2 ウェイクアップ（y1）

イベントマスクレジスタ（EXTI_EMR1/2[y1]）による EXTI CPU ウェイクアップ

ダイレクト･イベント
入力（y2）

CPU2 ウェイクアップ（y2）

非同期立ち上がりエッジ検出回路およびパルス発生回路
割込みマスクレジスタ（EXTI_IMR1/2[y2]）による EXTI CPU ウェイクアップ
イベントマスクレジスタ（EXTI_EMR1/2[y2]）による EXTI CPU ウェイクアップ

c2_wakeup

フリップ･フロップ

hclk
CPU2 イベント

EXTI

8

EXTI ブロックによって生成される CPU ウェイクアップ信号は、PWR ブ
ロックに接続され、システムと CPU サブシステムバスクロックのウェイクアップに使用されます。
設定可能なイベントとダイレクトイベントはどちらも、ウェイクアップをリクエストできます。
非同期エッジ検出回路でアクティブエッジが検出されるとウェイクアップが発生します。
その結果、ウェイクアップのソースが設定可能なイベントであれば、ソフトウェアによって EXTI_PR1 レジスタのフラグがクリアされてウェイクアップリクエストが無効になることが想定されます。ダイレクトイベントの場合、このフラグはペリフェラル･ユニットにあります。
これらのフラグによって、ソフトウェアでウェイクアップの原因を把握できます。
割込みまたはイベントのどちらかの生成が有効になると、ウェイクアップ指示がアサートされます。EXTI_IMR レジスタと EXTI_EMR レジスタの接続先である OR ゲートの動作を確認してください。
すべての CPU ウェイクアップ信号の論理和を計算し、その結果とイベントリクエストとの論理和を計算します。
sys_wakeup は非同期であり、クロックをウェイクアップします。hclk が動作していれば、同期 c1_wakeup と同期 c2_wakeup が生成されて、それぞれの CPU をウェイクアップします。

8ダイレクトイベントによる論理 CPU ウェイクアップのトリガ• ダイレクトイベントには関連する EXTI 割込みがない• EXTI はシステムクロックと CPU サブシステムのクロックのみをウェイクアップし、CPU ウェイクアップイベントを生成できる• ダイレクトウェイクアップイベントに関連するペリフェラル同期割込みによって CPU がウェイクアップする• EXTI のダイレクトイベントは CPU イベントを生成できる

9ダイレクトイベントは、EXTI コントローラを通じて CPU イベントを生成し、システムウェイクアップをトリガできます。
ダイレクトイベントのアクティブエッジは、立ち上がりエッジです。
ダイレクトイベントは、NVIC への専用ラインがあることから、EXTI コントローラによる割込みリクエストのアサートを必要としません。
それ以外の場合、これまでのスライドで説明したものと同じ回路が実装されます。ダイレクトイベントは、イベント生成向けと割り込み生成向けに別々にマスクできます。EXTI コントローラの割込みマスクは、ウェイクアップマスクとしてのみ使用されます。

9

関連ペリフェラル• タイマにリンクしている次のペリフェラルのトレーニングを参照• NVIC• CPU 割込みリクエストを処理• Cortex®-M4• CPU はソフトウェア例外とハードウェア例外の両方の処理に使用する例外メカニズムを実装• Cortex®-M0+• CPU はソフトウェア例外とハードウェア例外の両方の処理に使用する例外メカニズムを実装

10

拡張割込みとイベントコントローラは、Cortex-M4 CPU とCortex-M0+ CPUのネスト化されたベクタ割込みコントローラにリンクしています。詳細については、関連するプレゼンテーションを参照してください。

10

参考文書
• 詳細については、次の文書を参照：• STM32F3、F4、L4、および L4+ シリーズ向けプログラミングマニュアル PM0214• STM32WL5 MCU リファレンスマニュアル

11

詳細については、STM32F3、F4、L4、および L4+ シリーズのプ
ログラミングマニュアルおよび STM32WL5 シリーズのリファレン
スマニュアルを参照してください。

11