STM32G0 - EXTI
拡張割込み／イベント･コントローラ
レビジョン 1.0

STM32G0 拡張割込み／イベントコントローラのプレゼンテー
ションへようこそ。EXTI コントローラの機能について説明します。

1

概要• 34イベント／割込みライン• 19の設定可能なイベント• 15のダイレクト･イベント• 独立マスクと設定

2

アプリケーション側の利点• 外部と内部のウェイクアップ･イ
ベントと割込みを管理• 設定可能なイベントに対するペンディング･フラグを提供

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

2

EXTIブロック図
制御レジスタおよびステータス･レジスタ

AHB-Lite
GPIO ポート A
GPIO ポート B
GPIO ポート C
GPIO ポート D
GPIO ポート F
割込みフラグのない
ペリフェラル

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

EXTI
マル
チプレ
クサ

16

設定可能
イベント

exti[15:0]

PWR

c_wakeup

設定可能なラインのイベント

イベント
トリガ
ダイレクトラインのイベント

ペリフェラル

sys_wakeup

イベント

マスキング

Cortex®-M0+

EVG

EXTI

イベント入力NVIC

EVG：イベント発生回路

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

3

主な機能

4

• STOPモードからのウェイクアップ、割込み、およびイベントの生成• 独立した割込みとイベント･マスク• 設定可能なイベント• アクティブ･エッジの選択• ダイレクト･イベント• 専用保留フラグ• 関連ペリフェラルから提供されるステータスフラグ• ソフトウェアからトリガ可能• リンク先：• リンク先：• RTC、TAMP、I2C1、USARTx、CEC、
LPUART1、LPTIMx、LSE_CSS および UCPDx• GPIO、PVD、およびand COMPx

拡張割込みとイベントコントローラは、割込みとイベントを生成できるほか、STOP モードからプロセッサをウェイクアップできます。
設定可能なイベントは、GPIO、PVD およびコンパレータ
COMP1 と COMP2 からの外部割込みとリンクされています。
ダイレクトイベントは、RTC、タンパ、I2C1、USARTS 1 および2、CEC、LPUART1、LPTIM 1 および 2、LSE、UCPD 1 および 2 とリンクされています。

4

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

5

Cortex®-M0+

EVG

RxEV

イベント入力

IRQx

NVIC

イベント

割込みリクエスト
INSTR_NWFIINSTR_N+1

INSTR_N
WFE
INSTR_N+1
WFE
実行

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

INSTR_N+1
実行

INSTR_N+1
実行

WFI
実行

tt
スレッド

RxEV

ZZZスレッド

スレッド

ZZZ

ISR

スレッド

IRQx

Cortex®-M0+ は、低消費電力状態に移行する次の 2 種類の方法をサポートしています。
1. WFE（Wait For Event）命令の実行
2. WFI（Wait For Interrupt）命令の実行

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

5

割込みの生成6• 設定可能イベントを割込みリクエストとして使用：
Cortex®-M0+

立ち上がりトリガ選択レジスタ（EXTI_RTSR1[y]）立ち下がりトリガ選択レジスタ（EXTI_FTSR1[y]）立ち上がりエッジペンディングレジスタ（クリアするには 1 を書き込む）

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

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

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

EXTI_RPR1

It_exti_per(y)NVIC

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

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

6

CPUイベントの生成

7• 設定可能なイベントとダイレクト･イベントをCPUイベント･リクエストとして使用
Cortex®-M0+

立ち上がりトリガ選択レジスタ（EXTI_RTSR1[y1]）立ち下がりトリガ選択レジスタ（EXTI_FTSR1[y1]）設定可能なイベント
入力（y1）

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

CPU_event(y1)CPU_event(y2)

イベントパルス発生回路

c_event

rxev

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

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

EXTI

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

他の CPU イベント

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

7

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

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

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

sys_wakeup

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

PW
R

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

CPU ウェイクアップ（y2）c_wakeup

フリップフロップhclk

EXTI_RPR1

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

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

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

EXTI

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

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

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

9

GPIOマルチプレクサをSYSCFGからEXTIに移動
PA0

PA1

PB0

PB1

PB15

PC0

PC1

PC15

PD0
予約済みです。

PA15

PD1
EXTI0

予約済みです。

PD15
EXTI1予約済みです。

PF0

PF1予約済みです。

予約済みです。

予約済みです。

予約済みです。

予約済みです。

予約済みです。
予約済みです。

予約済みです。

EXTI_EXTICR0[EXTI1]

EXTI_EXTICR3[EXTI15]

予約済みです。

EXTI_EXTICR0[EXTI0]

10

EXTI15

予約済みです。

• 異なるポートで同じ番号を持つ複数のGPIOパッドを、EXTIの設定可能なイベントとして同時に選択することはできません。

STM32G0 には 5 つの IO ポートがあります。ポート A から Dは 16 ピン幅のポート、ポート F は 4 ピン幅のポートです。
GPIO ポートに関連する 16 の EXTI 設定可能イベントはそれぞれ、独立したマルチプレクサを持っています。
EXTI マルチプレクサの出力は、他の IP をトリガするためのEXTI ブロックからの出力信号として使用できます。EXTI マル
チプレクサの出力は、EXTI_IMR および EXTI_EMR レジスタで定義されたマスクとは無関係に使用できます。

10

EXTIラインのマッピング
EXTI ライン

ラインソース

ラインタイプ

GPIO

設定可能

16

PVD 出力

設定可能

17

COMP1 出力

設定可能

18

COMP2 出力

設定可能

19

RTC

ダイレクト20

予約済みです。

ダイレクト

21

TAMP

ダイレクト

22予約済みです。

ダイレクト

23

I2C1 ウェイクアップ

ダイレクト

24予約済みです。

ダイレクト

25

USART1 ウェイクアップ

ダイレクト

26

USART2 ウェイクアップ

ダイレクト

27

CEC ウェイクアップ

ダイレクト

28

LPUART1 ウェイクアッ ダイレクトプ

29

LPTIM1

ダイレクト

30

LPTIM2

ダイレクト

31

LSE_CSS

ダイレクト

32

UCPD1 ウェイクアップ ダイレクト33

UCPD2 ウェイクアップ ダイレクト

0～15

11

この表は、EXTI ブロックのすべての入力を提供し、それぞれの入力について、設定可能なイベント入力であるかダイレクトイベント入力であるかを示します。

11