Is the chip voltage supply 3.3V ? Are there pull-up resistors for the i2c-bus ?
When reading the chip, you write the address, and request the data.
The function Wire.available() ( Wire - Arduino Reference ) actually checks a buffer for data.
So you don't have to wait, just read the data.
old:
while(Wire.available() < 1)
Serial.print("Wating... \n");
Serial.println(Wire.read());
new:
while(Wire.available())
{
Serial.println(Wire.read());
}
You also do an analogRead immediate after changing a register. Perhaps you should wait 10ms to 500ms until the voltage has settled.
You could make a function to read from the BQ76925, and a function to write data to the BQ76925. That way your code is easier to read and it prevents mistakes.
You could also run the i2c_scanner, to see if the i2c bus is still okay. Arduino Playground - I2cScanner
Arduino Playground - I2cScanner