T-Display-S3-Long
T-Display-S3-Long copied to clipboard
Unable to turn of the power state LED
I have succesfuly compiled and uploaded the SY6970 example (and added the PMU.disableStatLed();
line to setup) but the green LED continues to flash, am I doing something wrong, or have I run into a bug?
The S3 Long is a great module but the bright flashing green led makes it un-usable for my use case. Worst case, can I just snap the led of the board?
Thank you in advance!
Ps. here is the "SY6970_Example.ino" file I am building
/**
* @file SY6970_Example.ino
* @author Lewis He ([email protected])
* @license MIT
* @copyright Copyright (c) 2023 Shenzhen Xin Yuan Electronic Technology Co., Ltd
* @date 2023-08-05
*
*/
#include <XPowersLib.h>
PowersSY6970 PMU;
#ifndef CONFIG_PMU_SDA
#define CONFIG_PMU_SDA 0
#endif
#ifndef CONFIG_PMU_SCL
#define CONFIG_PMU_SCL 1
#endif
#ifndef CONFIG_PMU_IRQ
#define CONFIG_PMU_IRQ 28
#endif
const uint8_t i2c_sda = CONFIG_PMU_SDA;
const uint8_t i2c_scl = CONFIG_PMU_SCL;
const uint8_t pmu_irq_pin = CONFIG_PMU_IRQ;
uint32_t cycleInterval;
void setup()
{
Serial.begin(115200);
while (!Serial);
bool result = PMU.init(Wire, i2c_sda, i2c_scl, SY6970_SLAVE_ADDRESS);
if (result == false) {
while (1) {
Serial.println("PMU is not online...");
delay(50);
}
}
// Set the charging target voltage, Range:3840 ~ 4608mV ,step:16 mV
PMU.setChargeTargetVoltage(3856);
// Set the precharge current , Range: 64mA ~ 1024mA ,step:64mA
PMU.setPrechargeCurr(64);
// Set the charging current , Range:0~5056mA ,step:64mA
PMU.setChargerConstantCurr(320);
// To obtain voltage data, the ADC must be enabled first
PMU.enableADCMeasure();
PMU.disableStatLed();
PMU.disableOTG();
// The OTG function needs to enable OTG, and set the OTG control pin to HIGH
// After OTG is enabled, if an external power supply is plugged in, OTG will be turned off
// PMU.enableOTG();
// PMU.disableOTG();
// pinMode(OTG_ENABLE_PIN, OUTPUT);
// digitalWrite(OTG_ENABLE_PIN, HIGH);
}
void loop()
{
// SY6970 When VBUS is input, the battery voltage detection will not take effect
if (millis() > cycleInterval) {
Serial.println("Sats VBUS VBAT SYS VbusStatus String ChargeStatus String TargetVoltage ChargeCurrent Precharge NTCStatus String");
Serial.println(" (mV) (mV) (mV) (HEX) (HEX) (mV) (mA) (mA) (HEX) ");
Serial.println("--------------------------------------------------------------------------------------------------------------------------------");
Serial.print(PMU.isVbusIn() ? "Connected" : "Disconnect"); Serial.print("\t");
Serial.print(PMU.getVbusVoltage()); Serial.print("\t");
Serial.print(PMU.getBattVoltage()); Serial.print("\t");
Serial.print(PMU.getSystemVoltage()); Serial.print("\t");
Serial.print("0x");
Serial.print(PMU.getBusStatus(), HEX); Serial.print("\t");
Serial.print(PMU.getBusStatusString()); Serial.print("\t");
Serial.print("0x");
Serial.print(PMU.chargeStatus(), HEX); Serial.print("\t");
Serial.print(PMU.getChargeStatusString()); Serial.print("\t");
Serial.print(PMU.getChargeTargetVoltage()); Serial.print("\t");
Serial.print(PMU.getChargerConstantCurr()); Serial.print("\t");
Serial.print(PMU.getPrechargeCurr()); Serial.print("\t");
Serial.print(PMU.getNTCStatus()); Serial.print("\t");
Serial.print(PMU.getNTCStatusString()); Serial.print("\t");
Serial.println();
Serial.println();
cycleInterval = millis() + 1000;
}
}