From 15dbe5da975b9e27cee8e495b7b63f89bfe2661d Mon Sep 17 00:00:00 2001 From: lewishe Date: Mon, 27 Mar 2023 10:33:26 +0800 Subject: [PATCH] Added t-beam v1.2 support --- src/Power.cpp | 39 ++++++++++++++++++++++++++++++++++++++- src/sleep.cpp | 13 ++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/Power.cpp b/src/Power.cpp index 5c5c7bca9..d650bf174 100644 --- a/src/Power.cpp +++ b/src/Power.cpp @@ -527,8 +527,42 @@ bool Power::axpChipInit() } else if (PMU->getChipModel() == XPOWERS_AXP2101) { - // t-beam s3 core + /*The alternative version of T-Beam 1.1 differs from T-Beam V1.1 in that it uses an AXP2101 power chip*/ +#if defined(CONFIG_IDF_TARGET_ESP32) + //Unuse power channel + PMU->disablePowerOutput(XPOWERS_DCDC2); + PMU->disablePowerOutput(XPOWERS_DCDC3); + PMU->disablePowerOutput(XPOWERS_DCDC4); + PMU->disablePowerOutput(XPOWERS_DCDC5); + PMU->disablePowerOutput(XPOWERS_ALDO1); + PMU->disablePowerOutput(XPOWERS_ALDO4); + PMU->disablePowerOutput(XPOWERS_BLDO1); + PMU->disablePowerOutput(XPOWERS_BLDO2); + PMU->disablePowerOutput(XPOWERS_DLDO1); + PMU->disablePowerOutput(XPOWERS_DLDO2); + // GNSS RTC PowerVDD 3300mV + PMU->setPowerChannelVoltage(XPOWERS_VBACKUP, 3300); + PMU->enablePowerOutput(XPOWERS_VBACKUP); + + //ESP32 VDD 3300mV + // ! No need to set, automatically open , Don't close it + // PMU->setPowerChannelVoltage(XPOWERS_DCDC1, 3300); + // PMU->setProtectedChannel(XPOWERS_DCDC1); + + // LoRa VDD 3300mV + PMU->setPowerChannelVoltage(XPOWERS_ALDO2, 3300); + PMU->enablePowerOutput(XPOWERS_ALDO2); + + //GNSS VDD 3300mV + PMU->setPowerChannelVoltage(XPOWERS_ALDO3, 3300); + PMU->enablePowerOutput(XPOWERS_ALDO3); + +#endif /*CONFIG_IDF_TARGET_ESP32*/ + + + // t-beam s3 core +#if defined(CONFIG_IDF_TARGET_ESP32S3) /** * gnss module power channel * The default ALDO4 is off, you need to turn on the GNSS power first, otherwise it will be invalid during initialization @@ -571,6 +605,9 @@ bool Power::axpChipInit() PMU->disablePowerOutput(XPOWERS_DLDO2); // Invalid power channel, it does not exist PMU->disablePowerOutput(XPOWERS_VBACKUP); +#endif + + // disable all axp chip interrupt PMU->disableIRQ(XPOWERS_AXP2101_ALL_IRQ); diff --git a/src/sleep.cpp b/src/sleep.cpp index 9bdd52cb3..d4991691b 100644 --- a/src/sleep.cpp +++ b/src/sleep.cpp @@ -99,10 +99,15 @@ void setGPSPower(bool on) if (pmu_found && PMU) { uint8_t model = PMU->getChipModel(); if (model == XPOWERS_AXP2101) { +#if defined(CONFIG_IDF_TARGET_ESP32) + //t-beam v1.2 GNSS power channel + on ? PMU->enablePowerOutput(XPOWERS_ALDO3) : PMU->disablePowerOutput(XPOWERS_ALDO3); +#else // t-beam-s3-core GNSS power channel on ? PMU->enablePowerOutput(XPOWERS_ALDO4) : PMU->disablePowerOutput(XPOWERS_ALDO4); +#endif } else if (model == XPOWERS_AXP192) { - // t-beam GNSS power channel + // t-beam v1.1 GNSS power channel on ? PMU->enablePowerOutput(XPOWERS_LDO3) : PMU->disablePowerOutput(XPOWERS_LDO3); } } @@ -237,8 +242,14 @@ void doDeepSleep(uint64_t msecToWake) uint8_t model = PMU->getChipModel(); if (model == XPOWERS_AXP2101) { +#if defined(CONFIG_IDF_TARGET_ESP32) + //t-beam v1.2 radio power channel + PMU->disablePowerOutput(XPOWERS_ALDO2); // lora radio power channel +#else PMU->disablePowerOutput(XPOWERS_ALDO3); // lora radio power channel +#endif } else if (model == XPOWERS_AXP192) { + //t-beam v1.1 radio power channel PMU->disablePowerOutput(XPOWERS_LDO2); // lora radio power channel } }