{"id":162295,"date":"2024-10-02T17:04:24","date_gmt":"2024-10-02T17:04:24","guid":{"rendered":"https:\/\/randomnerdtutorials.com\/?p=162295"},"modified":"2025-03-12T17:38:51","modified_gmt":"2025-03-12T17:38:51","slug":"esp32-s3-devkitc-pinout-guide","status":"publish","type":"post","link":"https:\/\/randomnerdtutorials.com\/esp32-s3-devkitc-pinout-guide\/","title":{"rendered":"ESP32-S3 DevKitC Pinout Reference Guide: GPIOs Explained"},"content":{"rendered":"\n<p>The ESP32-S3 DevKitC is one of the most popular development boards with the ESP32-S3 chip. This chip comes with 45 pins and has a different pinout than the boards with the ESP-WROOM-32 chip. In this article, we&#8217;ll take a look at the ESP32-S3 DevkitC board Pinout and explain the different functions of its GPIOs.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-DevKitC-Pinout.jpg?resize=1200%2C675&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32-S3 DevKitC Pinout Refence Guide GPIOs Explained\" class=\"wp-image-162321\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-DevKitC-Pinout.jpg?w=1280&amp;quality=100&amp;strip=all&amp;ssl=1 1280w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-DevKitC-Pinout.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-DevKitC-Pinout.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-DevKitC-Pinout.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">ESP32-S3 Peripherals<\/h2>\n\n\n\n<p>The ESP32-S3 peripherals include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>20 Analog-to-Digital Converter (ADC) channels<\/li>\n\n\n\n<li>4 SPI interfaces<\/li>\n\n\n\n<li>3 UART interfaces<\/li>\n\n\n\n<li>2 I2C interfaces<\/li>\n\n\n\n<li>8 PWM output channel<\/li>\n\n\n\n<li>2 I2S interfaces<\/li>\n\n\n\n<li>14 Capacitive sensing GPIOs<\/li>\n<\/ul>\n\n\n\n<p>Due to the ESP32 chip multiplexing feature, you can assign almost any function to the GPIO of your choice. However, there are pins with assigned functions by default. We&#8217;ll take a look at that in this pinout.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">ESP32-S3 DevKitC-1 Pinout<\/h1>\n\n\n\n<p>The following picture shows the pinout of the ESP32-S3 DevKitC-1 board, one of the most popular development boards with the S3 chip. There are different versions of the same board with slightly different pinouts. Always double-check the pin location and the GPIO label before connecting any peripherals.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-pinout.jpg?quality=100&#038;strip=all&#038;ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"1024\" height=\"698\" src=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-pinout.jpg?resize=1024%2C698&#038;quality=100&#038;strip=all&#038;ssl=1\" alt=\"ESP32-S3 Devkit C Pinout\" class=\"wp-image-162320\" srcset=\"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-pinout.jpg?resize=1024%2C698&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-pinout.jpg?resize=300%2C205&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-pinout.jpg?resize=768%2C524&amp;quality=100&amp;strip=all&amp;ssl=1 768w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-pinout.jpg?resize=1536%2C1047&amp;quality=100&amp;strip=all&amp;ssl=1 1536w, https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-pinout.jpg?w=1584&amp;quality=100&amp;strip=all&amp;ssl=1 1584w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32s3\/hw-reference\/esp32s3\/user-guide-devkitc-1.html\" title=\"\">Image source<\/a><\/figcaption><\/figure><\/div>\n\n\n<p>For more information about this board, check the <a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32s3\/hw-reference\/esp32s3\/user-guide-devkitc-1.html\" target=\"_blank\" rel=\"noopener\" title=\"\">official documentation here<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SPI Flash and PSRAM<\/h3>\n\n\n\n<p>GPIOs 26 to 32 are connected to the integrated SPI flash and PSRAM and are not recommended for other uses. They are not exposed in this particular board, but if they are exposed on your board, avoid using them:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GPIO 26 (Flash\/PSRAM SPICS1)<\/li>\n\n\n\n<li>GPIO 27 (Flash\/PSRAM SPIHD)<\/li>\n\n\n\n<li>GPIO 28 (Flash\/PSRAM SPIWP)<\/li>\n\n\n\n<li>GPIO 29 (Flash\/PSRAM SPICS0)<\/li>\n\n\n\n<li>GPIO 30 (Flash\/PSRAM SPICLK)<\/li>\n\n\n\n<li>GPIO 31 (Flash\/PSRAM SPIQ)<\/li>\n\n\n\n<li>GPIO 32 (Flash\/PSRAM SPID)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Capacitive touch GPIOs<\/h3>\n\n\n\n<p>The ESP32-S3 has 14 internal capacitive touch GPIOs. These can sense variations in anything that holds an electrical charge, like the human skin. So they can detect variations induced when touching the GPIOs with a finger. These pins can be easily integrated into capacitive pads and replace mechanical buttons. The capacitive touch pins can also be used to wake up the ESP32 from deep sleep.<\/p>\n\n\n\n<p>Those internal touch sensors are connected to these GPIOs:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>T1 (GPIO 1)<\/li>\n\n\n\n<li>T2 (GPIO 2)<\/li>\n\n\n\n<li>T3 (GPIO 3)<\/li>\n\n\n\n<li>T4 (GPIO 4)<\/li>\n\n\n\n<li>T5 (GPIO 5)<\/li>\n\n\n\n<li>T6 (GPIO 6)<\/li>\n\n\n\n<li>T7 (GPIO 7)<\/li>\n\n\n\n<li>T8 (GPIO 8)<\/li>\n\n\n\n<li>T9 (GPIO 9)<\/li>\n\n\n\n<li>T10 (GPIO 10)<\/li>\n\n\n\n<li>T11 (GPIO 11)<\/li>\n\n\n\n<li>T12 (GPIO 12)<\/li>\n\n\n\n<li>T13 (GPIO 13)<\/li>\n\n\n\n<li>T14 (GPIO 14)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Analog to Digital Converter (ADC)<\/h3>\n\n\n\n<p>The ESP32 has 20x 12-bit ADC input channels. These are the GPIOs that can be used as ADC and respective channels:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ADC1_CH0 (GPIO 1)<\/li>\n\n\n\n<li>ADC1_CH1 (GPIO 2)<\/li>\n\n\n\n<li>ADC1_CH2 (GPIO 3)<\/li>\n\n\n\n<li>ADC1_CH3 (GPIO 4)<\/li>\n\n\n\n<li>ADC1_CH4 (GPIO 5)<\/li>\n\n\n\n<li>ADC1_CH5 (GPIO 6)<\/li>\n\n\n\n<li>ADC1_CH6 (GPIO 7)<\/li>\n\n\n\n<li>ADC1_CH7 (GPIO 8)<\/li>\n\n\n\n<li>ADC1_CH8 (GPIO 9)<\/li>\n\n\n\n<li>ADC1_CH9 (GPIO 10)<\/li>\n\n\n\n<li>ADC2_CH0 (GPIO 11)<\/li>\n\n\n\n<li>ADC2_CH1 (GPIO 12)<\/li>\n\n\n\n<li>ADC2_CH2 (GPIO 13)<\/li>\n\n\n\n<li>ADC2_CH3 (GPIO 14)<\/li>\n\n\n\n<li>ADC2_CH4 (GPIO 15)<\/li>\n\n\n\n<li>ADC2_CH5 (GPIO 16)<\/li>\n\n\n\n<li>ADC2_CH6 (GPIO 17)<\/li>\n\n\n\n<li>ADC2_CH7 (GPIO 18)<\/li>\n\n\n\n<li>ADC2_CH8 (GPIO 19)<\/li>\n\n\n\n<li>ADC2_CH9 (GPIO 20)<\/li>\n<\/ul>\n\n\n\n<p>The ADC input channels have a 12-bit resolution. This means that you can get analog readings ranging from 0 to 4095, in which 0 corresponds to 0 V and 4095 to 3.3 V. You can also set the resolution of your channels on the code and the ADC range.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RTC GPIOs<\/h3>\n\n\n\n<p>There is RTC GPIO support on the ESP32-S3. The GPIOs routed to the RTC low-power subsystem can be used when the ESP32 is in deep sleep. These RTC GPIOs can be used to wake up the ESP32 from deep sleep when the Ultra Low Power (ULP) coprocessor is running. The following GPIOs can be used as an external wake-up source.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RTC_GPIO0 &nbsp;(GPIO0)<\/li>\n\n\n\n<li>RTC_GPIO1 (GPIO1)<\/li>\n\n\n\n<li>RTC_GPIO2 (GPIO2)<\/li>\n\n\n\n<li>RTC_GPIO3 (GPIO3)<\/li>\n\n\n\n<li>RTC_GPIO4 (GPIO4)<\/li>\n\n\n\n<li>RTC_GPIO5 (GPIO5)<\/li>\n\n\n\n<li>RTC_GPIO6 (GPIO6)<\/li>\n\n\n\n<li>RTC_GPIO7 (GPIO7)<\/li>\n\n\n\n<li>RTC_GPIO8 (GPIO8)<\/li>\n\n\n\n<li>RTC_GPIO9 (GPIO9)<\/li>\n\n\n\n<li>RTC_GPIO10 (GPIO10)<\/li>\n\n\n\n<li>RTC_GPIO11 (GPIO11)<\/li>\n\n\n\n<li>RTC_GPIO12 (GPIO12)<\/li>\n\n\n\n<li>RTC_GPIO13 (GPIO13)<\/li>\n\n\n\n<li>RTC_GPIO14 (GPIO14)<\/li>\n\n\n\n<li>RTC_GPIO15 (GPIO15)<\/li>\n\n\n\n<li>RTC_GPIO16 (GPIO16)<\/li>\n\n\n\n<li>RTC_GPIO17 (GPIO17)<\/li>\n\n\n\n<li>RTC_GPIO18 (GPIO18)<\/li>\n\n\n\n<li>RTC_GPIO19 (GPIO19)<\/li>\n\n\n\n<li>RTC_GPIO20 (GPIO20)<\/li>\n\n\n\n<li>RTC_GPIO21 (GPIO21)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">PWM<\/h3>\n\n\n\n<p>The ESP32-S3 has an LED PWM controller with 8 PWM channels that can be configured to generate PWM signals with different properties. All pins that can act as outputs can be used as PWM pins.<\/p>\n\n\n\n<p>To set a PWM signal, you need to define these parameters in the code:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Signal\u2019s frequency;<\/li>\n\n\n\n<li>Duty cycle;<\/li>\n\n\n\n<li>PWM channel (optional);<\/li>\n\n\n\n<li>GPIO where you want to output the signal.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">I2C<\/h3>\n\n\n\n<p>When using the ESP32-S3 with the Arduino IDE, these are the ESP32 I2C default pins:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GPIO 8 (SDA)<\/li>\n\n\n\n<li>GPIO 9 (SCL)<\/li>\n<\/ul>\n\n\n\n<p>Learn more about I2C with our tutorials:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-i2c-communication-arduino-ide\/\" title=\"\">ESP32 I2C Communication: Set Pins, Multiple Bus Interfaces and Peripherals (Arduino IDE)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-i2c-scanner-arduino\/\" title=\"\">ESP32: I2C Scanner (Arduino IDE) \u2013 Finding the Address of I2C Devices<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/esp32-i2c-master-slave-arduino\/\" title=\"\">ESP32 I2C Master and Slave (I2C Communication Between Two ESP32) \u2013 Arduino IDE<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">SPI<\/h3>\n\n\n\n<p>The ESP32 integrates 4 SPI peripherals: SPI0, SPI1, SPI2 (commonly referred to as HSPI), and SPI3 (commonly referred to as VSPI).<\/p>\n\n\n\n<p>SP0 and SP1 are used internally to communicate with the built-in flash memory, and you should not use them for other tasks.<\/p>\n\n\n\n<p>You can use <strong>HSPI<\/strong> and <strong>VSPI<\/strong> to communicate with other devices. HSPI and VSPI have independent bus signals.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>SPI<\/strong><\/td><td><strong>MOSI<\/strong><\/td><td><strong>MISO<\/strong><\/td><td><strong>CLK<\/strong><\/td><td><strong>CS<\/strong><\/td><\/tr><tr><td><strong>HSPI (SPI 2)<\/strong><\/td><td>GPIO 11<\/td><td>GPIO 13<\/td><td>GPIO 12<\/td><td>GPIO 10<\/td><\/tr><tr><td><strong>VSPI (SPI 3)<\/strong><\/td><td>GPIO 35<\/td><td>GPIO 37<\/td><td>GPIO 36<\/td><td>GPIO 39<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"rntbox rntclblue\">Learn more about SPI communication protocol: <a href=\"https:\/\/randomnerdtutorials.com\/esp32-spi-communication-arduino\/\" title=\"\">ESP32 SPI Communication: Set Pins, Multiple SPI Bus Interfaces, and Peripherals (Arduino IDE).<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Interrupts<\/h3>\n\n\n\n<p>All GPIOs can be configured as interrupts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">UART Pins \u2013 Serial Communication<\/h3>\n\n\n\n<p>The ESP32-S3 supports multiple UART (Universal Asynchronous Receiver-Transmitter) interfaces that allow serial communication with various devices. The ESP32 supports up to three UART interfaces: <strong>UART0<\/strong>, <strong>UART1<\/strong>, and <strong>UART2<\/strong>, depending on the ESP32 board model you\u2019re using.<\/p>\n\n\n\n<p>Like I2C and SPI, these UARTs can be mapped to any GPIO pin, although they have default pin assignments on most board models.<\/p>\n\n\n\n<p>The following table shows the default UART0, UART1, and UART2 RX and TX pins for the ESP32-S3:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>UART Port<\/strong><\/td><td><strong>TX<\/strong><\/td><td><strong>RX<\/strong><\/td><td><strong>Remarks<\/strong><\/td><\/tr><tr><td><strong>UART0<\/strong><\/td><td>GPIO 43<\/td><td>GPIO 44<\/td><td>Cannot be changed<\/td><\/tr><tr><td><strong>UART1<\/strong><\/td><td>GPIO 17<\/td><td>GPIO 18<\/td><td>Can be assigned to other GPIOs<\/td><\/tr><tr><td><strong>UART2<\/strong><\/td><td>&#8212;<\/td><td>&#8212;<\/td><td>Assign any pins of your choice<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Strapping Pins<\/h3>\n\n\n\n<p>The ESP32-S3 chip has the following strapping pins:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GPIO 0<\/li>\n\n\n\n<li>GPIO 3<\/li>\n\n\n\n<li>GPIO 45<\/li>\n\n\n\n<li>GPIO 46<\/li>\n<\/ul>\n\n\n\n<p>These pins are used to put the ESP32 into bootloader or flashing mode. On most development boards with built-in USB\/Serial, you don\u2019t need to worry about the state of these pins. The board puts the pins in the right state for flashing or boot mode. &nbsp;However, you should avoid using these pins on your projects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enable (EN\/RST)<\/h3>\n\n\n\n<p>The Enable (EN\/RST) is the 3.3V regulator\u2019s enable pin. It\u2019s pulled up, so connect to GND to disable the 3.3V regulator. This means that you can use this pin connected to a pushbutton to restart your ESP32, for example.<strong><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n\n\n\n<p>We hope you find this reference guide for the ESP32-S3 GPIOs useful. If you have more tips about the ESP32-S3 GPIOs, please share by writing a comment below.<\/p>\n\n\n\n<p>More ESP32 content:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/randomnerdtutorials.com\/learn-esp32-with-arduino-ide\/\" target=\"_blank\" rel=\"noreferrer noopener\">Learn ESP32 with Arduino IDE eBook<\/a><\/strong><\/li>\n\n\n\n<li><a href=\"https:\/\/randomnerdtutorials.com\/projects-esp32\/\" target=\"_blank\" rel=\"noreferrer noopener\">Free ESP32 Projects and Tutorials<\/a><\/li>\n<\/ul>\n\n\n\n<p>Thanks for reading.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The ESP32-S3 DevKitC is one of the most popular development boards with the ESP32-S3 chip. This chip comes with 45 pins and has a different pinout than the boards with &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"ESP32-S3 DevKitC Pinout Reference Guide: GPIOs Explained\" class=\"read-more button\" href=\"https:\/\/randomnerdtutorials.com\/esp32-s3-devkitc-pinout-guide\/#more-162295\" aria-label=\"Read more about ESP32-S3 DevKitC Pinout Reference Guide: GPIOs Explained\">CONTINUE READING \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":162321,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[281,276,277,299,264],"tags":[],"class_list":["post-162295","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32-project","category-esp32","category-esp32-arduino-ide","category-0-esp32","category-project"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/randomnerdtutorials.com\/wp-content\/uploads\/2024\/09\/ESP32-S3-DevKitC-Pinout.jpg?fit=1280%2C720&quality=100&strip=all&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/162295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/comments?post=162295"}],"version-history":[{"count":8,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/162295\/revisions"}],"predecessor-version":[{"id":167841,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/posts\/162295\/revisions\/167841"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media\/162321"}],"wp:attachment":[{"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/media?parent=162295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/categories?post=162295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomnerdtutorials.com\/wp-json\/wp\/v2\/tags?post=162295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}