mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-08 07:04:32 +02:00
light sleep: fix SPIRAM leakage when its CS pin has no hardware pullup
This commit is contained in:
@@ -33,5 +33,14 @@ menu "Hardware Settings"
|
|||||||
config ESP_SLEEP_RTC_BUS_ISO_WORKAROUND
|
config ESP_SLEEP_RTC_BUS_ISO_WORKAROUND
|
||||||
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_PSRAM_LEAKAGE_WORKAROUND
|
||||||
|
bool "PSRAM leakage current workaround in light sleep"
|
||||||
|
depends on SPIRAM
|
||||||
|
help
|
||||||
|
When the CS pin of SPIRAM is not pulled up, the sleep current will
|
||||||
|
increase during light sleep. If the CS pin of SPIRAM has an external
|
||||||
|
pull-up, you do not need to select this option, otherwise, you
|
||||||
|
should enable this option.
|
||||||
endmenu
|
endmenu
|
||||||
endmenu
|
endmenu
|
||||||
|
@@ -20,6 +20,14 @@
|
|||||||
#include "esp_private/gpio.h"
|
#include "esp_private/gpio.h"
|
||||||
#include "esp_private/sleep_gpio.h"
|
#include "esp_private/sleep_gpio.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_IDF_TARGET_ESP32
|
||||||
|
#include "esp32/spiram.h"
|
||||||
|
#elif CONFIG_IDF_TARGET_ESP32S2
|
||||||
|
#include "esp32s2/spiram.h"
|
||||||
|
#elif CONFIG_IDF_TARGET_ESP32S3
|
||||||
|
#include "esp32s3/spiram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static const char *TAG = "sleep";
|
static const char *TAG = "sleep";
|
||||||
|
|
||||||
#if SOC_GPIO_SUPPORT_SLP_SWITCH
|
#if SOC_GPIO_SUPPORT_SLP_SWITCH
|
||||||
@@ -53,6 +61,9 @@ void esp_sleep_config_gpio_isolate(void)
|
|||||||
gpio_sleep_set_pull_mode(gpio_num, GPIO_FLOATING);
|
gpio_sleep_set_pull_mode(gpio_num, GPIO_FLOATING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if CONFIG_ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND && CONFIG_SPIRAM
|
||||||
|
gpio_sleep_set_pull_mode(esp_spiram_get_cs_io(), GPIO_PULLUP_ONLY);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void esp_sleep_enable_gpio_switch(bool enable)
|
void esp_sleep_enable_gpio_switch(bool enable)
|
||||||
|
Reference in New Issue
Block a user