I'm unsure how I can program an ESP32-S3 without using the UART interface it has. In the past I always used a USB to UART converter and then I could flash the device over USB automatically, but could not use the JTAG for debugging:
Now I would like to use directly the USB (IO19 and IO20), but I'm unsure if I can flash the device with that and how I can trigger a reset automatically without always pressing a reset button, like in the above schematic. Has anyone already experience with that?
Planed (D- to IO19, D+ to IO20):
Datasheet ESP32-S3: https://media.digikey.com/pdf/Data%20Sheets/Espressif%20PDFs/ESP32-S3-WROOM-1_1U_v0.5.1_Preliminary.pdf
Best Answer
On the datasheet you have attached in page 25 there's an implementation for a JTAG interface that you can use as a reference.
Besides that, the ESP32 has an eFuse that can enable or disable the Jtag, make sure it's not disabled.
If you intend to debug using Jtag I would strongly recommend reading this article It's a little old but sadly it's relevant.
Finally some extra advice by me: Make sure the supply voltage is stable, I have spent countless hours with gdb not being able to find the ESP due to power drops. Adding 3 10uF capacitors in the power supply seemed to help.
Edit:
This specific chip has an internal JTAG interface, to access it you would need special USB drivers, here's a relevant article, I hope it can be useful.
The eFuse should be set to the internal JTAG by default, but just in case you can use the
esptool.py
to check, here's some instructions