Hello,
I have a query regarding the SparkFun Battery Babysitter - LiPo Battery Manager library with the following link:
https://github.com/sparkfun/Battery_Babysitter
From the manual page 29, I see that power is under Subclass 68, and hibernate I and V can be read from offset 7 and 9. Now in the example BQ27441_Basic, power data is got by calling the function power() which is as following:
int16_t BQ27441::power(void)
{
return (int16_t) readWord(BQ27441_COMMAND_AVG_POWER);
}
The readword() and i2cReadBytes() functions are as following:
uint16_t BQ27441::readWord(uint16_t subAddress)
{
uint8_t data[2];
i2cReadBytes(subAddress, data, 2);
return ((uint16_t) data[1] << 8) | data[0];
}
// Read a specified number of bytes over I2C at a given subAddress
int16_t BQ27441::i2cReadBytes(uint8_t subAddress, uint8_t * dest, uint8_t count)
{
int16_t timeout = BQ72441_I2C_TIMEOUT;
Wire.beginTransmission(_deviceAddress);
Wire.write(subAddress);
Wire.endTransmission(true);
Wire.requestFrom(_deviceAddress, count);
for (int i=0; i<count; i++)
{
dest[i] = Wire.read();
}
return timeout;
}
My questions are:
-
The power() function is reading 2 bytes so which 2 bytes it is reading (Hibernate I at offset 7 or Hibernate V at offset 9)?
-
In the BQ27441_Basic.ino how can, it is reporting power in mW just by reading Hibernate I or Hibernate V?
int power = lipo.power(); // Read average power draw (mW)
- If I want to see both the Hibernate I at offset 7 and Hibernate V at offset 9, how should I modify the library to print the individual data of Hibernate I at offset 7 and Hibernate V at offset 9 and also the power?
Please correct me if I am wrong. But reading data from different offsets sounds confusing and the data I am getting doesn’t make sense. I hope to hear back soon. Thanks for your time.