STM32G4 - GPIO
汎用入出力インタフェース

1.0版

STM32汎用I/Oインタフェースのプレゼンテーションにようこそ。汎
用入出力インタフェース、およびそれがSTM32マイクロコントロー
ラの周辺環境に対するコネクティビティを可能とする方法について説明を行います。

1

概要

2

• 外部環境との相互作用に対するインタフェースを提供• 完全に設定可能• 割込みとウェイクアップの機能

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

マイクロコントローラを直接ウェイクアップ•

広範囲な電源電圧に対応•

AHB2への直接接続により高速なトグル反応が可能

STM32製品の汎用I/Oピンは、外部環境とのインタフェースを提供します。この設定可能なインタフェースは、MCUとその他すべての搭載ペリフェラルによって、デジタルとアナログの両方の信号を用いたインタフェースに使用されます。
アプリケーション側の利点の中には、広範囲なI/O電源電圧対応や、MCUを低電力モードから外部的にウェイクアップ可能であることなどが含まれます。

2

主な機能

3

• 最大6x16+11=107本(1)のI/Oピンの双方向動作• 最大7つのGPIOポートで共有• GPIOA~GPIOF、ポートあたり16本のI/Oピン• GPIOGは11本のI/Oピン• すべて外部割り込みとウェイクアップの機能に対応• BSRRレジスタとBRRレジスタを用いたビット単位のセット／リセット操作• 各I/Oピンを独立に設定可能• GPIOレジスタ・インタフェースはAHB2バスに直接接続• ほとんどのI/Oピンは5V耐圧(1) : 製品番号とパッケージによる汎用のI/Oは、入出力の双方向操作を、各I/Oピンに対して独立して設定が可能です。GPIOAからGPIOGという名称で最大7個のポートで共有されます。それぞれのポートに最大16本の、GPIOGは11個のI/Oピンがあります。
I/Oポートは、BSSRRレジスタとBRRレジスタを用いたビット単位のセット／リセット操作に対応しています。
I/OポートはAHB2バスに直接接続され、2クロックサイクルごとに出力変更が可能な高速I/Oピンの操作が可能です。
ほとんどのI/Oピンは5V耐圧です。

3

動作モード

4

柔軟性の高い動作モードによりアプリケーションのニーズに最適対応• 入力モード• フローティング(プル抵抗なし)、プルアップ/ダウン付き入力、オプション･プルダウン付きアナログ入力• 出力モード• プッシュプル、オプションのプルアップ/ダウン付きオープン･ドレイン• 出力時のスルーレートを設定可能、最大100MHz• オルタネート機能モード• I/Oポート設定を固定するロック機構（GPIOx_LCKR）

汎用I/Oピンは、いくつかの動作モードに設定可能です。
I/Oピンは、フローティング入力モード、内部プルアップ／プルダウ
ン抵抗付きの入力モード、またはアナログ入力に設定可能です。
さらに、I/Oピンは、内部プルアップ/プルダウン抵抗付きのプッシュプル出力モード、またはオープンドレイン出力モードに設定することもできます。
最高速度とI/Oスイッチングによるエミッションのバランスや、アプリケーションのEMI性能を調整するために、それぞれのI/Oピンに対して、スルーレートは4種類の異なるレンジから選択可能です。
I/Oピンは、その他の搭載ペリフェラルが外部環境とインタフェースするためにも使用されます。オルタネート機能レジスタは、この場合のペリフェラルの設定選択に用いられます。
I/Oポートの設定をロックして、アプリケーションの堅牢性を向上することができます。一旦、ロックレジスタに正しい書込みシーケンスを適用して設定をロックすると、I/Oピンの設定は次のリセットまで修正できなくなります。

4オルタネート機能

5

