STM32WB- EXTI
拡張割込み／イベントコントローラ

1.0 版

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

1

概要• 44 のイベント／割込みライン• 27 の設定可能なイベント• 17 のダイレクトイベント• 独立マスクと設定

2

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

外部および内部のウェイクアッ
プイベントと割込みの管理•設定可能なイベントにペンディン
グフラグを提供• 両方の STM32WB CPU に対する独立ウェイクアップ

拡張割込み／イベントコントローラ（EXTI）からは、設定可能なイベントとダイレクトのイベントの 2 つのカテゴリに分割される、44本の独立したイベントが提供されます。
アプリケーションは、外部通信またはリクエストを通じて各 CPUを独立にウェイクアップする STM32WB の機能を活用することで、低電力モードをより賢く使用することができます。

2

EXTI ブロック図AHB Lite3

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

PWR

c2_wakeup

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

割込みフラグのあるペリフェラル

Cortex®-M4

設定可能なイベント

EVG
イベント
トリガ

イベント

rxev イベント入力

マスキング
NVIC

ダイレクトイベント

Cortex®-M0+

EVG

rxev イベント入力

EXTI
NVIC

EVG：イベント発生回路

これは、拡張割込み／イベントコントローラのブロック図です。
割込み機能は備えていないもののパルスの生成が可能である
ペリフェラルによって、設定可能なイベントが生成されます。EXTI
コントローラは割込みの検出、マスキングとソフトウェアトリガを行います。
ダイレクトイベントは、割込みリクエストに対応しているペリフェラ
ルによって生成されます。この場合、EXTI コントローラは、CPUに対するイベントの生成とシステムウェイクアップのリクエストに用いられます。
拡張割込み／イベントコントローラは、設定可能なイベント当たり1 回の割込みを両方の CPU に対して行います。両方のプロセッサが独立にウェイクアップ可能であるように、CPU ウェイクアップは個別に出されます。

3

主な機能

4

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

拡張割込み／イベントコントローラは、割込みとイベントの生成に加えて、STOP モードからのプロセッサのウェイクアップも可能です。
設定可能なイベントは、GPIO、RTC、TAMP、PVD、PVM、コンパレータ COMP、CPU 送信イベントからの外部割込みとリンクされています。
ダイレクトライベントは、I2C、USARTS、LPUART、LPTIM、USB、IPCC、HSEM、Flash、LCD、DEBUG とリンクされています。

4

Cortex®-M イベントと割込みの比較

5Cortex®-M

EVG

RxEV

イベント入力

IRQx

NVIC

イベント

割込みリクエスト

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

INSTR_NWFIINSTR_N+1

INSTR_N
WFE
INSTR_N+1
INSTR_N+1
実行

WFE
実行

INSTR_N+1
実行

WFI
実行

tt
スレッド

ZZZ

スレッド

スレッド

ZZZ

ISR

スレッド

IRQx

RxEV

• イベント生成可能ペリフェラル：• GPIO EXTI、RTC、TAMP、COMP、CPU SEVCortex®-M は、低電力状態に移行する 2 種類の方法に対応しています。

1. Wait For Event（WFE）命令の実行
2. Wait For Interrupt（WFI）命令の実行
左図のシーケンスにあるように、WFE の場合、ウェイクアッ
プイベント後に実行される最初の命令は、次に続く命令であるINSTR_N+1 です。
WFI を実装することにより、プロセッサは、有効な割込みリク
エストの受信時に割込みサービスルーチンにジャンプします。
割込みリクエストは WFE 終了条件ですが、RXEV で受信したイベントは WFI 終了条件ではないことに注意してください。
STM32WB シリーズでは、イベント生成はリストアップされているペリフェラルのみで可能です。

5

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

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

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

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

EXTI_PR1

Cortex®-M4

It_exti_per(y)NVIC

割込みマスク付き EXTI CPU
ウェイクアップレジスタ（EXTI_IMR1/2[y]）この図は、設定可能なラインのイベントのアクティブエッジを割込みリクエストに変換することを可能とするさまざまなステージを説明するためのものです。

最初のステージは、EXTI_RTSR1 と EXTI_FTSR1 の 2 つのレジスタによって設定される非同期エッジ検出回路となります。どちらのエッジも、場合によっては両方でも選択可能です。
EXTI_SWIER レジスタの対応するビットをセットすることにより、ソフトウェアが設定可能なラインのイベントのエミュレーションを行えます。このビットは、ハードウェアによって自動的にクリアされます。
AND ゲートを用いて、CPU NVIC に対する割り込みの生成をマスクしたり有効にしたりします。

