Many have been eagerly awaiting the ESP32C3 from Espressif. It has only one computing core instead of the usual two processor cores in other ESP32 controllers. But this core works with the free, open RISC-V instruction set architecture that competes with the ARM-based controllers widely used for IoT applications. I recently put the ESP32C3 through its paces. Here’s my experiences.
ESP32-C3
First, let’s look at the ESP32C3. The ESP32C3 chip is in fact a successor to the Espressif ESP8266 microchip. Like the ESP8266, it has a single core capable of clock frequencies up to 160MHz and has a 2.4GHz BGN WiFi chip with a full TCP/IP stack. But that’s where the similarity with the ESP8266 ends. The ESP32C3 contains much more of the periphery that we know from the ESP32, Espressif’s successor to the ESP8266. In addition to WiFi, the ESP32C3 features BLE 5.0 and Bluetooth Mesh communication. It also has the useful GPIO matrix so that almost any function can be assigned to almost any pin.
Espressif has confirmed the ESP32C3 as its first fully-RISC-V-based microcontroller product. The ESP32C3 is based on a 32-bit single-core RISC-V microcontroller running at up to 160MHz with 400kB of static RAM (SRAM), 2.4GHz Wi-Fi and Bluetooth Low Energy 5.0 support, and 22 programmable general-purpose input/output pins.
The ESP32C3 is designed to replace the ESP8266 as a drop-in replacement. A preliminary block diagram confirms a 32-bit RISC-V primary processor running at up to 160MHz, 2.4GHz Wi-Fi 802.11b/g/n and Bluetooth 5.0, Bluetooth Low Energy (BLE), and Bluetooth Mesh connectivity, a real-time clock, cryptographic acceleration, and a range of on-board devices including GPIO, I2C, I2S, SPI, PWM, UART, GDMA, USB, TWAI, ADC, RMT, timers, and a temperature sensor.
Espressif’s ESP family of microcontrollers has long been popular with makers and tinkerers thanks to its flexibility and low cost. The ESP8266 has been the basis for a number of builds requiring Wi-Fi connectivity, while the ESP32 offers improved performance. The ESP32-S2, meanwhile, boosted specifications still further — and broke ground by adding an ultra-low-power coprocessor based on the free and open source RISC-V instruction set architecture.
Now, it looks like Espressif is making the jump from Arm to RISC-V: Details have leaked of the ESP32C3, the company’s upcoming ESP32 entry, with claims it will be the first to use a RISC-V core as its primary processor — ditching Arm entirely.
The controller block diagram clearly shows that the ESP32-C3 is a descendant of the ESP32. With its 384 kB RAM, the ESP32-C3 has almost five times as much RAM as the ESP8266 (80 kB). The main difference between the ESP32-C3 and all other ESP32 and ESP8266 chips is the processor core. While its predecessors used the Tensilica L106 or LX6/LX7 RISC processor, the ESP32-C3 has a RISC-V CPU. That means you can use compilers and other programs from the RISC-V toolchain with this core. Improvements to these compilers and other tools thus benefit users of the ESP32-C3. The community doesn’t need to set up a toolchain, as it already did with the ESP8266’s initial introduction.
The ESP32-C3-12F developmentboard includes a USB/serial converter and a WS2812 compatible RGB LED. A detailed diagram of the map can be found here. In the image below you can see both sides of the developmentboard .
I wrote a seperate Blog about how to use the developmentboard in Arduino and how to control the onboard RGB LED. You can find the blog here.
Porting ESP32 projects
Some very useful features of the ESP32-C3 are the built-in WiFi and BLE communication. Together with SPIFFS or the LittleFS file system for managing web pages and other data on the ESP32, it provides an ideal platform for all kinds of WiFi applications. Those still working with an older (1.X) version of the Arduino IDE will need to install a patched plugin to be able to upload files to the ESP32 file system. The original version of me-no-dev does not work with the ESP32-C3.
Much of the existing code and knowledge of the ESP32 can be used directly by the ESP32-C3, so even novices to the RISC-V environment should be able to make that switch. Most of the existing ESP32 examples also run on the ESP32-C3, and because FreeRTOS is also there in the background, you can take advantage of all the advantages and disadvantages that come with that, just like on the ESP32.
ESP32-C3: A Single-Core Solution
The ESP32-C3 is a cost-effective alternative to the ESP8266 with much of the periphery of the ESP32 and only one processor core. The integrated USB/serial and JTAG adapter make exchanging files and data via USB easy. You can even start debugging code (if nothing unforeseen happens in revision 3 of the chip).
Thanks to the Arduino framework, existing code can be reused with the ESP32-C3, and the ample amount of RAM and flash allows for larger projects. We can certainly expect many third party ESP32-C3 boards in the European market in the future and it will be interesting to see what functionality they offer. Anyone who has an ESP32-DevKitC-02 at home can already start writing and testing code for this environment.
Reference
Elektormagazine, aan-de-slag-met-de-esp32-c3-risc-v-mcu, https://www.elektormagazine.nl/news/aan-de-slag-met-de-esp32-c3-risc-v-mcu Hackster, espressif-s-esp32-c3-leaks-as-a-drop-in-pin-compatible-risc-v-replacement-for-the-popular-esp8266 , https://www.hackster.io/news/espressif-s-esp32-c3-leaks-as-a-drop-in-pin-compatible-risc-v-replacement-for-the-popular-esp8266-f535223d7e68 Hackaday, hands-on-the-risc-v-esp32-c3-will-be-your-new-esp8266, https://hackaday.com/2021/02/08/hands-on-the-risc-v-esp32-c3-will-be-your-new-esp8266/