I'm working with an inherited custom board which is using an esp32-d0wdq6. When programming I get an error stating "Failed to connect to ESP32: Timed out waiting for packet header" and "ESP32 Chip sync error esp_sync_blocking".
I have tried various programming tools to flash the chip such as Arduino(esptool.exe), esptool.py, flash_download_tools_v3.6.8. Also, I am using a TTL-232R-3V3 USB to TTL converter to interface with the board. I've had previous experience with programming an esp32-PICO in another project which was in-circuit and I've programmed with this method and experienced no issues. All I had to do was hold GPIO0 LOW and toggle the RST and it flashed perfectly
The esp32 is placed in circuit to be programmed via USB, however I have bypassed this and connected directly to the chip's I/O pins and powering directly via PSU (because the chip is currently not programmed and the USB is not being detected). I can't share any circuit schematics but I can detail the strapping pins I have configured for downloading (Although I believe the circuit is very similar to that of the esp32-DEVKIT).
I have read many forums stating how to configure the strapping pins and I think I have done so correctly:
GPIO0 - held at 0V
GPIO2 - floating
MTDI - held at 0V
CHIP_PU - Toggled manually 0V to VCC to enter programming mode
Toggling the CHIP_PU from LOW to HIGH I get an output of the following seen on PUTTY:
- ets Jun 8 2016 00:22:57
- rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
- waiting for download
I have an older version of the circuit which is in production, and programmable through the USB. There's been no changes in the current hardware design to affect the programming. I tried flashing the old circuit with the direct connection method via the USB to TTL converter, I get the same issue.
Reverting back to programming the old circuit with USB, it programs successfully. I monitored the GPIO0 and CHIP_PU lines during a successful program by the Arduino IDE and I caught the following:
This sequence of toggling seems quite complicated and it isn't stacking up with what I'm reading on the internet. Is it a matter of holding GPIO0 at LOW and toggling CHIP_PU? Or is it much more complicated sequence of handshakes? Is it possible to piggy back off an esp programmer or a devkit?
I hope you can help out