I/Oピンの構造はインタフェースとして他の搭載ペリフェラルから使用• 複数の搭載ペリフェラルが同じI/Oピンを共有• USARTx_TX、TIMx_CHx、SPIx_MISO、EVENTOUTなど• オルタネート機能（AF）マルチプレクサがI/Oピンに接続されるペリフェラルを選択• ある特定のI/Oピンには、一度に1つのオルタネート機能のみ接続可能• GPIOx_AFRLレジスタとGPIOx_AFRHレジスタにより設定可能（x=A…G）

AF0
AF1
AF2ピンx（0…15）

AF15

外部環境とのインタフェースのため、USART、タイマ、SPIなど複数の内蔵ペリフェラルが同じI/Oピンを共有します。
1本のI/Oピンに対して一度に接続されるペリフェラルは1つのみで、ペリフェラルはオルタネート機能マルチプレクサを通じて設定されます。また、この選択は、GPIOx_AFRLレジスタとGPIOx_AFRLレジスタを通じて、アプリケーションの動作中に変更可能です。

5I/Oピン設定
モード(i)[1:0]

0b01

0b10

0b00

0b11

OTYPE(i)PUPD(i)[1:0]00001
111000011
1
1xxxxxxxx

0b00
0b01
0b10
0b11
0b00
0b01
0b10
0b11
0b00
0b01
0b10
0b11
0b00
0b01
0b10
0b11
0b00
0b01
0b10
0b11
0b00
0b01
0b10
0b11

6I/O設定汎用出力

プッシュプル
プッシュプル + プルアップ
プッシュプル + プルダウン

予約済み
汎用出力

オープンドレイン
オープンドレイン + プルアップ
オープンドレイン + プルダウン
予約済み（GP出力オープンドレイン）
オルタネート機能
プッシュプル
プッシュプル + プルアップ
プッシュプル + プルダウン
予約済み
オルタネート機能
オープンドレインオープンドレイン + プルアップ
オープンドレイン + プルダウン
予約済み
入力
フローティング
プルアップ
プルダウン
予約済み（入力フローティング）
入力/出力
アナログ
予約済み
入力/出力
アナログ、プルダウン
予約済み

任意のIOピンの設定は以下の4つのレジスタを通して構成されます:GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、
GPIOx_PUPDR。
• レジスタGPIOx_MODERは、IOピンの機能を選択します:デジタ
ル入力、デジタル出力、デジタルオルタネート機能、アナログ。
• レジスタGPIOx_OTYPERはピンが出力設定の時にオープンドレインかプッシュプルを選択します。
• レジスタGPIOx_OSPEEDRは、ピンが送受信する信号の速度を選択します。
• レジスタGPIOx_PUPDRは、プルアップ抵抗とプルダウン抵抗を有効にします。

6

I/Oピンに関する特筆事項

7

リセット時はデバッグ･ピンのみがAFモードを維持• リセット中とリセット後は、オルタネート機能は有効ではない• I/Oポートのデフォルト状態は入力モード• リセット中およびリセット後の消費電流を節約（シュミット･トリガはオフ）• オルタネート機能のプルアップ／プルダウン設定では、JTAG/SWDデバッグ･ピンのみが有効に維持• PA13: JTMS/SWDIO• PA14: JTCK/SWCLK• PA15: JTDI
• PB3: JTDO
• PB4: NJTRST

リセット中およびリセット後は、オルタネート機能はアクティブではなく、オルタネート機能モードではデバッグピンのみを使用できます。
このスライドでは、オルタネート機能の設定モードが残っている
JTAG/シリアルワイヤデバッグピンを示します。

7

HSE/LSEピンに関する特筆事項

8• オシレータピンを標準I/Oピンとして使用可能• オシレータがOFFされた場合、関連ピンはI/Oピンとして動作• HSE/LSEの両方に対して有効• この状態がリセット後のデフォルト• 外部クロック･モードが使用される場合、2番目のピンはI/Oピンとして動作• OSC_IN、OSC32_INがクロック･ソースとして使用• OSC_OUT、OSC32_OUTは標準I/Oピン

