GPIO0 connected to GND makes the esp32 enter download mode

zandam
Posts: 3
Joined: Sat Jan 05, 2019 2:08 pm

GPIO0 connected to GND makes the esp32 enter download mode

Postby zandam » Sat Jan 05, 2019 3:16 pm

Hardware:
Board: ESP32 Dev Module
IDE name: Platform.io
Flash Frequency: 40Mhz
PSRAM enabled: no
Upload Speed: 115200
Computer OS: Windows 10

Description:

Hello, I have a custom made PCB developed for esp32-devkit-v4 form factory. This PCB basically has a
a solid state relay controlled by the esp32 module.
Because of the PCB board design the relay is connected to the GPIO0 pin of the esp32 module. So during the boot the GPIO0 acts as it's held low.

I've been able to reproduce this behaviour by connecting, with a jumper cable, the GPIO0 pin with a GND pin. In this case the esp32 does not actually boot and the message printed in the serial monitor is below.
In this case, removing the connection between those two pins and rebooting the esp32 it will boot correctly.

So, as I can not re-design the PCB board at the moment and I can not change the esp32 device, is there a way (a workaround) to fix the GPIO0 behaviour in order to not be considered set on low during boot?

Debug Messages:
  1. rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
  2. waiting for download

User avatar
loboris
Posts: 514
Joined: Wed Dec 21, 2016 7:40 pm

Re: GPIO0 connected to GND makes the esp32 enter download mode

Postby loboris » Sat Jan 05, 2019 6:01 pm

GPIO0 must be high on reset not to enter the bootloader mode, after booting you can use it as any GPIO.
Why is it held low and how is it driving SSR, via transistor or directly?
You should put a pull-up resistor on GPIO0 so that it is in high state during reset.

zandam
Posts: 3
Joined: Sat Jan 05, 2019 2:08 pm

Re: GPIO0 connected to GND makes the esp32 enter download mode

Postby zandam » Sat Jan 05, 2019 7:00 pm

loboris wrote:
Sat Jan 05, 2019 6:01 pm
GPIO0 must be high on reset not to enter the bootloader mode, after booting you can use it as any GPIO.
Why is it held low and how is it driving SSR, via transistor or directly?
You should put a pull-up resistor on GPIO0 so that it is in high state during reset.
Thanks for the reply.
I'm not expert in electronics but I'll try to answer you the best I can.
The pin is driving the relay via transistor (1fw I suppose).
I don't know why GPIO0 it's held low (unluckyly I don't have the circuit schematics but I can upload a photo of the board) but the pin is connected to the PCB board circuit.
As you can see from the attached photo, there's another pcb issue: the circuit gnd is soldered to the fifth pin which is NOT the esp32 gnd. So I needed to add that "bridge" on the outer side that connects the fifth and the sixth pins together, in order to close the circuit.

I maybe forgot to mention that without that "ground bridge" the esp32 boots correctly. From what I observed it's the same behaviour of connecting the GPIO0 to a GND pin.
Attachments
pcbm35.jpeg
pcb board photo
pcbm35.jpeg (134.46 KiB) Viewed 14402 times

Who is online

Users browsing this forum: No registered users and 130 guests