ESP32 S3では、ほとんどのペリフェラルの入出力を任意のGPIOに割り振れますが、一部例外もあるため、実質使えるピンをまとめました。
ストラッピング ピン(Strapping Pins)
起動時やリセット時に、ブートモード、ROMメッセージの出力、フラッシュ用のSPIの電圧の設定(1.8Vまたは3.3V)、JTAGの設定を決めるためのピンがあります。起動後は通常のIOピンとして使用可能です。
機能 | ピン | チップ内部の弱プルアップ/ダウン設定 | |
---|---|---|---|
ブートモード | GPIO0 | プルアップ | |
GPIO46 | プルダウン | ||
VDD_SPI | GPIO45 | プルダウン | |
JTAG | GPIO3 | フローティング |
ブートモード | GPIO0 | GPIO46 |
---|---|---|
SPIブート (通常起動) | 1 | X |
ダウンロードブート (書込み) | 0 | 0 |
IO MUX / GPIO Matrix
ESP32 S3では、ペリフェラルの入出力を、任意のGPIOピンに割り振ることができるGPIO Matrixか、GPIO Matrixより高速な信号を通せるが決まったピンに割り振る必要があるIO MUXのどちらを経由して接続することになります。SPI, JTAG, UARTの様に高速で動作させたい信号線は、IO MUXを使い決まったピンを使うとよいでしょう。また、USBの様にGPIO Matrixを利用できないペリフェラルもあります。
以下にピンアサインとIO MUXで各ペリフェラル毎に割り振れる機能をまとめました。非推奨の使い方になっている機能は除外しました。
ピン 番号 | 名称 | Type | 電源/ブート | GPIO 番号 | ADC | RTC | TOUCH | UART | SPI2 (FSPI) | USB | JTAG | PSRAM |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | GND | P | GND | |||||||||
2 | 3V3 | P | 3.3V | |||||||||
3 | EN | I | High:on Low:off | |||||||||
4 | IO4 | I/O/T | 4 | ADC1_3 | GPIO4 | 4 | ||||||
5 | IO5 | I/O/T | 5 | ADC1_4 | GPIO5 | 5 | ||||||
6 | IO6 | I/O/T | 6 | ADC1_5 | GPIO6 | 6 | ||||||
7 | IO7 | I/O/T | 7 | ADC1_6 | GPIO7 | 7 | ||||||
8 | IO15 | I/O/T | 15 | ADC2_4 | GPIO15 | U0_RTS | ||||||
9 | IO16 | I/O/T | 16 | ADC2_5 | GPIO16 | U0_CTS | ||||||
10 | IO17 | I/O/T | 17 | ADC2_6 | GPIO17 | U1_TXD | ||||||
11 | IO18 | I/O/T | 18 | ADC2_7 | GPIO18 | U1_RXD | ||||||
12 | IO8 | I/O/T | 8 | ADC1_7 | GPIO8 | 8 | ||||||
13 | IO19 | I/O/T | 19 | ADC2_8 | GPIO19 | U1_RTS | D- | |||||
14 | IO20 | I/O/T | 20 | ADC2_9 | GPIO20 | U1_CTS | D+ | |||||
15 | IO3 | I/O/T | JTAG選択 (フローティング) | 3 | ADC1_2 | GPIO3 I2C_SDA1 | 3 | |||||
16 | IO46 | I/O/T | ブート選択 (プルダウン) | 46 | ||||||||
17 | IO9 | I/O/T | 9 | ADC1_8 | GPIO9 | 9 | SIO3 | |||||
18 | IO10 | I/O/T | 10 | ADC1_9 | GPIO10 | 10 | CS0 | |||||
19 | IO11 | I/O/T | 11 | ADC2_0 | GPIO11 | 11 | MOSI | |||||
20 | IO12 | I/O/T | 12 | ADC2_1 | GPIO12 | 12 | SCK | |||||
21 | IO13 | I/O/T | 13 | ADC2_2 | GPIO13 | 13 | MISO | |||||
22 | IO14 | I/O/T | 14 | ADC2_3 | GPIO14 | 14 | SIO2 | |||||
23 | IO21 | I/O/T | 21 | GPIO21 | ||||||||
24 | IO47 | I/O/T | 47 | |||||||||
25 | IO48 | I/O/T | 48 | |||||||||
26 | IO45 | I/O/T | SPI電圧選択 (プルダウン) | 45 | ||||||||
27 | IO0 | I/O/T | ブート選択 (プルアップ) | 0 | GPIO0 I2C_SCL0 | |||||||
28 | IO35 | I/O/T | 35 | ※1 | ||||||||
29 | IO36 | I/O/T | 36 | ※1 | ||||||||
30 | IO37 | I/O/T | 37 | ※1 | ||||||||
31 | IO38 | I/O/T | 38 | |||||||||
32 | IO39 | I/O/T | 39 | TCK | ||||||||
33 | IO40 | I/O/T | 40 | TDO | ||||||||
34 | IO41 | I/O/T | 41 | TDI | ||||||||
35 | IO42 | I/O/T | 42 | TMS | ||||||||
36 | RXD0 | I/O/T | 44 | U0_RXD | ||||||||
37 | TXD0 | I/O/T | 43 | U0_TXD | ||||||||
38 | IO2 | I/O/T | 2 | ADC1_1 | GPIO2 I2C_SCL1 | 2 | ||||||
39 | IO1 | I/O/T | 1 | ADC1_0 | GPIO1 I2C_SDA0 | 1 | ||||||
40 | GND | P | GND | |||||||||
41 | EPAD | P | GND |
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の呼び名との対応になります。
機能名 | 一般名称 | 備考 |
---|---|---|
FSPICLK | SCK | クロック |
FSPICS0 | CS0 | Chip Select 出力(マスター時) 入力(スレーブ時) |
FSPICS1~5 | CS1~5 | Chip Select 出力(マスター時) |
FSPID | MOSI/SIO0 | データ線0ビット目 |
FSPIQ | MISO/SIO1 | データ線1ビット目 |
FSPIWP | SIO2 | データ線2ビット目 |
FSPIHD | SIO3 | データ線3ビット目 |
FSPIIO4~7 | SIO4~7 | データ線4~7ビット目 |
FSPIDQS | 出力データマスク信号 (マスター時) |
SPI2 CS0 ~ CS5
SPI3 CS0 ~ CS2
SPI2とSPI3について
通常のSPIのモードの他に、データ線を増やしたモードにも対応しています。SPI2,3の対応状況は下記の表の通りです。
モード | コマンド ビット数 | アドレス ビット数 | データ ビット数 | SPI2 | SPI3 | |
---|---|---|---|---|---|---|
SPI | 1bit | 1bit | 1bit | 〇 | 〇 | |
Dual SPI | Dual Output Read | 1bit | 1bit | 2bit | 〇 | 〇 |
Dual I/O Read | 1bit | 2bit | 2bit | 〇 | 〇 | |
Quad SPI | Quad Output Read | 1bit | 1bit | 4bit | 〇 | 〇 |
Quad I/O Read | 1bit | 4bit | 4bit | 〇 | 〇 | |
Octal SPI | Octal Output Read | 1bit | 1bit | 8bit | 〇 | × |
Octal I/O Read | 1bit | 8bit | 8bit | 〇 | × | |
QPI | 4bit | 4bit | 4bit | 〇 | 〇 | |
OPI | 8bit | 8bit | 8bit | 〇 | × |
コメント