(ESP-32S) Fix "critical error 3" after deep-sleep (#3685)

This commit is contained in:
todd-herbert 2024-04-22 00:25:12 +12:00 committed by GitHub
parent 820c5dc8c5
commit f6cfdfe881
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -157,6 +157,10 @@ void initDeepSleep()
for (uint8_t i = 0; i <= GPIO_NUM_MAX; i++) {
if (rtc_gpio_is_valid_gpio((gpio_num_t)i))
rtc_gpio_hold_dis((gpio_num_t)i);
// ESP32 (original)
else if (GPIO_IS_VALID_OUTPUT_GPIO((gpio_num_t)i))
gpio_hold_dis((gpio_num_t)i);
}
}
#endif
@ -258,14 +262,17 @@ void doDeepSleep(uint32_t msecToWake, bool skipPreflight = false)
}
#ifdef BUTTON_PIN
// Avoid leakage through button pin
pinMode(BUTTON_PIN, INPUT);
gpio_hold_en((gpio_num_t)BUTTON_PIN);
if (GPIO_IS_VALID_OUTPUT_GPIO(BUTTON_PIN)) {
pinMode(BUTTON_PIN, INPUT);
gpio_hold_en((gpio_num_t)BUTTON_PIN);
}
#endif
// LoRa CS (RADIO_NSS) needs to stay HIGH, even during deep sleep
pinMode(LORA_CS, OUTPUT);
digitalWrite(LORA_CS, HIGH);
gpio_hold_en((gpio_num_t)LORA_CS);
if (GPIO_IS_VALID_OUTPUT_GPIO(LORA_CS)) {
// LoRa CS (RADIO_NSS) needs to stay HIGH, even during deep sleep
pinMode(LORA_CS, OUTPUT);
digitalWrite(LORA_CS, HIGH);
gpio_hold_en((gpio_num_t)LORA_CS);
}
#endif
#ifdef HAS_PMU