6 #if __has_include(<esp_log.h>)
31 _init = (val == 0x4A);
32 #if defined (ESP_LOGV)
33 ESP_LOGV(
"AXP2101",
"reg03h:%02x : init:%d", val,
_init);
40 void AXP2101_Class::_set_LDO(std::uint8_t num,
int voltage)
43 std::uint8_t reg_volt = num + 0x92;
46 std::uint_fast8_t val = (voltage < 0) ? 0 : std::min(voltage / 100, 0x1E);
49 std::uint_fast8_t reg90bit = 1 << num;
56 bitOn(0x90, reg90bit);
60 void AXP2101_Class::_set_DLDO(std::uint8_t num,
int voltage)
64 std::uint8_t reg_volt = num + 0x99;
67 std::uint_fast8_t val = (voltage < 0) ? 0 : std::min(voltage / (num ? 50 : 100), num ? 0x13 : 0x1C);
70 uint8_t reg = 0x90 + num;
71 uint8_t bit = num ? 0x01 : 0x80;
82 bool AXP2101_Class::_get_LDOEn(std::uint8_t num)
86 std::uint_fast8_t reg90bit = 1 << num;
94 #if defined (ESP_LOGE)
95 ESP_LOGE(
"AXP2101",
"setReg0x20Bit0 : %d", flg);
115 std::uint8_t val = 0;
125 if (max_mA > 1000/5) { max_mA = 1000/5; }
126 static constexpr std::uint8_t table[] = { 125 / 5, 150 / 5, 175 / 5, 200 / 5, 300 / 5, 400 / 5, 500 / 5, 600 / 5, 700 / 5, 800 / 5, 900 / 5, 1000 / 5, 255 };
129 while (table[i] <= max_mA) { ++i; }
136 max_mV = (max_mV / 10) - 400;
137 if (max_mV > 460 - 400) { max_mV = 460 - 400; }
138 static constexpr std::uint8_t table[] =
147 while (table[i] <= max_mV) { ++i; }
149 if (++i >= 0b110) { i = 0; }
164 return (val == 1) ? 1 : ((val == 2) ? -1 : 0);
254 return readRegister14(0x34) / 1000.0f;
273 std::size_t AXP2101_Class::readRegister12(std::uint8_t addr)
275 std::uint8_t buf[2] = {0};
277 return (buf[0] & 0x0F) << 8 | buf[1];
279 std::size_t AXP2101_Class::readRegister14(std::uint8_t addr)
281 std::uint8_t buf[2] = {0};
283 return (buf[0] & 0x3F) << 8 | buf[1];
285 std::size_t AXP2101_Class::readRegister16(std::uint8_t addr)
287 std::uint8_t buf[2] = {0};
289 return buf[0] << 8 | buf[1];
float getACINVoltage(void)
float getInternalTemperature(void)
int getChargeStatus(void)
static constexpr uint8_t AXP2101_TWI_ADDR_EXT
float getBatteryVoltage(void)
float getVBUSVoltage(void)
std::uint8_t getPekPress(void)
float getACINCurrent(void)
float getVBUSCurrent(void)
bool isCharging(void)
Get whether the battery is currently charging or not.
void setBatteryCharge(bool enable)
float getBatteryPower(void)
static constexpr uint8_t AXP2101_EFREQ_CTRL
std::int8_t getBatteryLevel(void)
void setChargeCurrent(std::uint16_t max_mA)
float getAPSVoltage(void)
void setAdcRate(std::uint8_t rate)
float getBatteryChargeCurrent(void)
void setChargeVoltage(std::uint16_t max_mV)
void setReg0x20Bit0(bool)
static constexpr uint8_t AXP2101_EFUS_OP_CFG
void setBACKUP(bool enable)
float getBatteryDischargeCurrent(void)
void setAdcState(bool enable)
bool bitOn(std::uint8_t reg, std::uint8_t bit) const
bool bitOff(std::uint8_t reg, std::uint8_t bit) const
bool readRegister(std::uint8_t reg, std::uint8_t *result, std::size_t length) const
std::uint8_t readRegister8(std::uint8_t reg) const
bool writeRegister8(std::uint8_t reg, std::uint8_t data) const