En el último periodo Espressif ha reducido notablemente los ciclos de lanzamiento de sus microcontroladores, y ha anunciado hasta 3 modelos nuevos en los ultimos 6 meses. Todo esto sin olvidar a la innovación, ya que ha llegado a presentar el primer microcontrolador con soporte para la red inalámbrica 802.11ax (Wi-Fi 6), el ESP32-C6.
Debido a la difusión de los microcontroladores, he pensado en poner orden con una tabla comparativa, que se puede encontrar en este artículo mas adelante y a este enlace en Github. Desafortunadamente, la tabla no está completa, ya que en el caso de los últimos dos anunciados (ESP32-S3 y ESP32-C6) no se han sacado aun las fichas técnica completas. Será actualizada nada mas todas las informaciones estén disponibles.
En la tabla he puesto todos los modelos producidos por Espressif, es decir ESP8266, ESP32, ESP32-S2, ESP32-C3, ESP32-S3, y el recién llegado ESP32-C6. Claramente la comparación con los últimos llegado es lamentable (ya han pasado 7 años desde el primer lanzamiento), pero puede ser útil para entender concreatamente las mejoras que han ocurrido entre los distintos estrenos.
De todos modos, notaráis que en los últimos dos lanzamientos Espressif ha por fin dividido sus procesadores en dos macro grupos. El primero incluye los microprocesadores de gama alta, para dispositivos que no admiten compromisos, mientras el segundo grupo incluye los de gama mas barata, con menos funcionalidades, que, sin embargo, ofrecen conectividad inalámbrica Wi-Fi y Bluetooth como los hermanos mayores.
Además, Espressif ha recièn estrenado el ESP Product Selector, un servicio para comparar todos los modelos disponibles en todas sus versiones y revisiones. Desafortunadamente es posible comparar solo 4 modelos a la vez, y no estan disponibles unas informaciones que podrian ser importantes, como DMA y timer; por lo tanto aconsejo la tabla presentada aqui para una panorámica mas rápida y efectiva.
ESP8266 | ESP32 | ESP32-S2 | ESP32-S3 | ESP32-C3 | ESP32-C6 | |
---|---|---|---|---|---|---|
Fecha de anuncio | 2014, Agosto | 2016, Septiembre | 2019, Septiembre | 2020, Diciembre | 2020, Noviembre | 2021, Abril |
Procesador principal | Tensilica L106 32-bit (hasta 160MHz) | Tensilica Xtensa 32-bit LX6 (hasta 240MHz) (dual core opcional) | Tensilica Xtensa 32-bit LX7 (hasta 240MHz) | Tensilica Xtensa 32-bit LX7 dual core (hasta 240MHz) | RISC-V 32-bit (hasta 160MHz) | RISC-V 32-bit (hasta 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 (solo hasta 72.2Mbps) | Wi-Fi 4 | Wi-Fi 4 | Wi-Fi 4 | Wi-Fi 4 | Wi-Fi 6 |
Bluetooth | X | BLE 4.2 (actualización a 5.0, con limitaciones) | X | BLE 5.0 | BLE 5.0 | BLE 5.0 |
Ethernet | X | ✓ | X | ? | X | ? |
RTC memory | 768B | 16KB | 16KB | 16KB | 8KB | ? |
PMU | ✓ | ✓ | ✓ | ? | ✓ | ? |
Coprocesador ULP | X | ✓ | ULP-RISC-V | ? | X | ? |
Accelerador criptográfico | X | SHA, RSA, AES, RNG | SHA, RSA, AES, RNG, HMAC, Firma digital | SHA, RSA, AES, RNG, HMAC, Firma digital | SHA, RSA, AES, RNG, HMAC, Firma digital | SHA, RSA, AES, RNG, HMAC, Firma digital |
Secure boot | X | ✓ | ✓ | ✓ | ✓ | ✓ |
Cifrado Flash | 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 (solo un TX) | 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 |
Contador de impulsos | 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, hasta 18 canales | 2x 13-bit SAR, hasta 20 canales | ? | 2x 12-bit SAR, hasta 6 canales | ? |
DAC | X | 2x 8-bit | 2x 8-bit | ? | X | X |
RMT | 1x transmisión + 1x recepción | 8x transmisión / recepción | 4x transmisión / recepción | ? | 2x transmisión + 2x recepción | ? |
Timer | 2x 23-bit*** | 4x 64-bit | 4x 64-bit | ? | 2x 54-bit + 1x 52-bit | ? |
Sensor temperadura | ✓ | ✓ | ✓ | ? | ✓ | ? |
Sensor efecto Hall | X | ✓ | X | ? | X | ? |
Sensór táctil | 0 | 10 | 14 | ? | X | ? |
* Todos los microcontroladores tienen DMA. Cuando está marcado como "ausente" significa que el desarrollador no tiene el control directo del perifèrico de DMA. Con el término General DMA, Espressif se refiere a un periférico DMA que puede ser utilizado por distintos periférico y controlado por el desarrollador, asignando de forma flexible los canales DMA a los periféricos mas criticos.
** En las fichas de datos viejas y en unas documentaciones este periférico se define "CAN Bus".
*** Un timer está dedicado al control de Wi-Fi, por lo tanto no puede ser utilizado libremente por parte del desarrollador.
Se aprecian contribuciones y sugerencias para mejorar las informaciones!