3 ms·
Bit on strapping pins gives my nightmares. Lost tens of hours of my life trying to bring a new ESP32-based board up. Debugging code, cutting traces and solderi
by brotchie 3y ago
Bit on strapping pins gives my nightmares.
Lost tens of hours of my life trying to bring a new ESP32-based board up. Debugging code, cutting traces and soldering bridge wires, buying and using a logic analyzer.
Turns out:
Some of the pins on the ESP32
a) Are strapping pins (configure stuff like what voltage to talk to FLASH). Luckily there's a few fuses you can blow to hardcode some of the settings the strapping pins are reading, so they ignore logic level on boot,
b) Default back to JTAG pins. For example, you have to explicitly reset GPIO12 - gpio_reset_pin(GPIO12) to use it as an I/O pin again (this burnt a day of my life).
Lesson learnt, if something weird is happening with your micro, check for strapping and / or default pin behavior.
- rightbyte 3y agoYe pins on those are used for many different things. Really annoying. I had the same one-day-issue. "Solved" it by quickly removing the programmer after booting and connect my uart device ...
- roland35 3y agoSame deal with Kinetis and ST micros - there are a few BOOT pins which can really ruin your day! They are documented but it isn't super obvious. I found that it is important to check a few parts of the datasheet/reference manual before using any part and designing a circuit: - What are the default states of every pin on start up? - What is the boot sequence? Is there a pin or setting to switch the boot between Flash, RAM, bootloader, etc? - Is there any built-in bootloader? How is it triggered? - What are the Flash config bytes/fuse settings?