sparkfun / SparkFun_BQ27441_Arduino_Library

Arduino library for the BQ27441 LiPo Fuel Gauge.
Other
43 stars 31 forks source link

Query regarding data from class power #8

Open rmunny opened 4 years ago

rmunny commented 4 years ago

Hello, From the manual page 29 https://www.ti.com/lit/ug/sluuac9a/sluuac9a.pdf?ts=1594252976133&ref_url=https%253A%252F%252Fwww.google.com%252F 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];
}
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:

  1. 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)?

  2. 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)

  3. 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. Thanks for your time.