Higher-than-expected ESP32-S3 Light Sleep Current

powerfeather
Posts: 10
Joined: Tue Oct 17, 2023 1:44 am

Higher-than-expected ESP32-S3 Light Sleep Current

Postby powerfeather » Wed Jul 24, 2024 11:24 pm

Hi, I'm looking into my custom board's light sleep current consumption. I'm expecting well below sub-1mA, given ESP32-S3 240 uA light sleep current (claimed on the datasheet) + quiescent current draw from components on-board which I estimate to just be a few hundred uA.

I've used the light sleep example to test it out, with the only modification to the example disabling the uart and touch wake. However, when I look at the current draw through a Nordic PPK2, I get this:

Image
Image

There is a ~700 uA dip for ~100 ms+ (which is what I expect light sleep current to be around), then the current consumption goes to ~1.90 mA. Is this normal?

powerfeather
Posts: 10
Joined: Tue Oct 17, 2023 1:44 am

Re: Higher-than-expected ESP32-S3 Light Sleep Current

Postby powerfeather » Thu Jul 25, 2024 2:33 am

Ok, this seems to be related to some current leakage to the flash. If flash *is* powered down, the light sleep current remains at ~700 uA.
Though, is the leakage current expected to be that high (difference of ~1.1 mA), even with the workaround Kconfig option enabled?

powerfeather
Posts: 10
Joined: Tue Oct 17, 2023 1:44 am

Re: Higher-than-expected ESP32-S3 Light Sleep Current

Postby powerfeather » Thu Jul 25, 2024 11:00 am

Another update, I think I've managed to reach the theoretical light sleep current mentioned in the datasheet:

Image

This was achieved in the following conditions:

- kconfig: enable PM, enable tickless idle, enable flash power down
- configure pm with auto light sleep enabled
- use esp light sleep start function + timer wake *or* task delay

However, again: if the flash power down is disabled:

Image
Image

There is a dip to ~200 uA, and then it increases to ~1.4 mA. It would be nice if there is a way to not such have a high penalty for turning off flash power down...

powerfeather
Posts: 10
Joined: Tue Oct 17, 2023 1:44 am

Re: Higher-than-expected ESP32-S3 Light Sleep Current

Postby powerfeather » Thu Jul 25, 2024 11:30 am

In the documentation, it says it's ok to power down flash using:

Code: Select all

esp_sleep_pd_config(ESP_PD_DOMAIN_VDDSDIO, ESP_PD_OPTION_OFF);
If the rtc timer is not set as wake source *or* the sleep timer is long enough. Lifted verbatim from the docs:
Calling esp_sleep_pd_config(ESP_PD_DOMAIN_VDDSDIO, ESP_PD_OPTION_OFF) powers down flash when the RTC timer is not enabled as a wakeup source or the sleep time is longer than the flash power-down period.
In terms of logic statement, does that translate to:

Code: Select all

!rtcTimerAsWakeupSrc || sleepTimeLongEnough
Because if so, does that mean: rtcTimerAsWakeupSrc = true, sleepTimeLongEnough = true is ok?

Also, is this really safe in cases where the wakeup source is a GPIO pin - but there is a possibility that the wake interrupt might be when the flash has not powered down yet, i.e. rtcTimerAsWakeupSrc = false, sleepTimeLongEnough = false ?

----
Additional note for others that might see this thread. Due to a bug, it seems you need to do this instead

Code: Select all

esp_sleep_pd_config(ESP_PD_DOMAIN_VDDSDIO, ESP_PD_OPTION_ON);
esp_sleep_pd_config(ESP_PD_DOMAIN_VDDSDIO, ESP_PD_OPTION_OFF);

Who is online

Users browsing this forum: No registered users and 46 guests