diff --git a/components/esp32/sleep_modes.c b/components/esp32/sleep_modes.c index 65d0f0568..d5024c683 100644 --- a/components/esp32/sleep_modes.c +++ b/components/esp32/sleep_modes.c @@ -599,9 +599,9 @@ static uint32_t get_power_down_flags() // These labels are defined in the linker script: extern int _rtc_data_start, _rtc_data_end, _rtc_bss_start, _rtc_bss_end; - if (s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] == ESP_PD_OPTION_AUTO || - &_rtc_data_end > &_rtc_data_start || - &_rtc_bss_end > &_rtc_bss_start) { + if ((s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] == ESP_PD_OPTION_AUTO) && + (&_rtc_data_end > &_rtc_data_start || &_rtc_bss_end > &_rtc_bss_start || + (s_config.wakeup_triggers & RTC_ULP_TRIG_EN))) { s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] = ESP_PD_OPTION_ON; }