Refresh

This website github-wiki-see.page/m/ITheP/GamePad/wiki/ESP32-S3 is currently offline. Cloudflare's Always Online™ shows a snapshot of this web page from the Internet Archive's Wayback Machine. To check for the live version, click Refresh.

ESP32 S3 - ITheP/GamePad GitHub Wiki

References

https://www.luisllamas.es/en/esp32-s3-hardware-details-pinout/ https://www.phippselectronics.com/the-esp32-s3-devkitc-1-pinouts/

PIN Allocation

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
⚠️ **GitHub.com Fallback** ⚠️