Unable to flash ESP32-WROOM-32 (ESP32-DEVKIT-V1) when plugged in to custom PCB

OMG. I think I solved it! Hopefully I’m not speaking prematurely.

The PCB and code uses sdmmc instead of SPI to talk to the microSD card, which is on the PCB. Because it uses GPIO12, there is a conflict between bootstrap and SDIO. I found this:

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/sd_pullup_requirements.html#strapping-conflicts-dat2

It is also mentioned in the github for sdmmc: esp-idf/examples/storage/sd_card/sdmmc/README.md at master · espressif/esp-idf · GitHub

The solution was to run this:

espefuse.py set_flash_voltage 3.3V

This removes GPIO12 as a bootstrap pin!

I can now flash the ESP32 while it is installed on the PCB. The board no longer is in an endless boot loop and the firmware actually runs! (Jury is still out on whether the rest of the components will work as expected once they are connected to the PCB.)

@sivar2311 Thank you for your advice. Although you didn’t provide me with the direct answer, it was your link to the bootstrap pins that led me down this path. Thank you!

1 Like