Hello Jared,
We've just tried to get I2C data by using TI EVM board, and it showed the same array as yours [with '0x0A']. So, BQ flash data looks OK.
In order to troubleshoot any possible I2C delays, I have added the following to my test code:
DFDCNTL=0, delay 400ms
DFCLS=48, delay 400ms
DFBLK=0, delay 400ms
read 0x40..0x5f registers [in a single I2C read]
And I still got exactly the same result [two first bytes were 0]. Moreover, if I add another 400ms delay after having read 40..5f registers, and then try to read single 0x41 register [one single byte], I again get 0x00 instead of 0x0a. If I read each 0x40..0x5f register byte-by-byte, with 100ms delay between reads, 0x40/0x41 registers still stays 0.
Finally, if I try to read registers in reversed order (0x5f,0x5e,...0x40), I'm getting the same results (0x41=0). Our I2C library should fully support clock stretch out of the box.
Do you know if there are any compatibility issues with other I2C peripherals and BQ gas gauge? On our I2C bus there's PCA9555, and its I2C address is 0x40.
Unfortunately, we don't have any I2C sniffing tools available.
I wonder why reading register 0x42..0x5f always succeeds, while reading register 0x40/0x41 always gives 0.
Thank you in advance for any hints.