負荷容量外部ソース

外部オシレータがOFFの場合、このオシレータに関連するピンは標準I/Oピンとして使用できます。これは、デバイスリセット後のデフォルト状態となります。
水晶発振回路の代わりに外部クロックソースが使用されている
場合、OSC_INピンのみがクロックに用いられ、OSC_OUTピンは標準I/Oピンとして使用できます。

8

複数電源I/Oピン

9

ピンアウト･テーブルで使用される凡例/略称• FT:5VトレラントI/O、TT:3.6VトレラントI/O• TTまたはFTI/Oのオプション:
略称サフィックス

説明_a

VDDAが提供するアナログ･スイッチ機能付きI/O_c

I/O、USB Type-C™ PD対応

_d

I/O、USB Type-C™ PDデッドバッテリ機能_f

I/O、高速モード+対応

このスライドでは、STM32G4データシートに表示されるピンアウト
テーブルで使用される凡例と略称について説明します。
FTは5Vトレラント(耐圧)を意味し、TTは3Vトレラント(耐圧)を意味します。
サフィックスは、さらにIOピンを記述します:• _aはアナログを意味します• _cはUSBType-Cパワーデリバリが可能であることを意味します• _dはUSBType-CPDデッドバッテリー機能を意味します• _fは、高速モードプラス対応を意味します
たとえば、FT_faピンは5Vトレラントで、アナログ設定と高速モードプラスのデジタル設定をサポートします。

9低電力モード

10I/O説明

モード
RUN
SLEEP

低電力RUN
有効低電力SLEEP
STOP0
STOP1
STANDBY

I/Oは、STANDBYモードで内部プルアップ、プルダウン、またはフローティングの設定可能

SHUTDOWNSHUTDOWNモードでI/Oを内部プルアップ、プルダウン、またはフローティング･モードで設定可能
SHUTDOWNモードを終了すると設定が失われる

リセット

MCUのリセット中は強制的にアナログ入力モードとなる

STANDBYとSHUTDOWNを除くすべてのモードでI/Oピンは有効に維持され、使用可能な設定は、内部プルアップ／プルダウン抵
抗付きの入力とフローティング入力のみとなります。
SHUTDOWNモードを終了すると、I/O設定は失われます。
MCUのリセット中には、I/Oピンは強制的にアナログ入力モードとなります。

10

I/Oピンに関する特筆事項

11• UCPD DBCCライン（PA9/PA10）の電圧レベルにより、CCライン（PB6/PB4）のプルダウンが可能• デッドバッテリ・アプリケーションの場合:SWDのみが使用可能• PB4のプルダウンのため、JTAGを使用することは出来ない• デッドバッテリ・アプリケーションでは、DBCC2ピン（PA10）をローにするか、またはPB4に外部プルアップを接続してJTAGが利用可能• CCラインのプルダウン効果は、PWR_CR3レジスタのビットUCPD1_DBDIS（USBType-C™およびパワーデリバリ･デッドバッテリの無効化）を使用して削除可能

マイクロコントローラの電源が入っていない場合、かつUCPD_DBCC1ピンとUCPD_DBCC2ピンがそれぞれUCPD_CC1ピ
ンとUCPD_CC2ピンに接続されている場合、マイクロコントローラは「デッドバッテリ」Rdプルダウンを示します。
JTAG TRSTとUCPD_CC2はPB4ピン上で多重化されているため、JTAGとデッドバッテリ信号を同時に使用することはできません。
デッドバッテリではないアプリケーションでは、PB4の状態がローに引き下げられていない場合にJTAGが利用可能です。これは、DBCC2ピンをプルダウンするか、PB4に外部プルアップを接続することによって実現できます。
ソフトウェアは、PWR_CR3レジスタにUCPD1_DBDISビットを設定することで、デッドバッテリを無効にすることができます。

