Recently Espressif has dramatically reduced release cycles for its microcontrollers, announcing 3 new models in the last 6 months. This without sacrificing innovation, coming to present the first microcontroller with support for 802.11ax (Wi-Fi 6), namely ESP32-C6.
Given the explosion of microcontrollers, I think I have do some tidying up with a comparison table, which can be found below and at the following link on Github. Unfortunately the table is not complete because the complete datasheets have not yet been released for the last 2 announced MCUs (ESP32-S3 and ESP32-C6). It will be updated as soon as all information is made available.
In the table I have reported all the models released by Espressif, namely ESP8266, ESP32, ESP32-S2, ESP32-C3, ESP32-S3, and the latest ESP32-C6. Obviously the comparison with the latest arrivals is merciless (actually 7 years have passed since its release), but it can be useful to understand in practice the improvements that have occurred between the various releases.
Anyway, you will notice that with the last 2 releases Espressif has finally divided its processors into 2 macro groups. The first group includes high-end microprocessors, for devices that don't have to tradeoff, while the second group includes cheaper ones, with fewer features but benefiting from Wi-Fi and Bluetooth connectivity like their full-grown couterparts.
Furthermore, Espressif has recently released ESP Product Selector, a service to compare all available models in all their variations and revisions. Unfortunately it is possible to compare only 3 models at a time, and some information that could be relevant, such as DMA and timer available, is not shown, so for a faster and more effective overview I recommend this table.
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 | 400KB |
ROM | 0 | 448KB | 128KB | 384KB | 384KB | 384KB |
JTAG | X | ✓ | ✓ | ? | ✓ | ✓ |
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 | X | BLE 4.2 (upgrade to 5.0, with limitations) | X | BLE 5.0 | BLE 5.0 | BLE 5.0 |
Ethernet | X | ✓ | X | ? | X | ? |
RTC memory | 768B | 16KB | 16KB | 16KB | 8KB | ? |
PMU | ✓ | ✓ | ✓ | ? | ✓ | ? |
ULP coprocessor | X | ✓ | ULP-RISC-V | ? | X | ? |
Cryptographic Accelerator | X | 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 | X | ✓ | ✓ | ✓ | ✓ | ✓ |
Flash encryption | X | ✓ | 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 | 0 | 1 | 0 | 2 | 0 | 0 |
SDIO Slave | 0 | 1 | 0 | 0 | 0 | 0 |
GPIO | 17 | 34 | 43 | 44 | 22 | 22 |
LED PWM | 5 | 16 | 8 | ? | 6 | ? |
MCPWM | 0 | 6 | 0 | 2 | 0 | 0 |
Pulse counter | 0 | 8 | 4 | ? | 0 | X |
GDMA* | 0 | 0 | 0 | ? | 6 | ? |
USB | X | X | USB OTG 1.1 | ? | Serial/JTAG | ? |
TWAI** | 0 | 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 | X | 2x 8-bit | 2x 8-bit | ? | X | 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 | X | ✓ | X | ? | X | ? |
Touch Sensor | 0 | 10 | 14 | ? | X | ? |
* 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.
The table will be updated as new information will be released. Contributions and suggestions are welcomed!