Question
How do I troubleshoot the ESP32 USB JTAG/UART interface on a new PCB design?
Background
My son is working on a project to track satellites and this is the first time that we have worked with USB a layout, and the first time that we have put an ESP32-C6 module on a manufactured board. So far we have just used the ESP32 development kits and of course for those, USB JTAG works out of the box.
Schematics and layout are below.
This is what works on our board:
- The debug UART we exposed on the board. (We can flash the program over the UART.)
- USB +5 and the 3.3v LDO
- The OLED driven over I2C by the ESP32C6
What doesn't work:
Even after flashing the default bootloader from an Espressif I2C OLED example program, the USB JTAG interface does not show up when we plug into a desktop USB host and watch dmesg -w
.
We have already verified that there are no shorts between any of USB D+/-, GND, +5 or +3.3. The schematic was designed as nearly identical to the development kit's reference schematic.
... so, how do we go about troubleshooting the USB communication issue?
If there is a software setting that has to be enabled to activate the USB JTAG interface, then please point that out as well.
Thanks for your help!
USB Connector Schematic
The bottom-left thing is an ESD suppressor:
ESP32-C6 Schematic on our board
See netlabels between schematics
Our layout near the ESP32
We calculated a 90-ohm differential trace, which you can see in the layout quite clearly. Even if impedance is off slightly the traces extremely short so am surprised that we do not see any USB traffic at all.