6 #if __has_include(<esp_log.h>)
30 _init = (val == 0x03);
31 #if defined (ESP_LOGV)
32 ESP_LOGV(
"AXP192",
"reg03h:%02x : init:%d", val,
_init);
39 void AXP192_Class::_set_DCDC(std::uint8_t num,
int voltage)
41 static constexpr uint8_t reg12bit_tbl[] = { 0x01, 0x10, 0x02 };
42 static constexpr uint8_t volt_reg_tbl[] = { 0x26, 0x23, 0x27 };
43 static constexpr uint8_t volt_max_tbl[] = { 0x7F, 0x3F, 0x7F };
46 std::uint_fast8_t val = (voltage < 0) ? 0 : std::min(voltage / 25, (
int)volt_max_tbl[num]);
50 bitOff(0x12, reg12bit_tbl[num]);
54 bitOn(0x12, reg12bit_tbl[num]);
59 void AXP192_Class::_set_LDO(std::uint8_t num,
int voltage)
61 if (num > 3 || num == 1)
return;
62 std::uint8_t reg_volt = (num == 0) ? 0x91 : 0x28;
65 std::uint_fast8_t val = (voltage < 0) ? 0 : std::min(voltage / 100, 0x0F);
69 now = (now & 0xF0) + val;
73 now = (now & 0x0F) | (val << 4);
79 std::uint_fast8_t reg12bit = 1 << num;
86 bitOn(0x12, reg12bit);
96 void AXP192_Class::_set_LDO2_LDO3(std::uint8_t num,
int voltage)
99 std::uint_fast8_t val = (voltage < 0) ? 0 : std::min(voltage / 100, 0x0F);
103 now = (now & 0xF0) + val;
107 now = (now & 0x0F) | (val << 4);
111 std::uint_fast8_t reg12bit = 1 << (num + 2);
118 bitOn(0x12, reg12bit);
123 void AXP192_Class::_set_GPIO0_2(std::uint8_t num,
bool state)
125 static constexpr uint8_t reg[] = { 0x90, 0x92, 0x93 };
130 void AXP192_Class::_set_GPIO3_4(std::uint8_t num,
bool state)
132 uint32_t bit = num ? 2 : 1;
141 uint_fast8_t mask = num ? ~0x0C : ~0x03;
148 std::uint8_t val = 0;
158 if (max_mA > 132) { max_mA = 132; }
159 static constexpr std::uint8_t table[] = { 19, 28, 36, 45, 55, 63, 70, 78, 88, 96, 100, 108, 116, 124, 132, 255 };
162 while (table[i] <= max_mA) { ++i; }
164 std::uint8_t val = 0;
173 max_mV = (max_mV / 10) - 410;
174 if (max_mV > 436 - 410) { max_mV = 436 - 410; }
175 static constexpr std::uint8_t table[] =
182 while (table[i] <= max_mV) { ++i; }
184 std::uint8_t val = 0;
196 std::uint_fast16_t voltage = (buf[0] << 4) + buf[1];
197 std::uint_fast16_t current = (buf[2] << 5) + buf[3];
199 std::int_fast16_t res = (voltage > 3150) ? (( voltage - 3075 ) * 0.16f )
200 : (voltage > 2690) ? (( voltage - 2690 ) * 0.027f )
202 if (current > 16) { res -= 16; }
204 return (res < 100) ? res : 100;
230 static constexpr std::uint8_t add = 0x12;
231 static constexpr std::uint8_t bit = 1 << 6;
249 static constexpr std::uint8_t add = 0x35;
250 static constexpr std::uint8_t bit = 1 << 7;
284 return readRegister12(0x56) * (1.7f / 1000.0f);
289 return readRegister12(0x58) * 0.625f;
294 return readRegister12(0x5a) * (1.7f / 1000.0f);
299 return readRegister12(0x5c) * 0.375f;
304 return readRegister12(0x5e) * 0.1f -144.7f;
309 return readRegister24(0x70) * (1.1f * 0.5f / 1000.0f);
314 return readRegister12(0x78) * (1.1f / 1000.0f);
319 return readRegister13(0x7a) * 0.5f;
324 return readRegister13(0x7c) * 0.5f;
329 return readRegister12(0x7e) * (1.4f / 1000.0f);
333 std::size_t AXP192_Class::readRegister12(std::uint8_t addr)
335 std::uint8_t buf[2] = {0};
337 return buf[0] << 4 | buf[1];
339 std::size_t AXP192_Class::readRegister13(std::uint8_t addr)
341 std::uint8_t buf[2] = {0};
343 return buf[0] << 5 | buf[1];
345 std::size_t AXP192_Class::readRegister16(std::uint8_t addr)
347 std::uint8_t buf[2] = {0};
349 return buf[0] << 8 | buf[1];
351 std::size_t AXP192_Class::readRegister24(std::uint8_t addr)
353 std::uint8_t buf[3] = {0};
355 return buf[0] << 16 | buf[1] << 8 | buf[2];
357 std::size_t AXP192_Class::readRegister32(std::uint8_t addr)
359 std::uint8_t buf[4] = {0};
361 return buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3];
float getBatteryVoltage(void)
float getACINCurrent(void)
float getInternalTemperature(void)
std::int8_t getBatteryLevel(void)
void setBACKUP(bool enable)
std::uint8_t getPekPress(void)
float getVBUSVoltage(void)
float getVBUSCurrent(void)
float getAPSVoltage(void)
bool isCharging(void)
Get whether the battery is currently charging or not.
void setChargeCurrent(std::uint16_t max_mA)
float getACINVoltage(void)
void setBatteryCharge(bool enable)
float getBatteryPower(void)
void setChargeVoltage(std::uint16_t max_mV)
float getBatteryChargeCurrent(void)
void setAdcState(bool enable)
void setEXTEN(bool enable)
float getBatteryDischargeCurrent(void)
void setAdcRate(std::uint8_t rate)
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