I've studied the topic ble taking too much power on how to set up Bluetooth modem sleep with external 32.768kHz crystal and tried it by my own.
I enabled Enable Power Management
Enabled Tickless Idle
and set RTC clock source (External 32kHz crystal) as well as Bluetooth low power clock (External 32kHz crystal) in SDKConfig
Set MIN and MAX CPU frequency, enabled Light sleep with esp_pm_configure(&pm_config)
according to the instruction.
I connected the crystal according to the picture: In the test made by @mywang-espressif he got the average current about 2-3mA, however, in my case I got the current a bit lower than 30mA.
In order to define the cause I print locks in my task with esp_pm_dump_locks(stdout); and got the list:
- Lock stats:
bt APB_FREQ_MAX 0 0
btLS NO_LIGHT_SLEEP 0 1
rtos1 CPU_FREQ_MAX 0 1
rtos0 CPU_FREQ_MAX 0 0
Code: Select all
static DRAM_ATTR esp_pm_lock_handle_t s_light_sleep_pm_lock; // pm_lock to prevent light sleep due to incompatibility currently
Could someone confirm he was able to achieve 3mA consumption with BLE being active?