STM32G4 - EXTI
拡張割込み/イベント･コントローラ

1.0版

STM32G4拡張割込み/イベントコントローラ（EXTI）のプレゼン
テーションにようこそ。EXTIコントローラの機能を紹介します。

1

概要

2

• 42イベント/割込みライン• 28の設定可能なイベント• 14のダイレクト･イベント• 独立マスクと設定• ソフトウェアは、専用のレジスタに書込み、イベントや割込みをエミュレート可能

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

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

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

2

EXTIブロック図

3

EXTI
制御レジスタとステータス･レジスタ

APBバス
GPIOポートA

16GPIOポートB

16GPIOポートC

16GPIOポートDGPIOポートE

16

GPIOポートF16

GPIOポートG

1116

SYSCFG(EXTIマルチプレクサ)

16

設定可能なイベント

exti[15:0]

相互接続マトリクス

ウェイクアップ
割込みフラグのない
ペリフェラル

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

設定可能なペリフェラルイベント

イベント
トリガ
ダイレクトペリフェラルイベント

ペリフェラルイベント

マスキング
プロセッサイベント

PWR
Cortex®-M4
イベント入力割込みリクエスト

NVIC

これは、拡張割込み/イベントコントローラのブロック図です。
割込み機能は備えていないもののパルスの生成が可能であるペリフェラルによって、設定可能なイベントが生成されます。EXTIコ
ントローラは割込みの検出、マスキングとソフトウェアトリガを行います。
ダイレクトペリフェラルイベントは、割込みリクエストに対応しているペリフェラルによって生成されます。この場合、EXTIコントロー
ラは、CPUに対するイベントの生成とシステムウェイクアップのリクエストに用いられます。
ペリフェラルイベントとプロセッサイベントを混同しないでください。
ペリフェラルイベントは、プロセッサの注意が必要であることを示すために、ペリフェラルによって使用されます。
プロセッサイベントは、Arm CPUがイベントの待機中の低電力状態を終了するために使用するパルス信号です。

3

主な機能

4

• STOPモードからのウェイクアップ、割込み、イベントの生成• 独立した割込みとイベントのマスク• 設定可能なイベント• アクティブ･エッジ選択• 専用のペンディング･フラグ• ソフトウェアでトリガ可能• リンク先:• GPIO、PVD、RTC、タイムスタンプまたはCSS LSE、COMPx、PWM• ダイレクト･イベント• 関係ペリフェラルから提供されるステータスフラグ• リンク先:• USB、I2Cx、UARTx、USARTx、LPUART1、
LPTIM1、UCPDx

拡張割込み/イベントコントローラは、割込みとイベントの生成に加えて、STOPモードからのプロセッサのウェイクアップも可能です。
設定可能なイベントは、GPIO、PVD、RTC、タイムスタンプまたはCSS LSE、コンパレータ、PWMモジュールからの外部割込みとリンクされます。
ダイレクトイベントは、USB、I2C、UART、USART、LPUART1、LPTIM1、UCPD1とリンクされています。

4

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

5Cortex®-M4
RxEV

イベント入力

IRQx

NVIC

イベント

割込みリクエスト
割込みサービスルーチン
…
…
…
BX LR

INSTR_NWFIINSTR_N+1

INSTR_N
WFE
INSTR_N+1
WFE
実行

INSTR_N+1
実行

INSTR_N+1
実行

WFI
実行

tt
スレッド

RxEV

ZZZ

スレッド

スレッド

ZZZ

ISR

スレッド

IRQx

Cortex®-M4は、低電力状態に移行する2種類の方法に対応しています。
1. Wait For Event（WFE）命令の実行
2. Wait For Interrupt（WFI）命令の実行
左図のシーケンスにあるように、WFEの場合、ウェイクアップイベ
ント後に実行される最初の命令は、次に続く命令である
INSTR_N+1です。
WFIを実装することにより、プロセッサは、有効な割込みリクエストの受信時に割込みサービスルーチンにジャンプします。
割込みリクエストはWFE終了条件ですが、RXEVで受信したイベントはWFI終了条件ではないことに注意してください。

5

Cortex®-M4イベントと割込みの比較
割込みリクエスト
有効割込みサービスルーチン
…
…
…
BX LR

INSTR_N
WFE
INSTR_N+1

マスクされた割込み
リクエスト&&SCR[SEVONPEND]=1

INSTR_N
WFE
INSTR_N+1

INSTR_N+1
実行

WFI
実行

WFE
実行

INSTR_N+1
実行

t
スレッド

IRQx

ZZZ

ISR

6t

スレッド

スレッド

ZZZ

スレッド

IRQx

プロセッサがWFE状態のときに有効な割込み要求を受信すると、プロセッサのウェイクアップと割込みサービスルーチンの実行が発生します。
SEVONPENDと呼ばれるCortex-M4コントロールビットが1に設定されている場合、マスクされた割り込みに関連する割り込み要求を受信すると、ウェイクアップイベントが発生します。この場合、プロセッサは次の順次命令を実行します。ソフトウェアは、次の割込みを処理できるように決定する場合があります。

6

割込みの生成7• 割込みリクエストとして、設定可能なイベントを使用:
Cortex®-M4立ち上がりトリガ選択レジスタ（EXTI_RTSR[i]）立ち下がりトリガ選択レジスタ（EXTI_FTSR[i]）ペンディングレジスタ（クリアするには1を書込む）

設定可能な
ペリフェラルイベント
入力（i）

