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.

BQ76940: Reading blocks of data with I2C

Part Number: BQ76940
Other Parts Discussed in Thread: BQ76920, BQ76930, ,

I am writing SW drivers for the bq76940, bq76930, and bq76920. 

I want to read all of the data in the registers. 

With the bq76940 I believe I can read addresses 0x00 through 0x33 in one block read. Will this same block read work with the bq76930 and bq76920?

In the bq76930 addresses 0x03, 0x20-0x29, 0x30-0x31 are not used. 

In the bq76920 addresses 0x02-0x03, 0x16-0x29, 0x2e-0x31 are not used. 

Or do I have to read it in chunks? For example for the bq76920 I have to read 
first 0x00 and 0x01

second 0x04 through 0x15 (skipping reading 0x02 and ox03)

third 0x2a through 0x2d

fourth 0x32 through 0x33, or four block reads? 

If I try to read through the undefined addresses, will I get known values for the addresses not defined? (like 0x00 or 0xFF), and the address increment will still auto increment?


The BQ76940EVM I am currently using does not have the chip with the CRC. We will be using the CRC version in our design. What happens with the CRC on the undefined values? Will it still match the data sent?

Thanks 


  • Hi Kipton,

    I think you will still be able to read all addresses in one block read for the bq76930 and bq76920. However, I am not sure what the registers will contain for the locations that are not used by the lower cell count devices and I do not know if this data will be deterministic (always the same value). Unfortunately, I don't have an easy way to test this out since our evaluation software is configured to only read the supported registers.

    If you are able to get a sample device with CRC, I recommend testing this out first. But the safest way would be to do multiple block reads on the supported address space.

    Best regards,
    Matt