11

I/Oピンに関する特筆事項

12+1 I/O : boot0がオプションビットに基づいている場合• PB8ピンは、IOとしても使用することが可能:• BOOT0ピンまたは標準GPIOとして• nSWBOOT0オプション・ビットに依存• nSWBOOT0=0:Boot0はオプションビットnBOOT0から取得 PB8が利用可能• nSWBOOT0=1:Boot0はピンから取得 PB8は利用不可• デフォルトで、PB8が使用可能になるようnSWBOOT0オプション・ビットの初期値は0

PB8は、ブートピン（BOOT0）またはGPIOとして使用できます。
ユーザー・オプション・バイトのnSWBOOT0ビットに応じて、入力モードからアナログ入力モードに切り替わります。
•オプション・バイトの読み込みフェーズの後(nSWBOOT0=1)•nSWBOOT0=0の場合、リセット後したがって、PB8_BOOT0は専用のピンではありません。リセット
時にブートモードを選択するために使用でき、実行時に汎用I/Oとして使用可能です。
PB8 GPIOは、nSWBOOT0オプションビットの初期値が0であるため、デフォルトで使用可能です。

12

I/Oピンに関する特筆事項

13

PG10と共有のNRST• PG10ピンは、以下として使用可能:• NRSTまたは標準のGPIOとして• NRST_MODEオプションビットに依存• NRST_MODEオプション･ビットの初期値は、入力/出力リセット･ピンNRST（レガシー）に対応する“3”になる• そのため、PG10はデフォルトではGPIOとして利用可能ではない

PG10は、リセットピン(NRST)またはGPIOとして使用することができます。
ユーザー・オプション・バイトのNRST_MODEビットに応じて、それらのモードに切り替わります•入出力のリセット:電源投入時のデフォルトリセット時、またはオプション・バイトのロード後、NRST_MODE=3の時•入力のみをリセット:オプション・バイトの読み込み後、NRST_MODE=1の時•GPIO PG10モード:オプション・バイトの読み込み後、NRST_MODE=2の時
NRST_MODEオプションビットの初期値は“3”であるため、デフォルトではリセット入力/出力が使用可能です。

13

STM32L4との違い

14• STMG32L4と同じだが、1つ違いがある• STM32L4では、GPIOがアナログ･モードで設定されている場合、プルアップ/プルダウンはハードウェ
アによって無効• STM32G4では、GPIOがアナログ･モードで設定されている場合、プルダウンを有効/無効にすることが可能になるため、組み合わせPUPD=0b10は予約不要

MODE(i)[1:0] OTYPE(i) PUPD(i)[1:0]0b11xx0b00
0b01x0b10x0b11

I/O設定
入力/出力
予約済みSTM32L4:入力/出力

STM32G4:入力/出力

アナログ
予約済み
アナログ、プルダウン予約済み• プルアップはハードウェアによって無効のまま• 安全上の理由:外部アナログ回線切断

次の表は、STM32L4マイクロコントローラとの違いを示しています。
プルダウン付きアナログはSTM32G4に対応する設定ですが、STM32L4ではサポートされていません。
STM32G4はプルダウンなしのアナログモードもサポートしています。
このアナログ+プルダウン機能の目的は、外部アナログ回線が切断されたときに、フローティング状態を回避するため、強制的にピンをローレベルにすることです。

14

参照

15

• 詳細は、以下を参照してください。:• STM32G4マイクロコントローラ･リファレンス･マニュアル• このペリフェラルに関連するペリフェラルのトレーニング• USB Type-C™パワーデリバリ（UCPD）• デバッグ（DBG）

システムコンフィグレーションモジュールの詳細については、STM32G4マイクロコントローラのリファレンスマニュアルを参照してください。
必要に応じて、これらのトレーニングを参照してください。
• USB Type-Cパワーデリバリ（UCPD）• デバッグ（DBG）

15