ESP8684 – Pinout

Since Espressif Systems arrived in our collective consciousness, they have expanded their range from the ESP8266 to the ESP32, and going beyond the original WROOM and WROVER modules to a range of further ESP32 products. There’s a single-core variant and one that packs a RISC-V core in place of the Tensilica one, and now they’ve revealed their latest product. The ESP8684 takes the ESP to a new level, packing as it does more I/O, onboard USB, and an updated version of the two Tensilica cores alongside Bluetooth version 5. It’s still an ESP32, but one that’s more useful, and it’s worth a closer look because we expect it to figure in quite a few projects.

ESP8684 – Peripherals

The ESP8684 peripherals include:

  • 14 × programmable GPIO’s
  • 3x SPI, 2x UART, 1x I2C Master
  • LED PWM controller with up to 6 channels
  • General DMA controller (GDMA), with 1 transmit channel and 1 receive channel
  • 12-bit SAR ADC, up to 5 channels
  • Temperature sensor
  • Timers – 54-bit general-purpose timer, 2x watchdog timers, 52-bit system timer

The ADC (analogue to digital converter) and DAC (digital to analogue converter) features are assigned to specific static pins. However, you can decide which pins are UART, I2C, SPI, PWM, etc. – you just need to assign them in the code. This is possible due to the ESP8684 chip’s multiplexing feature.

Additionally, there are pins with specific features that make them suitable or not for a particular project. The following table shows what pins are best to use as inputs, outputs and which ones you need to be cautious.

The pins highlighted in green are OK to use. The ones highlighted in yellow are OK to use, but you need to pay attention because they may have an unexpected behaviour, mainly at boot. The pins highlighted in red are not recommended to use as inputs or outputs.



  • Strapping pin: GPIO8 and GPIO9 are strapping pins.
  • SPI0/1: GPIO11~ GPIO17 are usually used for SPI flash and PSRAM and not recommended for other uses.
  • JTAG: GPIO5-7 are typically used for inline debug.

Analog to Digital Converter (ADC)

ESP8684 series integrates a 12-bit SAR ADC, which supports measurements on 5 channels.

  • ADC1_CH0 (GPIO 0)
  • ADC1_CH1 (GPIO 1)
  • ADC1_CH2 (GPIO 2)
  • ADC1_CH3 (GPIO 3)
  • ADC1_CH4 (GPIO 4)

LED PWM Controller

The ESP8684 LED PWM controller has 6 independent 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.

The LED PWM controller has the following features:
• Six identical, independent PWM generators (i.e. channels) that generate digital waveforms
• Configurable waveform periods and duty cycle
• Maximum PWM resolution: 18 bits
• PWM signal output in low-power mode (Light-sleep mode)
• Automatic duty cycle fading – gradual increase/decrease of PWM duty cycle, which is useful for the LED
RGB color-gradient generator.


The ESP8684 has two I2C channels and any pin can be set as SDA or SCL. When using the ESP8684 with the Arduino IDE, the default I2C pins are:

  • GPIO 8 (SDA)
  • GPIO9 (SCL)


SPI Slave driver is a program that controls ESP8684’s SPI peripherals while they function as slaves. ESP8684 integrates two general purpose SPI controllers which can be used as slave nodes driven by an off-chip SPI master. SPI2 and SPI3 have independent signal buses with the same respective names.

  • GPIO 4 (CS)
  • GPIO 5 (MOSI)
  • GPIO 6 (SCK)
  • GPIO 7 (MISO)

Strapping Pins

The ESP8684 chip has the following strapping pins:

  • GPIO 8
  • GPIO 9

During the chip’s system reset (power-on-reset, RTC watchdog reset, brownout reset, analog super watchdog reset, and crystal clock glitch detection reset), the latches of the strapping pins sample the voltage level as strapping bits of ”0” or ”1”, and hold these bits until the chip is powered down or shut down.

GPIO8, and GPIO9 are connected to the chip’s internal weak pull-up/pull-down during the chip reset. Consequently, if they are unconnected or the connected external circuit is high-impedance, the internal weak pull-up/pull-down will determine the default input level of these strapping pins.

To change the strapping bit values, users can apply the external pull-down/pull-up resistances, or use the host MCU’s GPIO’s to control the voltage level of these pins when powering on ESP8684. After reset, the strapping pins work as normal-function pins.

Enable (EN / CHIP_PU)

Enable (EN / CHIP_PU) is the 3.3V regulator’s enable pin. It’s pulled up, so connect to ground to disable the 3.3V regulator. This means that you can use this pin connected to a pushbutton to restart your ESP8684, for example. resets ESP8684 automatically by asserting DTR and RTS control lines of the USB to serial converter chip, i.e., FTDI or CP210x (for more information, see Establish Serial Connection with ESP8684). The DTR and RTS control lines are in turn connected to GPIO0 and CHIP_PU (EN) pins of ESP8684, thus changes in the voltage levels of DTR and RTS will boot ESP8684 into Firmware Download mode.

GPIO current drawn

The absolute maximum current drawn per GPIO is 40mA according to the “Recommended Operating Conditions” section in the ESP8684datasheet.


The ESP8684 Microcontroller is one of the most versatile boards on the market today, and that’s why we decided to focus on it in this guide. This guide displays most of its capabilities, but there are also more advanced options, which we did not go into in this post.

The important thing to know when you choose a board for your project is its capabilities and limitations. It’s also essential to understand the different communication protocols that the board uses. Of course, you don’t need to remember all of this information, you can always go back to this post and read the relevant information for you (this is a good time to bookmark this Blog btw).


espressif, user guide, espressif, datasheet, espressif, technica, download.bl602, ESPC2_02, espressif, hardware design,

Scroll to Top