light sleep: fix SPIRAM leakage when its CS pin has no hardware pullup

This commit is contained in:
Li Shuai
2021-09-16 16:30:28 +08:00
parent 42039cde0a
commit acdf49a5ac
2 changed files with 15 additions and 0 deletions

View File

@ -100,6 +100,15 @@ menu "ESP System Settings"
If enabled, the CPU will be powered down in light sleep. Enabling this option will consume
1.68 KB of internal RAM and will reduce sleep current consumption by about 100 uA.
config ESP_SYSTEM_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.
menu "Memory protection"
config ESP_SYSTEM_MEMPROT_FEATURE

View File

@ -53,6 +53,7 @@
#include "esp32/clk.h"
#include "esp32/rom/rtc.h"
#include "esp_private/gpio.h"
#include "esp32/spiram.h"
#elif CONFIG_IDF_TARGET_ESP32S2
#include "esp32s2/clk.h"
#include "esp32s2/rom/cache.h"
@ -60,11 +61,13 @@
#include "esp32s2/brownout.h"
#include "soc/extmem_reg.h"
#include "esp_private/gpio.h"
#include "esp32s2/spiram.h"
#elif CONFIG_IDF_TARGET_ESP32S3
#include "esp32s3/clk.h"
#include "esp32s3/rom/cache.h"
#include "esp32s3/rom/rtc.h"
#include "soc/extmem_reg.h"
#include "esp32s3/spiram.h"
#elif CONFIG_IDF_TARGET_ESP32C3
#include "esp32c3/clk.h"
#include "esp32c3/rom/cache.h"
@ -418,6 +421,9 @@ void esp_sleep_config_gpio_isolate(void)
gpio_sleep_set_pull_mode(gpio_num, GPIO_FLOATING);
}
}
#if CONFIG_ESP_SYSTEM_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)