非同期式エッジ検出回路&パルスジェネレータ

EXTI_PR

IRQ

NVIC

ソフトウェア割込みイベントレジスタ(EXTI_SWIER[i])割込みマスク付きEXTI CPU
ウェイクアップレジスタ(EXTI_IMR[i])EXTI

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

7

CPUイベントの生成

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

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

CPU_イベント（i）

CPU_イベント（j）
ソフトウェア割込みイベントレジスタ

イベントパルス発生回路

プロセッサ
イベント

RxEV

（EXTI_SWIER[i]）割込みマスク付きEXTI CPU
ウェイクアップレジスタ（EXTI_EMR1[i]）ダイレクトイベント
入力（j）

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

割込みマスク付きEXTI CPU
ウェイクアップレジスタ

EXTI

他のCPUイベント（EXTI_EMR[j]）この図は、設定可能なラインのイベントのアクティブエッジをプロセッサイベントに変換することを可能とするさまざまなステージを説明するためのものです。
設定可能なイベントとダイレクトイベントのどちらも、CPUへのイベントをそのRxEV入力に向けて発行するように設定可能です。
設定可能なイベントのアクティブエッジは、EXTI_RTSRおよびEXTI_FTSRレジスタでプログラム可能ですが、直接イベントは常に立ち上がりエッジになります。
ソフトウェアは、EXTI_SWIERレジスタに書き込み、構成可能なイベントをエミュレートできます。
割込みリクエストとは異なり、CPUには独自のイベント入力があるため、すべてのイベントリクエストは、イベントパルス発生回路に入る前にまとめて論理和が取られます。
イベント生成のマスクに用いられるレジスタは、割り込み生成のマスクに用いられるものとは異なります。すなわち、EXTI_IMRではなくEXTI_EMRが用いられます。
割込み要求とは異なり、ペリフェラルイベントラインに対応するペンディングビットは設定されません。

8

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

9• コアおよびシステム･ウェイクアップ･リクエストとして、設定可能なイベントとダイレクト･イベントを使用:設定可能なイベント
入力（i）

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

立ち上がりエッジペンディングレジスタ（クリアするには1を書き込む）
EXTI_RPR

割込みマスク付きEXTI CPUウェイクアップ
レジスタ（EXTI_IMR[i]）イベントマスク付きEXTI CPUウェイクアップ
レジスタ（EXTI_EMR[i]）ダイレクトイベント
入力（j）

sys_wakeup

その他のウェイクアップ

PWR

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

割込みマスク付きEXTI CPUウェイクアップ
レジスタ（EXTI_IMR[j]）イベントマスク付きEXTI CPUウェイクアップ
レジスタ（EXTI_EMR[j]）EXTI

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

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

10• ダイレクト･イベントには関連するEXTI割込みは無い• EXTIはシステム･クロックとCPUサブシステム･クロックをウェイクアップするだけで、CPUウェイクアップ･イベントを生成することが可能• ダイレクト･ウェイクアップ･イベントに関連するペリフェラル同期割込みは、CPUをウェイクアップする• EXTIのダイレクト･イベントはCPUイベントを生成できる

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

10

EXTIラインマッピング
EXTIラインラインソース

0-15

GPIO

16
17
18

ラインタイプ

EXTIラインラインソース11

ラインタイプ

設定可能

34

UART4ウェイクアップ

PVD出力設定可能

35

UART5ウェイクアップ

ダイレクト

RTCアラームイベント

設定可能

36

LPUART1ウェイクアップ

ダイレクト

USBデバイスFS
ウェイクアップイベント

ダイレクト

37

LPTIM1ウェイクアップ

ダイレクト

38

PWM1ウェイクアップ

設定可能

ダイレクト

19

タイムスタンプまたはCSS_LSE

設定可能

39

PWM2ウェイクアップ

設定可能

20

RTCウェイクアップタイマ

設定可能

40

PWM3ウェイクアップ

設定可能

21

COMP1出力設定可能

41

PWM4ウェイクアップ

設定可能

22COMP2出力設定可能

42

I2C4ウェイクアップ

ダイレクト

23

I2C1ウェイクアップ

ダイレクト

43

UCPD1ウェイクアップ

ダイレクト

24

I2C2ウェイクアップ

ダイレクト

25

USART1ウェイクアップ

ダイレクト

26

USART2ウェイクアップ

ダイレクト

27

I2C3ウェイクアップ

ダイレクト

28

USART3ウェイクアップ

ダイレクト

29

COMP3出力設定可能

30

COMP4出力設定可能

31

COMP5出力設定可能

32

COMP6出力設定可能

33

COMP7出力設定可能

この表は、STM32G4マイクロコントローラに存在するEXTIブロックのすべての入力を示し、それぞれが設定可能なイベント入力であるかダイレクトイベント入力であるかを示します。

11

参照

12

• 詳細については、以下の資料を参照してください。:• STM32G4マイクロコントローラ･リファレンス･マニュアル• このペリフェラルに関連するペリフェラルのトレーニング• Arm Cortex®-M4コア• パワーコントロール（PWR）• システム設定（SYSCFG）• 相互接続マトリックス（IMX）

システムコンフィグレーションモジュールの詳細については、
STM32G4マイクロコントローラリファレンスマニュアルを参照してください。
必要に応じて、次のトレーニングを参照してください。:• Arm Cortex-M4コア• パワーコントロール（PWR）• システム設定（SYSCFG）• 相互接続マトリックス（IMX）

12