Skip to content

Commit

Permalink
change(Kconfig): improve ESP_SLEEP_PSRAM/FLASH_LEAKAGE_WORKAROUND hel…
Browse files Browse the repository at this point in the history
…p doc

Closes #11558
  • Loading branch information
esp-wzh committed Jul 13, 2023
1 parent a300e79 commit 3fc9846
Showing 1 changed file with 42 additions and 29 deletions.
71 changes: 42 additions & 29 deletions components/esp_hw_support/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,48 @@ menu "Hardware Settings"
to ESP_PD_OPTION_OFF. It should be noted that there is a risk in powering down flash, you can refer
`ESP-IDF Programming Guide/API Reference/System API/Sleep Modes/Power-down of Flash` for more details.

config ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND
bool "Pull-up Flash CS pin in light sleep"
depends on !APP_BUILD_TYPE_PURE_RAM_APP && !ESP_SLEEP_POWER_DOWN_FLASH
default y
help
All IOs will be set to isolate(floating) state by default during sleep.
Since the power supply of SPI Flash is not lost during lightsleep, if its CS pin is recognized as
low level(selected state) in the floating state, there will be a large current leakage, and the
data in Flash may be corrupted by random signals on other SPI pins.
Select this option will set the CS pin of Flash to PULL-UP state during sleep, but this will
increase the sleep current about 10 uA.
If you are developing with esp32xx modules, you must select this option, but if you are developing
with chips, you can also pull up the CS pin of SPI Flash in the external circuit to save power
consumption caused by internal pull-up during sleep.
(!!! Don't deselect this option if you don't have external SPI Flash CS pin pullups.)

config ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND
bool "Pull-up PSRAM CS pin in light sleep"
depends on SPIRAM
default y
help
All IOs will be set to isolate(floating) state by default during sleep.
Since the power supply of PSRAM is not lost during lightsleep, if its CS pin is recognized as
low level(selected state) in the floating state, there will be a large current leakage, and the
data in PSRAM may be corrupted by random signals on other SPI pins.
Select this option will set the CS pin of PSRAM to PULL-UP state during sleep, but this will
increase the sleep current about 10 uA.
If you are developing with esp32xx modules, you must select this option, but if you are developing
with chips, you can also pull up the CS pin of PSRAM in the external circuit to save power
consumption caused by internal pull-up during sleep.
(!!! Don't deselect this option if you don't have external PSRAM CS pin pullups.)

config ESP_SLEEP_MSPI_NEED_ALL_IO_PU
bool "Pull-up all SPI pins in light sleep"
depends on !ESP_SLEEP_POWER_DOWN_FLASH \
&& (ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND || ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND)
default y if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32S3
help
To reduce leakage current, some types of SPI Flash/RAM only need to pull up the CS pin
during light sleep. But there are also some kinds of SPI Flash/RAM that need to pull up
all pins. It depends on the SPI Flash/RAM chip used.

config ESP_SLEEP_RTC_BUS_ISO_WORKAROUND
bool
default y if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
Expand All @@ -94,35 +136,6 @@ menu "Hardware Settings"
This option provides a software workaround for this issue. Configure to isolate all
GPIO pins in sleep state.

config ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND
bool "PSRAM leakage current workaround in light sleep"
depends on SPIRAM
default y
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.

config ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND
bool "Flash leakage current workaround in light sleep"
depends on !APP_BUILD_TYPE_PURE_RAM_APP
default y
help
When the CS pin of Flash is not pulled up, the sleep current will
increase during light sleep. If the CS pin of Flash has an external
pull-up, you do not need to select this option, otherwise, you
should enable this option.

config ESP_SLEEP_MSPI_NEED_ALL_IO_PU
bool "All pins of mspi need pull up"
depends on ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND || ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND
default y if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32S3
help
To reduce leakage current, some types of SPI Flash/RAM only need to pull up the CS pin
during light sleep. But there are also some kinds of SPI Flash/RAM that need to pull up
all pins. It depends on the SPI Flash/RAM chip used.

config ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY
int "Extra delay in deep sleep wake stub (in us)"
depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3
Expand Down

0 comments on commit 3fc9846

Please sign in to comment.