Good day,
We are using a ESP32-S3-DEVKITC-1-N8 for a POC. We have a 100kΩ pull down resistor on GPIO0.
We power the device by pressing a button, which is also connected to GPIO0 to determine when it is pressed again.
When the button is pressed, the input to GPIO0 = 3.3V, when it is released, the input remains at 2.8V.
We have tested our board without the ESP inserted, and the pull down works correctly. We have also tested the ESP and the voltage is 2.9V on GPIO0.
The GPIO0 is set up using Arduino IDE with the code: pinMode(0, INPUT);
I have even tried using internal pull-downs with the code: pinMode(0, INPUT_PULLDOWN); This sucesfully pulls the pin low to 0V when the ESP is not plugged in and powered through usb. But when we power the device while pressing the button, it remains at 2.8V when the button is released.
Is this related to GPIO0 being a strapping pin? How can we properly set up the pin to pull down to 0V as it should after boot up?
Regards
Douglas
ESP32-S3: GPIO0 pull-down Issue
-
- Posts: 9764
- Joined: Thu Nov 26, 2015 4:08 am
Re: ESP32-S3: GPIO0 pull-down Issue
Pulling GPIO0 low on startup also puts the device in download mode (meaning your Arduino app isn't executed, and the built-in pullup on that pin is never undone). Perhaps that can explain the issue? Mostly saying this because:
This is suspect... how can a pin that is 0V when nothing is connected to it suddenly go to 2.8V when you connect a pulldown to it?This sucesfully pulls the pin low to 0V when the ESP is not plugged in and powered through usb. But when we power the device while pressing the button, it remains at 2.8V when the button is released.
-
- Posts: 12
- Joined: Thu May 19, 2022 12:47 pm
Re: ESP32-S3: GPIO0 pull-down Issue
HI,
When we press the button it switches on power to the ESP.
The button then also pulls the pin high, and when it is released it does not fall to 0V but remains at 2.8V.
So in effect when the device is started, GPIO0 = 3V3.
If I have the ESP removed and I power it then using USB, GPIO = 0V. I then apply an external 3V3 to GPIO0 and when I remove it, it returns to 0V.
It seems like the issue is when the device starts with GPIO0 = 3v3, then it does not pull low to GND when it is set up as an Input even with an external pull down to GND.
When we press the button it switches on power to the ESP.
The button then also pulls the pin high, and when it is released it does not fall to 0V but remains at 2.8V.
So in effect when the device is started, GPIO0 = 3V3.
If I have the ESP removed and I power it then using USB, GPIO = 0V. I then apply an external 3V3 to GPIO0 and when I remove it, it returns to 0V.
It seems like the issue is when the device starts with GPIO0 = 3v3, then it does not pull low to GND when it is set up as an Input even with an external pull down to GND.
Re: ESP32-S3: GPIO0 pull-down Issue
The internal pullup on GPIO0 is reenabled during every chip reset. It is unclear from your description: are you resetting the pin state every time you press the button and restart the ESP?
What version of Arduino are you using? Old versions of Arduino did not alter the pullup/pulldown state when pinMode(0,INPUT) was called, but I am not sure if that ever applied to ESP32.
As another check, can you read the voltage on both sides of the external pulldown resistor? Just to double-check whether that outside line is high as expected and not low or floating.
What version of Arduino are you using? Old versions of Arduino did not alter the pullup/pulldown state when pinMode(0,INPUT) was called, but I am not sure if that ever applied to ESP32.
As another check, can you read the voltage on both sides of the external pulldown resistor? Just to double-check whether that outside line is high as expected and not low or floating.
Re: ESP32-S3: GPIO0 pull-down Issue
I am having the same issue. How did you fix it?
-
- Posts: 12
- Joined: Thu May 19, 2022 12:47 pm
Re: ESP32-S3: GPIO0 pull-down Issue
I just moved pins around and kept GPIO0 for the programming only.
Who is online
Users browsing this forum: No registered users and 88 guests