Skip to content

Instantly share code, notes, and snippets.

@fabianoriccardi
Last active July 16, 2024 06:21
Show Gist options
  • Save fabianoriccardi/cbb474c94a8659209e61e3194b20eb61 to your computer and use it in GitHub Desktop.
Save fabianoriccardi/cbb474c94a8659209e61e3194b20eb61 to your computer and use it in GitHub Desktop.
Comparison table for ESP8266/ESP32/ESP32-S2/ESP32-S3/ESP32-C3/ESP32-C6

Comparison table for ESP8266/ESP32/ESP32-S2/ESP32-S3/ESP32-C3/ESP32-C6

A minimal table to compare the Espressif's MCU families. The reported specifications are referred to the SoC, not to the modules (silver shield).

ESP8266 ESP32 ESP32-S2 ESP32-S3 ESP32-C3 ESP32-C6
Announcement Date 2014, August 2016, September 2019, September 2020, December 2020, November 2021, April
Main processor Tensilica L106 32-bit (up to 160MHz) Tensilica Xtensa 32-bit LX6 (up to 240MHz) (optionally dual core) Tensilica Xtensa 32-bit LX7 (up to 240MHz) Tensilica Xtensa 32-bit LX7 dual core (up to 240MHz) RISC-V 32-bit (up to 160MHz) RISC-V 32-bit (up to 160MHz)
SRAM 160KB 520kB 320kB 512kB 400kB 512kB
ROM 0 448kB 128kB 384kB 384kB 320kB
JTAG - ?
Cache 32 KB instruction 64kB 8/16kB (configurable) ? 16kB ?
WiFi Wi-Fi 4 (only up to 72.2Mbps) Wi-Fi 4 Wi-Fi 4 Wi-Fi 4 Wi-Fi 4 Wi-Fi 6
Bluetooth - BLE 4.2 (upgrade to 5.0, with limitations) - BLE 5.0 BLE 5.0 BLE 5.3
Ethernet - - ? - ?
RTC memory 768B 16kB 16kB 16kB 8kB 16kB
PMU ? ?
ULP coprocessor - ULP-RISC-V ? - ?
Cryptographic Accelerator - SHA, RSA, AES, RNG SHA, RSA, AES, RNG, HMAC, Digital Signature SHA, RSA, AES, RNG, HMAC, Digital Signature SHA, RSA, AES, RNG, HMAC, Digital Signature SHA, RSA, AES, RNG, HMAC, Digital Signature
Secure boot -
Flash encryption - XTS-AES-128/256 XTS-AES-128 XTS-AES-128
SPI 2 4 4 ? 3 ?
I2C 1 2 2 ? 1 ?
I2S 1 2 1 ? 1 ?
UART 2 (one TX only) 3 2 ? 2 ?
SDIO Host - 1 - 2 - 0
SDIO Slave - 1 - 0 - 0
GPIO 17 34 43 44 22 22
LED PWM 5 16 8 ? 6 ?
MCPWM - 6 - 2 - 0
Pulse counter - 8 4 ? - X
GDMA* - - - ? 6 ?
USB X - USB OTG 1.1 ? Serial/JTAG ?
TWAI** - 1 1 ? 1 ?
ADC 1x 10-bit SAR 2x 12-bit SAR, up to 18 channels 2x 13-bit SAR, up to 20 channels ? 2x 12-bit SAR, up to 6 channels ?
DAC - 2x 8-bit 2x 8-bit ? - X
RMT 1x transmission + 1x reception 8x transmission/reception 4x transmission/reception ? 2x transmission + 2x reception ?
Timer 2x 23-bit*** 4x 64-bit 4x 64-bit ? 2x 54-bit + 1x 52-bit ?
Temperature Sensor ? ?
Hall Sensor - - ? - ?
Touch Sensor - 10 14 ? - ?

* All the MCUs have some sort of DMA. However, if this field is not checked, it means that the user hasn't the direct control over DMA. With General DMA term, Espressif intends a specific DMA peripheral in full control of user. He will be responsible to manage such peripheral.

** In some old datasheet and documentation, it was referred as CAN bus.

*** A timer is dedicated to Wi-Fi, so you cannot freely use it.

For more details about specific models and variants, look at Espressif Product Selector.

The table will be updated as new information will be released. Contributions and suggestions are welcomed!

@egnor
Copy link

egnor commented Jul 14, 2024

(I posted this on @sekcompsci's fork also, for some reason the fork has a lot more attention than this original)

some suggestions:

  • clarify that this is comparing chips (SoCs) rather than modules (silver boxes). for example most modules will have fewer GPIOs than the chip itself offers?
  • replace all "0" and "X" with "-" which is a clearer indication of absence?
  • I think we can fill in all the "?" now?

I'd be happy to send you a diff or make a fork or something-- unfortunately gists don't support pull requests I think?

@fabianoriccardi
Copy link
Author

Yeah, definitely this table deserves to be completed, I will complete as soon as possible.

I wasn't aware of that fork... probably that guy is running a YT channel, a blog or something similar.

Thanks for notifying it.

@fabianoriccardi
Copy link
Author

replace all "0" and "X" with "-" which is a clearer indication of absence?

Accepted, because it is more visible than '0' and 'X', and since this table is not dynamic is very important.

clarify that this is comparing chips (SoCs) rather than modules (silver boxes). For example, most modules will have fewer GPIOs than the chip itself offers?

Given the amount of variety of modules, I report only the SoC specs. Maybe I can add the qty of pins in the most complete module for each SoC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment