Di recente Espressif ha incredibilmente ridotto i cicli di release per i suoi microcontrollori, arrivando ad annunciare 3 nuovi modelli negli ultimi 6 mesi. Questo senza sacrificare l'innovazione, arrivando a presentare il primo microcontrollore con supporto a 802.11ax (Wi-Fi 6), l'ESP32-C6.
Data l'esplosione di microcontrollori, ho pensato di fare un po' di ordine con una tabella comparativa, che si può trovare di seguito e al seguente link su Github. Purtroppo la tabella non è completa perchè per gli ultimi 2 annunciati (ESP32-S3 e ESP32-C6) non sono stati ancora rilasciati i datasheet completi. Verrà aggiornata non appena tutte le informazioni saranno rese disponibili.
In tabella ho riportato tutti i modelli rilasciati da Espressif, ovvero ESP8266, ESP32, ESP32-S2, ESP32-C3, ESP32-S3, e l'ultimo arrivato ESP32-C6. Ovviamente il confronto con gli ultimi arrivati è impietoso (ormai son passato 7 anni dal suo rilascio), ma può essere utile per capire nel concreto i miglioramenti che sono avvenuti tra le varie release.
Ad ogni modo, noterete che con le ultime 2 release Espressif ha finalmente suddiviso i suoi processori in 2 macro gruppi. Il primo gruppo include i microprocessori di fascia alta, per dispositivi che non devono scendere a compromessi, mentre il secondo gruppo include quelli di fascia più economica, con un minor numero di funzionalità ma che beneficiano dalla connettività Wi-Fi e Bluetooth come i fratelli maggiori.
Inoltre, Espressif ha di recente rilasciato ESP Product Selector, un servizio per confrontare tutti i modelli disponibili in tutte le loro declinazioni e revisioni. Purtroppo è possibile confrontare solo 3 modelli alla volta, e non vengono riportate alcune informazioni che potrebbero essere rilevanti, quali DMA e timer disponibili, quindi per una panoramica più veloce ed efficace consiglio la tabella sopracitata.
ESP8266 | ESP32 | ESP32-S2 | ESP32-S3 | ESP32-C3 | ESP32-C6 | |
---|---|---|---|---|---|---|
Data di annuncio | 2014, Agosto | 2016, Settembre | 2019, Settembre | 2020, Dicembre | 2020, Novembre | 2021, Aprile |
Processore principale | Tensilica L106 32-bit (fino a 160MHz) | Tensilica Xtensa 32-bit LX6 (fino a 240MHz) (dual core opzionale) | Tensilica Xtensa 32-bit LX7 (fino a 240MHz) | Tensilica Xtensa 32-bit LX7 dual core (fino a 240MHz) | RISC-V 32-bit (fino a 160MHz) | RISC-V 32-bit (fino a 160MHz) |
SRAM | 160KB | 520KB | 320KB | 512KB | 400KB | 400KB |
ROM | 0 | 448KB | 128KB | 384KB | 384KB | 384KB |
JTAG | X | ✓ | ✓ | ✓ | ✓ | ✓ |
Cache | 32 KB istruzioni | 64KB | 8KB istruzioni / 16KB dati | 32KB istruzioni / 64KB dati | 16KB | ? |
WiFi | Wi-Fi 4 (solo fino a 72.2Mbps) | Wi-Fi 4 | Wi-Fi 4 | Wi-Fi 4 | Wi-Fi 4 | Wi-Fi 6 |
Bluetooth | X | BLE 4.2 (aggiornamento a 5.0, con limitazioni) | X | BLE 5.0 | BLE 5.0 | BLE 5.0 |
Ethernet | X | ✓ | X | XPM | X | ? |
RTC memory | 768B | 16KB | 16KB | 16KB | 8KB | ? |
PMU | ✓ | ✓ | ✓ | ✓ | ✓ | ? |
Coprocessore ULP | X | ✓ | ULP-RISC-V/ULP-FSM | ULP-RISC-V/ULP-FSM | X | ? |
Acceleratore crittografico | X | SHA, RSA, AES, RNG | SHA, RSA, AES, RNG, HMAC, Firma digitale | SHA, RSA, AES, RNG, HMAC, Firma digitale | SHA, RSA, AES, RNG, HMAC, Firma digitale | SHA, RSA, AES, RNG, HMAC, Firma digitale |
Secure boot | X | ✓ | ✓ | ✓ | ✓ | ✓ |
Cifratura Flash | X | ✓ | XTS-AES-128/256 | ✓ | XTS-AES-128 | XTS-AES-128 |
SPI | 2 | 4 | 4 | 4 | 3 | ? |
I2C | 1 | 2 | 2 | 2 | 1 | ? |
I2S | 1 | 2 | 1 | 2 | 1 | ? |
UART | 2 (solo un TX) | 3 | 2 | 3 | 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 | 8 | 6 | ? |
MCPWM | 0 | 6 | 0 | 2 | 0 | 0 |
Contatore di impulsi | 0 | 8 | 4 | 4 | 0 | X |
GDMA* | 0 | 0 | 0 | 5 TX + 5 RX | 6 | ? |
USB | X | X | USB OTG 1.1 | USB2.0 / USB 1.1 OTG | Seriale / JTAG | ? |
TWAI** | 0 | 1 | 1 | 1 | 1 | ? |
ADC | 1x 10-bit SAR | 2x 12-bit SAR, fino a 18 canali | 2x 13-bit SAR, fino a 20 canali | 2x 12-bit SAR, fino a 20 canali | 2x 12-bit SAR, fino a 6 canali | ? |
DAC | X | 2x 8-bit | 2x 8-bit | X | X | X |
RMT | 1x trasmissione + 1x ricezione | 8x trasmissione / ricezione | 4x trasmissione / ricezione | 4x RX / 4x TX | 2x trasmissione + 2x ricezione | ? |
Timer | 2x 23-bit*** | 4x 64-bit | 4x 64-bit | 4x 54-bit + 1x 52-bit + 3x watchdog | 2x 54-bit + 1x 52-bit | ? |
Sensore di temperatura | ✓ | ✓ | ✓ | ✓ | ✓ | ? |
Sensore effetto Hall | X | ✓ | X | X | X | ? |
Sensore Touch | 0 | 10 | 14 | 14 | X | ? |
Consumo Minimo (solo RTC)**** | 20uA | 5uA | 20uA | 7uA | 5uA | ? |
* Tutti i microcontrollori hanno il DMA. Quando il campo è segnato come "assente", significa che lo sviluppatore non ha il controllo diretto sulla periferica di DMA. Con il termine General DMA, Espressif intende una periferica DMA che può essere utlizzata da diverse perifiche e comandata dallo sviluppatore, assegnando in modo flessibile canali DMA alle periferche più critiche.
** Nei vecchi datasheet e in ancune documentazioni questa periferica è chiamata CAN bus.
*** Un timer è dedicato al Wi-Fi, quindi non può essere usato liberamente dallo sviluppatore.
**** Consumo minimo riportato da datasheet.
Contributi e suggerimenti per migliorare le informazioni in tabella sono apprezzati!