最終的に、NVIC に割込みが生成されると、EXTI_PR1 レジ
スタにフラグがセットされます。ソフトウェアは、このフラグから割込みの原因の判定を行えます。
このフラグは、割込みサービスルーチンによってクリアされることが期待されています。

6

CPU イベントの生成

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

非同期エッジ検出回路 &パルス発生回路
ソフトウェア割込みイベントレジスタ（EXTI_SWIER1[y1]）ダイレクトイベント
入力 (y2)

CPU_event(y1)CPU_event(y2)

イベントパルス発生回路

c_event

rxev

割込みマスク付き EXTI
CPU ウェイクアップレジ
スタ（EXTI_EMR1/2[y1]）非同期立ち上がりエッジ検出回路 & パルス発生回路

EXTI

割込みマスク付き EXTI
CPU ウェイクアップレジ
スタ（EXTI_EMR1/2[y2]）その他のCPU イベント

この図は、設定可能なラインのイベントのアクティブエッジをプロセッサイベントに変換することを可能とするさまざまなステージを説明するためのものです。

設定可能なイベントとダイレクトイベントのどちらも、CPU へのイベントをその rxev 入力に向けて発行するように設定可能です。
割込みリクエストとは異なり、CPU には独自のイベント入力があるため、すべてのイベントリクエストは、イベントパルス発生回路に入る前にまとめて論理和が取られます。
イベント生成のマスクに用いられるレジスタは、割り込み生成のマスクに用いられるものとは異なります。すなわち、
EXTI_IMR ではなく EXTI_EMR が用いられます。
デュアルコア STM32WB マイクロコントローラには、それぞれの CPU に独立したイベント生成ロジックが搭載されています。

7

ウェイクアップイベントの生成

8• コアおよびシステムウェイクアップリクエストとして、設定可能なイベントとダイレクトイベントを使用
その他のウェイクアップ

設定可能なイベント
入力 (y1)

sys_wakeup

非同期エッジ検出回路 &パルス発生回路
CPU1 ウェイクアップ（y1）立ち上がりエッジペンディングレジスタ(クリアするには 1 を書き込む)

CPU1 ウェイクアップ（y2）ダイレクトイベント
入力（y2）

c1_wakeup

hclk

EXTI_PR1

割込みマスク付き EXTI CPU ウェイク
アップレジスタ（EXTI_IMR1/2[y1]）イベントマスク付き EXTI CPU ウェイク
アップレジスタ（EXTI_EMR1/2[y1]）

フリップ
フロップ

P
W
R

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

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

フリップ
フロップ

c2_wakeup

hclk
CPU2 イベント

割込みマスク付き EXTI CPU ウェイク
アップレジスタ（EXTI_IMR1/2[y2]）イベントマスク付き EXTI CPU ウェイクアップレジスタ（EXTI_EMR1/2[y2]）

EXTI

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

8ダイレクトイベントのトリガロジック、CPU ウェイクアップ

9• ダイレクトイベントには関連する EXTI 割込みがありません• EXTI はシステムクロックと CPU サブシステムクロックをウェイクアップするだけで、CPU ウェイクアップイベントを生成することができます。
• ダイレクトウェイクアップイベントに関連するペリフェラル同期割込みは、CPU をウェイクアップします。

• EXTI のダイレクトイベントは CPU イベントを生成できますダイレクトイベントは、EXTI コントローラを通じて CPU イベントを生成し、システムウェイクアップをトリガすることができます。
ダイレクトイベントのアクティブエッジは、立ち上がりエッジです。
ダイレクトイベントは、NVIC に対する専用ラインがあるため、割込みリクエストのアサートに EXTI コントローラに依存しません。
そうではない場合には、前のスライドに記載されているものと同じ回路が実装されます。イベント生成と割り込み生成のために、ダイレクトイベントを個別にマスクすることができます。EXTI コン
トローラの割込みマスクは、ウェイクアップマスクとしてのみ使用されます。

9

関連ペリフェラル

10• タイマにリンクされた以下のペリフェラルに関するトレーニング教材を参照してください。
• NVIC• CPU 割込みリクエスト処理• Cortex®-M4• CPU は、ソフトウェア例外とハードウェア例外両方の処理に用いられる例外メカニズムを実装します。

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

10

参照

11

• 詳細については、以下の資料を参照してください。
• PM0214 STM32F3、F4、L4、L4+ シリーズプログラミングマニュアル• STM32WB リファレンスマニュアル

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

11