This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ25122: Determining charger state over I2C

Part Number: BQ25122

I am using the BQ25122 in an application where I'd like to use the INT line to quickly determine that my device has been plugged into (or removed from) the charger.

Currently, my code waits for an INT pulse and then attempts to read the status register. If this works, I assume I2C is enabled and I continue reading several other registers, including the Fault registers. If it doesn't work, I assume I am in Hi-Z mode, pull CE_N high, wait 1ms for the I2C to enable, and read the registers again.

I see an INT pulse when my charger is connected or disconnected. However I see two confusing issues:

  1. The first status read after a charge state change always reports the device is in a FAULT state, but no fault bits are set in any other registers.
  2. When I disconnect the charger, I get an INT as expected, but then I2C reading works.I would not expect this behavior since I am now running on battery power. Is there a delay here?
    1. Also, after disconnecting the charger, the status reports FAULT state as well.

What is going on in these cases?

Thank you,

U