9/30/2024
Having spent quite a bit of time working with the ESP32 microcontroller boards I was intrigued
with a more recent offering, the ESP32-C6 version.
Unlike it’s predecessors, the C6 is built around a dual core RISC-V processor instead of the Xetensa
included in previous iterations.
I had read about the RISC-V open source CPU design concept some time ago and thought it would
be interesting to explore the differences. So I added a few of the boards like the one
pictured above to my birthday wish list. (at the time AliExpress was selling them for just under $5 each).
As it turned out, unless I wanted to code for the RISC-V processor in assembly language, I would not
notice any difference since the eclipse IDE simply invoked a different version of the GCC C compiler
specifically for RISC-V processors. The ESP32-C6 uses the (almost) exact same
software development package (espressive IDF) as previous versions of ESP32.
I didn’t even have make any changes to my eclipse IDE setup since the support for the C6 was already
there. I simply had to select that device at compile time.
Hardware-wise, upon closer examination, there quite a few differences between this and the previous version.
Missing from the ESP32-C6 are:
Max speed 160 mhz (vs 240 mhz)
512K SRAM (vs 520K)
DAC
Touch Peripheral
SD Card Peripheral
Ethernet MAC Peripheral
Only 1 SPI interface (vs 4)
Only 2 General Purpose Timers (vs 4)
Additional Features Include:
USB/JTAG Hardware
System Timer
Temp Sensor
RGB addressable LED (vs just a standard LED)
Here's a link to the datasheet:
https://www.espressif.com/sites/default/files/documentation/esp32-c6_datasheet_en.pdf
As a hobbyist, the lack of true DAC hardware really didn’t bother me too much since I’ve
been doing fine substituting PWM so far.
Same goes for the speed difference, I’m not doing any super high speed projects that require more
than 160 mhz. The timers might eventually be missed though.
However the addition of a built-in USB peripheral with USB JTAG support was quite welcome.
This allowed me to finally use the GDB debugger built into my eclipse IDE setup
WITHOUT BUYING A JTAG ATAPTER. Now for the first time I can program, flash and step through
my code line by line with breakpoints and watch variables instead of having to rely on print statements
or LED indicators. This would actually be great for beginners if setting up the GDB debugger wasn’t
so difficult.
NOTE: if you try this, I found debugging will not work if the device is plugged into a USB HUB.
I needed to be sure it was plugged directly into one of the ports on my actual PC.
I’m still undecided about the trend to include addressable RGB LEDs (NeoPixel) in place of a
standard LED on these development boards.
Although the color and brightness of an RGB led is practically unlimited, and can be controlled with a single
GPIO pin, one has to include a fair amount of code to get these RGB LEDs to simply light up. You can of
course simply choose to ignore the on-board RGB led and add a standard one to your breadboarded setup.
Speaking of breadboards, you’ll notice the board uses the same wide format as previous ESP3
boards so I needed to create another customized solderless breadboard to hold this one.
Description of download links:
nanoESP32C6.pdf ESP32-C6 Board Schematic