ESP32 S3 ピンアサインについて

ESP32 S3では、ほとんどのペリフェラルの入出力を任意のGPIOに割り振れますが、一部例外もあるため、実質使えるピンをまとめました。

ストラッピング ピン(Strapping Pins)

起動時やリセット時に、ブートモード、ROMメッセージの出力、フラッシュ用のSPIの電圧の設定(1.8Vまたは3.3V)、JTAGの設定を決めるためのピンがあります。起動後は通常のIOピンとして使用可能です。

機能ピンチップ内部の弱プルアップ/ダウン設定
ブートモードGPIO0プルアップ
GPIO46プルダウン
VDD_SPIGPIO45プルダウン
JTAGGPIO3フローティング

ブートモードGPIO0GPIO46
SPIブート
(通常起動)
1X
ダウンロードブート
(書込み)
00

IO MUX / GPIO Matrix

ESP32 S3では、ペリフェラルの入出力を、任意のGPIOピンに割り振ることができるGPIO Matrixか、GPIO Matrixより高速な信号を通せるが決まったピンに割り振る必要があるIO MUXのどちらを経由して接続することになります。SPI, JTAG, UARTの様に高速で動作させたい信号線は、IO MUXを使い決まったピンを使うとよいでしょう。また、USBの様にGPIO Matrixを利用できないペリフェラルもあります。

esp32-s3_technical_reference_manual_en.pdfより抜粋

以下にピンアサインとIO MUXで各ペリフェラル毎に割り振れる機能をまとめました。非推奨の使い方になっている機能は除外しました。

ピン
番号
名称Type電源/ブートGPIO
番号
ADCRTCTOUCHUARTSPI2
(FSPI)
USBJTAGPSRAM
1GNDPGND
23V3P3.3V
3ENIHigh:on
Low:off
4IO4I/O/T4ADC1_3GPIO44
5IO5I/O/T5ADC1_4GPIO55
6IO6I/O/T6ADC1_5GPIO66
7IO7I/O/T7ADC1_6GPIO77
8IO15I/O/T15ADC2_4GPIO15U0_RTS
9IO16I/O/T16ADC2_5GPIO16U0_CTS
10IO17I/O/T17ADC2_6GPIO17U1_TXD
11IO18I/O/T18ADC2_7GPIO18U1_RXD
12IO8I/O/T8ADC1_7GPIO88
13IO19I/O/T19ADC2_8GPIO19U1_RTSD-
14IO20I/O/T20ADC2_9GPIO20U1_CTSD+
15IO3I/O/TJTAG選択
(フローティング)
3ADC1_2GPIO3
I2C_SDA1
3
16IO46I/O/Tブート選択
(プルダウン)
46
17IO9I/O/T9ADC1_8GPIO99SIO3
18IO10I/O/T10ADC1_9GPIO1010CS0
19IO11I/O/T11ADC2_0GPIO1111MOSI
20IO12I/O/T12ADC2_1GPIO1212SCK
21IO13I/O/T13ADC2_2GPIO1313MISO
22IO14I/O/T14ADC2_3GPIO1414SIO2
23IO21I/O/T21GPIO21
24IO47I/O/T47
25IO48I/O/T48
26IO45I/O/TSPI電圧選択
(プルダウン)
45
27IO0I/O/Tブート選択
(プルアップ)
0GPIO0
I2C_SCL0
28IO35I/O/T35※1
29IO36I/O/T36※1
30IO37I/O/T37※1
31IO38I/O/T38
32IO39I/O/T39TCK
33IO40I/O/T40TDO
34IO41I/O/T41TDI
35IO42I/O/T42TMS
36RXD0I/O/T44U0_RXD
37TXD0I/O/T43U0_TXD
38IO2I/O/T2ADC1_1GPIO2
I2C_SCL1
2
39IO1I/O/T1ADC1_0GPIO1
I2C_SDA0
1
40GNDPGND
41EPADPGND

I:入力
O:出力
T:ハイインピーダンス
P:電源

ほとんどのペリフェラルは、GPIO Matrixを使い任意のピンに割り振れますが、低消費電力コアつまりRTCを使ってI2Cをする場合はピンが決められていますので、この点に注意が必要です。

※1 PSRAMが内蔵されたESP32 S3 R8を使う場合(menuconfigのESP PSRAMの「Support for external, SPI-connected RAM」にチェックを入れる場合)、PSRAMが内部でIO35,36,37に接続されています(R8は「SPI RAM Config」のModeが「Octal Mode PSRAM」になるため)。PSRAMを有効にする場合はこれらのピンが使えなくなります。R4は「Quad Mode PSRAM」になるため、IO35,36,37は使えます。

SPI

SPIは、SPI0 SPI1 SPI2 SPI3の4本あります。SPI0とSPI1は内部のFLASHとPSRAM用に使われますので、基本的に使えません。実質使えるのは、SPI2とSPI3の2本のみです。

内部ブロック

ブロック図からも、GPIO Matrixでピンアサインを決めると、GPIO Matrixのブロックの分パフォーマンスが落ちることが想像できるかと思います。

SPI0とSPI1

内部のFLASHとPSRAM用に使われていますが、SUBSPIとして使用できます。

CS0はフラッシュに、CS1はPSRAMに繋がってます。

SPI2(GP-SPI2/FSPI)

SPI2は別名Fast SPIと呼ばれています。なのでFSPIと言う接頭語が機能名についています。
以下が一般的なSPIの呼び名との対応になります。

機能名一般名称備考
FSPICLKSCKクロック
FSPICS0CS0Chip Select
出力(マスター時)
入力(スレーブ時)
FSPICS1~5CS1~5Chip Select
出力(マスター時)
FSPIDMOSI/SIO0データ線0ビット目
FSPIQMISO/SIO1データ線1ビット目
FSPIWPSIO2データ線2ビット目
FSPIHDSIO3データ線3ビット目
FSPIIO4~7SIO4~7データ線4~7ビット目
FSPIDQS出力データマスク信号
(マスター時)

SPI2 CS0 ~ CS5

SPI3 CS0 ~ CS2

SPI2とSPI3について

通常のSPIのモードの他に、データ線を増やしたモードにも対応しています。SPI2,3の対応状況は下記の表の通りです。

モードコマンド
ビット数
アドレス
ビット数
データ
ビット数
SPI2SPI3
SPI1bit1bit1bit
Dual SPIDual Output Read1bit1bit2bit
Dual I/O Read1bit2bit2bit
Quad SPIQuad Output Read1bit1bit4bit
Quad I/O Read1bit4bit4bit
Octal SPIOctal Output Read1bit1bit8bit×
Octal I/O Read1bit8bit8bit×
QPI4bit4bit4bit
OPI8bit8bit8bit×

コメント

タイトルとURLをコピーしました