How to debug ESP32C3 Xiao?

Is there a way to use a debugger over USB with the ESP32C3 Xiao other than soldering a third party debugger to the bottom side JTAG pins?

Hi Dean,
Try the Xiao Expansion board, Then use Platformio and Debugger ,Progy or Jlink works well.
HTH
GL :slight_smile:


thanks! So, the Expansion board actually has spring pins that contact the swd pins on the bottom of the Xiao. Brilliant!

dean

That sounds great. I also have the expansion + xiao esp32c3 + jlink. However I don’t use platformio, I just want to use openocd however it is not detecting the board.
The expansion board only connects the 2 swd pins. The espressif website says that esp32c3 doesn’t support swd so I wonder how does platformio gets it to work and whether it can be mimic with some openocd configuration

1 Like

Hi there,
Take a look at the links and see with the correct probe it’s a 1-click debug :wink: You can use usb-proggy or jlink it’s the jtag method to upload and debug AFAIK.
https://docs.platformio.org/en/latest/boards/espressif32/seeed_xiao_esp32c3.html
https://docs.platformio.org/en/latest/boards/espressif32/seeed_xiao_esp32s3.html
HTH
GL :slight_smile: PJ

Hey there, thanks a bunch for your help so far! I just wanted to double-check something: Is the board you’re currently using alongside your expansion board an S3 or C3? I’m also curious to know how you managed to establish the JTAG connection. It seems that according to edge30, the expansion board only has two SWD pins, which aren’t found on the S3 or C3.

I apologize for bombarding you with all these questions; I’m still getting the hang of things, hehe! Any hints or suggestions you could offer would be incredibly valuable. By the way, I’m using PlatformIO with XiaoESP32C3 and Jlink, but I don’t actually have an expansion board yet. I’m thinking of buying one if it’ll work for debugging purposes.

Cheers, Maurice

1 Like

Hi there,
No problem , I added two more pogo’s to my socket that is 3d printed(posted on here & thingiverse). I can connect to a esp proggie or Jlink which I’m using now. I would think seeed would make an adapter to include those two extra pads.



I might spin up a sandwich board for that an IMU and proper Battery reading divider time permitting. Seeed should jump on it and save there day. IMO

HTH
GL :slight_smile: PJ

Could you tell me how the connection with esp-prog would be?

Hi there,
You know it’s described in Section 30 of the hardware reference, I.E.
"the ESP32-C3 contains an USB Serial/JTAG Controller, which integrates the functionality of both an USB-to-serial converter as well as those of an USB-to-JTAG adapter. As this device directly interfaces to an external USB host using only the two data lines required by USB2.0, debugging the ESP32-C3 only requires two pins to be dedicated to this functionality.
https://www.espressif.com/sites/default/files/documentation/esp32-c3_technical_reference_manual_en.pdf
It’s the D+ and D- points on the bottom of the S3 variant. On the C3 the schematic shows the USB-+/- ae Gpio 18 & 19.(which are the USB port for swd debug, Jtag external like the ESP=prog can be used if you need external debugger for Deep-Sleep Debugging , However the internal one works for light sleep. (not effected by System Reset). It connects the same as the generic jtag for ESP32 I used Brian Blow’s guide for platfrom IO to connect it a while back and test. If i get some time I’ll recreate it.
The hardest part was the Platform io INI file options for devices.

HTH
GL :slight_smile: PJ

1 Like

Thank you very much.

Access to the D+ and D- pins underneath is pretty annoying.

With seeed studio it gets worse.

I’m developing with a Lolin C3 Pico (just plug in the usb and that’s it!) and then I load the program on XIAO.

1 Like

OK, now I’m confused! Looking at the schematics for the Xiao C3 and S3, the D+/D- Usb pins on the back are the same as the actual USB C connector are they not? So, why go to the trouble of connecting with spring loaded contacts to the USB D+/D- pins on the back when they’re already part of the USB C connector?
I know that on the SamD21 Xiao, the two pins on back SWDIO/SWCLK are all you need for a Microchip ATMEL_ICE debugger.
But, how do you exactly debug the ESP32S3 or ESP32C3 Xiao’s using USB C or spring pins accessing MTDO, MTDI, EN, MTCLK, MTMS on the back?

I would like to know why I can’t just use my usb cable, as the ESP32C3 chip allows me to do this and other cards work just fine!