ESP32 ignores MTDI Strapping Pin (Can't activate 1.8V Regulator)
Posted: Thu Mar 16, 2023 2:36 pm
Hardware: ESP32 Dev Kit C V2, MCU ESP32S.
Goal: activate 1.8V domain, so some GPIO work at 1.8V.
According to technical reference manual, in order to activate 1.8V regulator on boot, one needs to pull GPIO12 - TDMI - high - during the said boot. Unfortunately, doing this stalls the microcontroller: it doesn't blink, it spits out error messages over serial (my blink program doesn't have any serial code) forever, until GPIO12 is disconnected from 3.3V, at which point it starts to blink GPIO17 (which is in VDD_SDIO domain, which is supposed to be 1.8V) at 3.3V. Also, programming the chip while GPIO12 is pulled high is impossible, it reports errors and refuses to be programmed. Even tho GPIO12 is not connected to anything on the board.
I've read on the internet, that getting 1.8V regulator on boot or at runtime is possible, multiple places on the internet mention that, but not a single one of them has ever showed that it's possible. There are no successful examples of getting 1.8V regulator running anywhere on the internet, and I've never developed on ESP32 before (I'm an ARM person, so I generally understand some things), so I don't have enough experience to quickly figure out why the microcontroller violates its own technical reference manual information.
The program I use is the most basic blink program
Question: how do I get 1.8V regulator on at runtime or on boot without permanently burning fuses?
Goal: activate 1.8V domain, so some GPIO work at 1.8V.
According to technical reference manual, in order to activate 1.8V regulator on boot, one needs to pull GPIO12 - TDMI - high - during the said boot. Unfortunately, doing this stalls the microcontroller: it doesn't blink, it spits out error messages over serial (my blink program doesn't have any serial code) forever, until GPIO12 is disconnected from 3.3V, at which point it starts to blink GPIO17 (which is in VDD_SDIO domain, which is supposed to be 1.8V) at 3.3V. Also, programming the chip while GPIO12 is pulled high is impossible, it reports errors and refuses to be programmed. Even tho GPIO12 is not connected to anything on the board.
I've read on the internet, that getting 1.8V regulator on boot or at runtime is possible, multiple places on the internet mention that, but not a single one of them has ever showed that it's possible. There are no successful examples of getting 1.8V regulator running anywhere on the internet, and I've never developed on ESP32 before (I'm an ARM person, so I generally understand some things), so I don't have enough experience to quickly figure out why the microcontroller violates its own technical reference manual information.
The program I use is the most basic blink program
Code: Select all
void setup() {
pinMode(17, OUTPUT);
}
void loop() {
digitalWrite(17, HIGH);
delay(1000);
digitalWrite(17, LOW);
delay(1000);
}