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