ESP32-S2: gpio_pullup_en(GPIO_NUM_xx) does not work correctly (Arduino ESP32 Board manager)
Posted: Sun Jul 13, 2025 5:55 am
Hi,
it seems to me, the command does not work for all RTC-GPIOs, or worse: it works only with GPIO 18...
Target is, to wake up the ESP32-S2 with up to 4 different external sources (GPIOs) from deep sleep using
For the test I have a bare LOLIN S2-mini board: https://www.wemos.cc/en/latest/s2/s2_mini.html
and I'm probing the GPIO voltage with a multimeter.
There is no additional HW.
I tried this with different HW, as well as different Espressif Board managers for Arduino (3.1.3 and 3.2.0)
According to the -S2 manual it should work with all (RTC-) GPIOs from 0 to 21.
I'running this (stripped) code:
Very strange. I hope anybody has an idea...
rgds p
it seems to me, the command
Code: Select all
gpio_pullup_en(GPIO_NUM_xx);Target is, to wake up the ESP32-S2 with up to 4 different external sources (GPIOs) from deep sleep using
Code: Select all
esp_sleep_enable_ext1_wakeup_io(mask, ESP_EXT1_WAKEUP_ANY_LOW);and I'm probing the GPIO voltage with a multimeter.
There is no additional HW.
I tried this with different HW, as well as different Espressif Board managers for Arduino (3.1.3 and 3.2.0)
According to the -S2 manual it should work with all (RTC-) GPIOs from 0 to 21.
I'running this (stripped) code:
Code: Select all
#include <driver/rtc_io.h>
void setup() {
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON);
// sample pins
gpio_pullup_en(GPIO_NUM_16); // no effect
gpio_pullup_en(GPIO_NUM_18); // OK -> GPIO18 = 3V3
gpio_pullup_en(GPIO_NUM_8); // no effect
gpio_pullup_en(GPIO_NUM_10); // no effect
delay(10);
esp_deep_sleep_start();
}
void loop() {
// put your main code here, to run repeatedly:
}
rgds p