Added PMU support on T-Beam
This commit is contained in:
parent
af01541c17
commit
792d2c05e3
90
Utilities.h
90
Utilities.h
@ -1,16 +1,21 @@
|
|||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include "Config.h"
|
||||||
#include "LoRa.h"
|
#include "LoRa.h"
|
||||||
#include "ROM.h"
|
#include "ROM.h"
|
||||||
#include "Config.h"
|
|
||||||
#include "Framing.h"
|
#include "Framing.h"
|
||||||
#include "MD5.h"
|
#include "MD5.h"
|
||||||
|
|
||||||
|
#if MCU_VARIANT == MCU_ESP32
|
||||||
|
#include "soc/rtc_wdt.h"
|
||||||
|
#define ISR_VECT IRAM_ATTR
|
||||||
|
#else
|
||||||
|
#define ISR_VECT
|
||||||
|
#endif
|
||||||
|
|
||||||
#if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
|
#if MCU_VARIANT == MCU_1284P || MCU_VARIANT == MCU_2560
|
||||||
#include <avr/wdt.h>
|
#include <avr/wdt.h>
|
||||||
#include <util/atomic.h>
|
#include <util/atomic.h>
|
||||||
#elif MCU_VARIANT == MCU_ESP32
|
|
||||||
// TODO: Hard reset on ESP32
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint8_t boot_vector = 0x00;
|
uint8_t boot_vector = 0x00;
|
||||||
@ -799,3 +804,82 @@ inline void fifo16_init(FIFOBuffer16 *f, uint16_t *buffer, uint16_t size) {
|
|||||||
inline uint16_t fifo16_len(FIFOBuffer16 *f) {
|
inline uint16_t fifo16_len(FIFOBuffer16 *f) {
|
||||||
return (f->end - f->begin);
|
return (f->end - f->begin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if BOARD_MODEL == BOARD_TBEAM
|
||||||
|
#include <axp20x.h>
|
||||||
|
AXP20X_Class PMU;
|
||||||
|
|
||||||
|
bool initPMU()
|
||||||
|
{
|
||||||
|
if (PMU.begin(Wire, AXP192_SLAVE_ADDRESS) == AXP_FAIL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* The charging indicator can be turned on or off
|
||||||
|
* * * */
|
||||||
|
PMU.setChgLEDMode(AXP20X_LED_OFF);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The default ESP32 power supply has been turned on,
|
||||||
|
* no need to set, please do not set it, if it is turned off,
|
||||||
|
* it will not be able to program
|
||||||
|
*
|
||||||
|
* PMU.setDCDC3Voltage(3300);
|
||||||
|
* PMU.setPowerOutPut(AXP192_DCDC3, AXP202_ON);
|
||||||
|
*
|
||||||
|
* * * */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Turn off unused power sources to save power
|
||||||
|
* **/
|
||||||
|
|
||||||
|
PMU.setPowerOutPut(AXP192_DCDC1, AXP202_OFF);
|
||||||
|
PMU.setPowerOutPut(AXP192_DCDC2, AXP202_OFF);
|
||||||
|
PMU.setPowerOutPut(AXP192_LDO2, AXP202_OFF);
|
||||||
|
PMU.setPowerOutPut(AXP192_LDO3, AXP202_OFF);
|
||||||
|
PMU.setPowerOutPut(AXP192_EXTEN, AXP202_OFF);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the power of LoRa and GPS module to 3.3V
|
||||||
|
**/
|
||||||
|
PMU.setLDO2Voltage(3300); //LoRa VDD
|
||||||
|
PMU.setLDO3Voltage(3300); //GPS VDD
|
||||||
|
PMU.setDCDC1Voltage(3300); //3.3V Pin next to 21 and 22 is controlled by DCDC1
|
||||||
|
|
||||||
|
PMU.setPowerOutPut(AXP192_DCDC1, AXP202_ON);
|
||||||
|
|
||||||
|
// Turn on SX1276
|
||||||
|
PMU.setPowerOutPut(AXP192_LDO2, AXP202_ON);
|
||||||
|
|
||||||
|
// Turn off GPS
|
||||||
|
PMU.setPowerOutPut(AXP192_LDO3, AXP202_OFF);
|
||||||
|
|
||||||
|
pinMode(PMU_IRQ, INPUT_PULLUP);
|
||||||
|
attachInterrupt(PMU_IRQ, [] {
|
||||||
|
// pmu_irq = true;
|
||||||
|
}, FALLING);
|
||||||
|
|
||||||
|
PMU.adc1Enable(AXP202_VBUS_VOL_ADC1 |
|
||||||
|
AXP202_VBUS_CUR_ADC1 |
|
||||||
|
AXP202_BATT_CUR_ADC1 |
|
||||||
|
AXP202_BATT_VOL_ADC1,
|
||||||
|
AXP202_ON);
|
||||||
|
|
||||||
|
PMU.enableIRQ(AXP202_VBUS_REMOVED_IRQ |
|
||||||
|
AXP202_VBUS_CONNECT_IRQ |
|
||||||
|
AXP202_BATT_REMOVED_IRQ |
|
||||||
|
AXP202_BATT_CONNECT_IRQ,
|
||||||
|
AXP202_ON);
|
||||||
|
PMU.clearIRQ();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void disablePeripherals()
|
||||||
|
{
|
||||||
|
PMU.setPowerOutPut(AXP192_DCDC1, AXP202_OFF);
|
||||||
|
PMU.setPowerOutPut(AXP192_LDO2, AXP202_OFF);
|
||||||
|
PMU.setPowerOutPut(AXP192_LDO3, AXP202_OFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user