Introduction

I am working on a project that will be powered by the ESP32-C3. Unfortunately, I don’t want to provide more details on that project right now… Anyway, in order to get used to this ESP32-C3 and to make sure that I understand how to create a custom board based on it, I decided to create my own custom dev board. My design is of course greatly inspired by the standard dev board, albeit with a few tweaks here and there.

The reason I chose the “C3” variant, which is by far not the most popular variant, is because it is RISC-V based and I want to start getting some RISC-V experience. Specifically, I want to have some ultra-low-level RISV-C fun at some point. However, for this project I will likely stick to C.

Native USB vs. UART to USB adapter

As far as I can tell, the ESP32 supports programming both via UART and via native USB. Even though the standard dev board has a USB connector, it is by default connected to the UART port through a converter IC. So it would seem that programming via UART is more popular. However, for me, programming over native USB using OpenOCD actually seems a lot more interesting. So to be safe and give myself options, I added both interfaces to my dev board. I will play around to see how it works and then decide how to proceed with my next board.

USB-C connector for USB 2.0 interface

It would seem that USB-C is all the rage these days. So of course I want to get in on that with my new board… Unfortunately, neither the ESP nor the UART IC natively support USB-C. They can only really handle USB 1.0, maybe 2.0. The thing is that USB-C connectors are actually backwards compatible with the original USB specification, they just have a hell of a lot more pins added. Originally this sounded like a major inconvenience, but after some quick searching on Digi-Key, it turns out you can buy type-C connectors which essentially only expose the “traditional” USB 2.0 type signals. Well those and 2 extras called “SBU” and “CC”. As far as I could determine, the correct way to deal with these pins in a situation like this is simply to connect 5.1 kΩ resistors to each CC pin and ignore the SBU ones.

Lets hope this works out!

The circuit

When I saw that Altium released a free embeddable PCB viewer, I knew I had to give it a shot. So here goes nothing:

The schematic should be pretty self explanatory, but if anything is unclear, please feel free to leave a comment and I’ll try to clear it up. Please also feel free to point out anything that I might have done wrong or can improve on.

Next steps

Due to the component shortage I will unfortunately have to wait around two months before I will be able to build these boards. Once I’ve built them, I will of course come back with a new blog post reporting on how it went. I might even have to do a revision on my design…

References

To establish what has to be done with the CC pins on the USB-C connector I read Converting Existing USB Designs to Support Type-C Connections and Overview of USB Type-C and Power Delivery technologies.

I took plenty of inspiration for the design of my dev board from the ESP32-C3-DevKitM-1 schematic.

To get a better understanding of what to look out for when doing PCB layout with RF modules I watched Basic Wireless Design with RF Modules - Wilson.

Comments

Comments are hosted on GitHub