Skip to main content

Arduino - esp32-c3 (What is it?)

· 9 min read

Over the past year, I have been using the esp32 as my go-to Arduino at heart micro-controller. It has Bluetooth and Wi-Fi, it’s power-efficient, and it costs less than $5. In my quest to find something more robust, I found the esp32-c3. The esp32-c3 is one of the new chips in the ever-growing esp32 family. While it was not more powerful, it did introduce some new ideas from espressif that I am excited to see more of as they continue to expand the esp32 family further.

3 versions of the esp32-s2 (esp32-c3-32s, esp32-c3-12f, esp32-c3-13)
3 versions of the esp32-s2 (esp32-c3-32s, esp32-c3-12f, esp32-c3-13)

I bought the 3 versions from AliExpress. One of the hardest things to understand was what all the versions meant. An excerpt from the listing says

"ESP-C3-32S module acquiesce in using the built-in 4MByte Flash, meanwhile support external Flash version"

Trying to find more about the different variants from Ai-Thinker using some of their published pdfs (https://docs.ai-thinker.com/_media/esp32/docs/esp-c3-12f_specification.pdf) render dead-ends as most of their pdfs are unreachable.

I have gotten a download of the pdf and if you are looking to see the spec sheet please download below.

esp-c3-32s-kit-v1.0_specification.pdf

From what I have read online this is mostly around the types of pin-outs. So to investigate further I flipped them around and found that this was the case. One of the most noticeable things missing is the ability to have a serial pinout (SPI) on the other devkits.

3 versions of the esp32-s2 (esp32-c3-32s, esp32-c3-12f, esp32-c3-13) flipped to show pinouts
3 versions of the esp32-s2 (esp32-c3-32s, esp32-c3-12f, esp32-c3-13) flipped to show pinouts

The following table is from https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/chip-series-comparison.html

FeatureESP32 SeriesESP32-S2 SeriesESP32-C3 SeriesESP32-S3 Series
Launch year2016202020202020
VariantsSee ESP32 Datasheet (PDF)See ESP32-S2 Datasheet (PDF)See ESP32-C3 Datasheet (PDF)See ESP32-S3 Datasheet (PDF)
CoreXtensa® dual-/single core 32-bit LX6Xtensa® single-core 32-bit LX732-bit single-core RISC-VXtensa® dual-core 32-bit LX7
Wi-Fi protocols802.11 b/g/n, 2.4 GHz802.11 b/g/n, 2.4 GHz802.11 b/g/n, 2.4 GHz802.11 b/g/n, 2.4 GHz
Bluetooth®Bluetooth v4.2 BR/EDR and Bluetooth Low Energy✖️Bluetooth 5.0Bluetooth 5.0
Typical frequency240 MHz (160 MHz for ESP32-S0WD)240 MHz160 MHz240 MHz
SRAM520 KB320 KB400 KB512 KB
ROM448 KB for booting and core functions128 KB for booting and core functions384 KB for booting and core functions384 KB for booting and core functions
Embedded flash2 MB, 4 MB, or none, depending on variants2 MB, 4 MB, or none, depending on variants4 MB or none, depending on variants8 MB or none, depending on variants
External flashUp to 16 MB device, address 11 MB + 248 KB each timeUp to 1 GB device, address 11.5 MB each timeUp to 16 MB device, address 8 MB each timeUp to 1 GB device, address 32 MB each time
External RAMUp to 8 MB device, address 4 MB each timeUp to 1 GB device, address 11.5 MB each time✖️Up to 1 GB device, address 32 MB each time
Cache✔️ Two-way set associative✔️ Four-way set associative, independent instruction cache and data cache✔️ Eight-way set associative, 32-bit data/instruction bus width✔️ Four-way or eight-way set associative for instruction cache; four-way set associative for data cache, 32-bit data/instruction bus width
Peripherals
ADCTwo 12-bit, 18 channelsTwo 12-bit, 20 channelsTwo 12-bit SAR ADCs, at most 6 channelsTwo 12-bit SAR ADCs, 20 channels
DACTwo 8-bit channelsTwo 8-bit channels✖️✖️
TimersFour 64-bit general-purpose timers, and three watchdog timersFour 64-bit general-purpose timers, and three watchdog timersTwo 54-bit general-purpose timers, and three watchdog timersFour 54-bit general-purpose timers, and three watchdog timers
Temperature sensor✖️111
Touch sensor1014✖️14
Hall sensor1✖️✖️✖️
GPIO34432245
SPI4434
LCD interface11✖️1
UART32 12 13
I2C2212
I2S2, can be configured to operate with 8/16/32/40/48-bit resolution as an input or output channel.1, can be configured to operate with 8/16/24/32/48/64-bit resolution as an input or output channel.1, can be configured to operate with 8/16/24/32-bit resolution as an input or output channel.2, can be configured to operate with 8/16/24/32-bit resolution as an input or output channel.
Camera interface11✖️1
DMADedicated DMA to UART, SPI, I2S, SDIO slave, SD/MMC host, EMAC, BT, and Wi-FiDedicated DMA to UART, SPI, AES, SHA, I2S, and ADC ControllerGeneral-purpose, 3 TX channels, 3 RX channelsGeneral-purpose, 5 TX channels, 5 RX channels
RMT8 channels4 channels 1, can be configured to TX/RX channels4 channels 2, 2 TX channels, 2 RX channels8 channels 2, 4 TX channels, 4 RX channels
Pulse counter8 channels4 channels 1✖️4 channels 1
LED PWM16 channels8 channels 16 channels 28 channels 1
MCPWM2, six PWM outputs✖️✖️2, six PWM outputs
USB OTG✖️1✖️1
TWAI® controller (compatible with ISO 11898-1)1111
SD/SDIO/MMC host controller1✖️✖️1
SDIO slave controller1✖️✖️✖️
Ethernet MAC1✖️✖️✖️
ULPULP FSMPicoRV32 core with 8 KB SRAM, ULP FSM✖️PicoRV32 core with 8 KB SRAM, ULP FSM
Debug Assist✖️✖️1✖️
Security
Secure boot✔️✔️ Faster and safer, compared with ESP32✔️ Faster and safer, compared with ESP32✔️ Faster and safer, compared with ESP32
Flash encryption✔️✔️ Support for PSRAM encryption. Safer, compared with ESP32✔️ Safer, compared with ESP32✔️ Support for PSRAM encryption. Safer, compared with ESP32
OTP1024-bit4096-bit4096-bit4096-bit
AES✔️ AES-128, AES-192, AES-256 (FIPS PUB 197)✔️ AES-128, AES-192, AES-256 (FIPS PUB 197); DMA support✔️ AES-128, AES-256 (FIPS PUB 197); DMA support✔️ AES-128, AES-256 (FIPS PUB 197); DMA support
HASHSHA-1, SHA-256, SHA-384, SHA-512 (FIPS PUB 180-4)SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA-512/t (FIPS PUB 180-4); DMA supportSHA-1, SHA-224, SHA-256 (FIPS PUB 180-4); DMA supportSHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA-512/t (FIPS PUB 180-4); DMA support
RSAUp to 4096 bitsUp to 4096 bitsUp to 3072 bitsUp to 4096 bits
RNG✔️✔️✔️✔️
HMAC✖️✔️✔️✔️
Digital signature✖️✔️✔️✔️
XTS✖️✔️ XTS-AES-128, XTS-AES-256✔️ XTS-AES-128✔️ XTS-AES-128, XTS-AES-256
Other
Deep-sleep (ULP sensor-monitored pattern)100 μA (when ADC work with a duty cycle of 1%)22 μA (when touch sensors work with a duty cycle of 1%)No such patternTBD
SizeQFN48 55, 66, depending on variantsQFN56 7*7QFN32 5*5QFN56 7*7

While for the most part, this looks like a less feature-filled esp32 compared with the other variants, Hackaday has an article talking about the introduction of the chip when it was first released and said,

“Our takeaway: the ESP32-C3 is going to replace the ESP8266 in our projects, but it won’t replace the ESP32 which simply has more of everything when we need it.”

I have shared the same sentiment around this chip as I have really enjoyed working with the esp32 in general, this lacks some of the “oomph” of being able to work with more than just one core and some extra internal ROM memory. Based on my own observations, and this was called out in the article, it seems this is a way to get manufacturers with lower margins to stop using esp8266 and instead start using the esp32 family. My understanding is that the encryption is more aligned with the esp8266 and as such hardware manufacturers could not use the esp32 in their products.

Takeaway

While the power usage is marginally better than the esp32 but contains Bluetooth 5 I am going to keep using this as a way to test out some ideas I have with https://github.com/project-chip/connectedhomeip#readme. For other projects, I am going to stick with the esp32 dual-core. My hope is that the esp32-c6 is going to really push the envelope and make me replace my current usages as it introduces Wi-Fi 6 and hopefully Bluetooth 5.2 (The official release document does not specify which variant of Bluetooth 5) If you are going to buy the esp32-c3 look for the 32s variant as that is the one that seems most versatile.