mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 15:14:33 +02:00
light sleep: add software workaround for esp32s3 gpio reset issue
This commit is contained in:
@@ -192,23 +192,4 @@ menu "ESP32C3-Specific"
|
|||||||
If enabled, this disables the linking of binary libraries in the application build. Note
|
If enabled, this disables the linking of binary libraries in the application build. Note
|
||||||
that after enabling this Wi-Fi/Bluetooth will not work.
|
that after enabling this Wi-Fi/Bluetooth will not work.
|
||||||
|
|
||||||
config ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND
|
|
||||||
bool "light sleep GPIO reset workaround"
|
|
||||||
default y
|
|
||||||
select PM_SLP_DISABLE_GPIO if FREERTOS_USE_TICKLESS_IDLE
|
|
||||||
help
|
|
||||||
ESP32C3 will reset at wake-up if GPIO is received a small electrostatic pulse during
|
|
||||||
light sleep, with specific condition
|
|
||||||
|
|
||||||
- GPIO needs to be configured as input-mode only
|
|
||||||
- The pin receives a small electrostatic pulse, and reset occurs when the pulse
|
|
||||||
voltage is higher than 6 V
|
|
||||||
|
|
||||||
For GPIO set to input mode only, it is not a good practice to leave it open/floating,
|
|
||||||
The hardware design needs to controlled it with determined supply or ground voltage
|
|
||||||
is necessary.
|
|
||||||
|
|
||||||
This option provides a software workaround for this issue. Configure to isolate all
|
|
||||||
GPIO pins in sleep state.
|
|
||||||
|
|
||||||
endmenu # ESP32C3-Specific
|
endmenu # ESP32C3-Specific
|
||||||
|
@@ -34,6 +34,25 @@ menu "Hardware Settings"
|
|||||||
bool
|
bool
|
||||||
default y if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
|
default y if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
|
||||||
|
|
||||||
|
config ESP_SLEEP_GPIO_RESET_WORKAROUND
|
||||||
|
bool "light sleep GPIO reset workaround"
|
||||||
|
default y if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3
|
||||||
|
select PM_SLP_DISABLE_GPIO if FREERTOS_USE_TICKLESS_IDLE
|
||||||
|
help
|
||||||
|
esp32c3 and esp32s3 will reset at wake-up if GPIO is received a small electrostatic
|
||||||
|
pulse during light sleep, with specific condition
|
||||||
|
|
||||||
|
- GPIO needs to be configured as input-mode only
|
||||||
|
- The pin receives a small electrostatic pulse, and reset occurs when the pulse
|
||||||
|
voltage is higher than 6 V
|
||||||
|
|
||||||
|
For GPIO set to input mode only, it is not a good practice to leave it open/floating,
|
||||||
|
The hardware design needs to controlled it with determined supply or ground voltage
|
||||||
|
is necessary.
|
||||||
|
|
||||||
|
This option provides a software workaround for this issue. Configure to isolate all
|
||||||
|
GPIO pins in sleep state.
|
||||||
|
|
||||||
config ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND
|
config ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND
|
||||||
bool "PSRAM leakage current workaround in light sleep"
|
bool "PSRAM leakage current workaround in light sleep"
|
||||||
depends on SPIRAM
|
depends on SPIRAM
|
||||||
|
@@ -6,3 +6,4 @@ CONFIG_TWO_UNIVERSAL_MAC_ADDRESS CONFIG_ESP32_UNIVERSAL_M
|
|||||||
CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR
|
CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR
|
||||||
|
|
||||||
CONFIG_ESP_SYSTEM_PD_FLASH CONFIG_ESP_SLEEP_POWER_DOWN_FLASH
|
CONFIG_ESP_SYSTEM_PD_FLASH CONFIG_ESP_SLEEP_POWER_DOWN_FLASH
|
||||||
|
CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND
|
||||||
|
@@ -434,7 +434,7 @@ IRAM_ATTR ESP_SYSTEM_INIT_FN(init_components0, BIT(0))
|
|||||||
{
|
{
|
||||||
esp_timer_init();
|
esp_timer_init();
|
||||||
|
|
||||||
#if CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND && !CONFIG_PM_SLP_DISABLE_GPIO
|
#if CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND && !CONFIG_PM_SLP_DISABLE_GPIO
|
||||||
// Configure to isolate (disable the Input/Output/Pullup/Pulldown
|
// Configure to isolate (disable the Input/Output/Pullup/Pulldown
|
||||||
// function of the pin) all GPIO pins in sleep state
|
// function of the pin) all GPIO pins in sleep state
|
||||||
esp_sleep_config_gpio_isolate();
|
esp_sleep_config_gpio_isolate();
|
||||||
|
Reference in New Issue
Block a user