From 63091b783840ba40379bd53ac695c9d1485edfe4 Mon Sep 17 00:00:00 2001 From: Lewis He Date: Thu, 19 Dec 2024 20:21:54 +0800 Subject: [PATCH] [T-Deck] Fixed the issue that some devices may experience low voltage reset due to excessive startup current (#5607) Co-authored-by: Ben Meadors --- src/main.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2357a00de..eb99f279a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -237,6 +237,17 @@ void printInfo() #ifndef PIO_UNIT_TESTING void setup() { +#if defined(T_DECK) + // GPIO10 manages all peripheral power supplies + // Turn on peripheral power immediately after MUC starts. + // If some boards are turned on late, ESP32 will reset due to low voltage. + // ESP32-C3(Keyboard) , MAX98357A(Audio Power Amplifier) , + // TF Card , Display backlight(AW9364DNR) , AN48841B(Trackball) , ES7210(Decoder) + pinMode(KB_POWERON, OUTPUT); + digitalWrite(KB_POWERON, HIGH); + delay(100); +#endif + concurrency::hasBeenSetup = true; #if ARCH_PORTDUINO SPISettings spiSettings(settingsMap[spiSpeed], MSBFIRST, SPI_MODE0); @@ -409,14 +420,6 @@ void setup() digitalWrite(AQ_SET_PIN, HIGH); #endif -#if defined(T_DECK) - // enable keyboard - pinMode(KB_POWERON, OUTPUT); - digitalWrite(KB_POWERON, HIGH); - // There needs to be a delay after power on, give LILYGO-KEYBOARD some startup time - // otherwise keyboard and touch screen will not work - delay(200); -#endif // Currently only the tbeam has a PMU // PMU initialization needs to be placed before i2c scanning