ESP32 S3 - ITheP/GamePad GitHub Wiki
https://www.luisllamas.es/en/esp32-s3-hardware-details-pinout/ https://www.phippselectronics.com/the-esp32-s3-devkitc-1-pinouts/
Pins listed in physical order, top to bottom (if physically looking at device with CPU at top and USB sockets at the bottom).
Pins are numbered as printed on device
PIN_xx_Dyy_Az
xx = pin number
yy = digital input number (for our use, doesn't relate to device h/w)
z = analog input number (for our use, doesn't relate to device h/w)
Example definition:
#define PIN_10_D11_A6 10 // [Button1] OK pud ACD1_9 Touch_10 - Do not use for ADC
Key | Description |
---|---|
PIN_10_D11_A6 |
Pin identifier. Example here - Pin 10 (physical pin), Digital input 11 (11th possible digital input we can use), Analog input A6 (6th possible analog input we could use). Digital and Analog numbers are just for our use, to count how many pins we potentially have available. |
10 |
Actual physical pin number on board |
[Button1] |
General space for a little note to show what this pin is being used for |
OK , ok , not set
|
Recommended usability of pin... |
...OK
|
OK for us to use this pin for our general use. First priority GPIO ports usable after a system boot - no special setup is required |
...ok
|
still good to use but maybe implications (e.g. no pull up/down resistor available) |
...not set | Don't recommend using this pin - either important for device itself, or it can be a pain to use/has implications |
pud |
|
ACD1_9 Touch_10 |
Extra detail as to pins possible uses |
Do not use for... |
Extra notes related to this pin |
Notes
- Some pins can be used at the expense of more general device functionality - we attempt to not interfere with anything critical (e.g. so USB doesn't stop working!)
- Do not use ADC2 pins for ADC - ESP32-S3 ADC2 has issues (especially if using wireless/bluetooth) and is easier just to not use it than faff around
- GPIO00->21 have internal pull-up/down resistors, can also be woken up from deep low-power mode.
- GPIO22->25 are not available
- GPIO26->48 input only with no pull-up/down resistors
- GPIO26->32 usually used for SPI flash and PSRAM, not recommended for other uses
- GPIO33->37 not recommended in ESP32-S3R8 / ESP32-S3R8V if using SPI or PSRAM (usually not using these)
- GPIO39->42 cannot be used if using JTAG debugging
Given as commented code, so can be cut/paste into config file. Includes couple of examples.
// SIDE ONE
// +3v3
// +3v3
// RST
#define PIN_04_D01_A1 4 // [ ] OK pud ADC1_3 Touch_01
#define PIN_05_D02_A2 5 // [ ] OK pud ADC1_4 Touch_02
#define PIN_06_D03_A3 6 // [ ] OK pud ADC1_5 Touch_03
#define PIN_07_D04_A4 7 // [ ] OK pud ADC1_6 Touch_04
#define PIN_15_D05 15 // [ ] OK pud adc2_4 - Do not use for ADC
#define PIN_16_D06 16 // [ ] OK pud adc2_5 - Do not use for ADC
#define PIN_17_D07 17 // [ ] OK pud adc2_6 - Do not use for ADC
#define PIN_18_D08 18 // [ ] OK pud adc2_7 - Do not use for ADC
#define PIN_08_D09 8 // [ ] OK pud ADC1_7 Touch_08 - I2C SDA default
// PIN_3 // pud ADC1_2 Touch_03 - Boot Strapping pin (JTAG signal source) - DO NOT USE
// PIN_46 // - Boot Strapping pin (Chip boot mode and ROM messages printing), input only, no internal pull up/down - DO NOT USE
#define PIN_09_D10_A5 9 // [ ] OK pud ADC1_8 Touch_09 - I2C SCL Default
#define PIN_10_D11_A6 10 // [ ] OK pud ACD1_9 Touch_10 - SPI3 CS
#define PIN_11_D12 11 // [ ] OK pud adc2_0 Touch_11 - Do not use for ADC - SPI3 MOSI
#define PIN_12_D13 12 // [ ] OK pud adc2_1 Touch_12 - Do not use for ADC - SPI3 CLK
#define PIN_13_D14 13 // [ ] OK pud adc2_2 Touch_13 - Do not use for ADC - SPI3 MISO
#define PIN_14_D15 14 // [ ] OK pud adc2_3 Touch_14 - Do not use for ADC
// +5v in // - +5v from USB if IN-OUT jumper bridged
// Gnd
// SIDE TWO
// Gnd
// TX 43 // - UART0 TX/Debug
// RX 44 // - UART0 RX/Debug
#define PIN_01_D16_A7 1 // [ ] OK pud ADC1_0 Touch_01
#define PIN_02_D17_A8 2 // [ ] OK pud ADC1_1 Touch_02
#define Pin_42_D18 18 // [ ] ok - JTAG MTMS
#define Pin_41_D19 19 // [ ] ok - JTAG MTDI
#define Pin_40_D20 40 // [Oled ] ok - JTAG MTDO
#define Pin_39_D21 39 // [Oled ] ok - JTAG MTCK, SPI2 CS
#define Pin_38_D22 38 // [Neopix] ok
// PIN_37 // [ ] ok - SPI2 MISO - Ok to use if not used for Octal SPI Flash or PSRAM (model specific)
// PIN_36 // [ ] ok - SPI2 CLK - Ok to use if not used for Octal SPI Flash or PSRAM (model specific)
// PIN_35 // [ ] ok - SPI2 MOSI - Ok to use if not used for Octal SPI Flash or PSRAM (model specific)
// PIN_0 // - Boot Strapping Pin Boot Mode
// PIN_45 // - Boot Strapping Pin VDD SPI Voltage (VDD_SPI voltage, selects between 1.8v and 3.3v)
#define PIN_48_D23 48 // [ ] ok
#define PIN_47_D24 47 // [ ] ok
#define PIN_21_D25 21 // [ ] OK pud
// PIN_20 // - USB_D+ - if reconfigured as normal GPIO, USB-JTAG functionality unavailable - i.e. don't expect USB to work! - DO NOT USE
// PIN 19 // - USB_D- - DO NOT USE
// Gnd
// Gnd