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.

I2C/SMBus commands for bq40z50

Other Parts Discussed in Thread: BQ40Z50

Hi community,

I wanted to know about how to fetch data from the bq40z50 with I2C commands.

At first, most important for me is, which slave address the bq40z50 has, to be addressed by a microcontroller. I didn't find this in any data sheet i searched in.

The second question is how to use the commands, to fetch data by microcontroller without using the EVM. What is the sequence of bytes which are send/read to or from the bq40z50. How can I send 2byte commands on a bus system with only one byte messages, are the 2 bytes directly send after each other and which is first? Can you please explain to me the sequence of bytes in an example (let's say reading out the temperature

0x08 Temperature() - This read word function returns the temperature in units 0.1°K).

How does the Block command (for example ManufacturerAccess() 0x0071 DAStatus1) work, what is there the sequence of bytes? is there an Acknowledge between each byte?

I hope you'll be able to help me.

Kind regards and thanks,

Benjamin Geirhos

  • Hi,

    the i2c-Adress is 0x0B (SMBus 0x16 (R/W-Bit low) for Write and 0x17 for Read)

    I can read and write SMBus-Commands like Voltage, Capacity,... described in the Ref. Manual with standard i2c read-functions.


    Did someone know, how to setup calibration registers like: Temperature Enable 0x494E

    When i read this register on a brand new device i get 0x16 or 0x20 instead of the default value 0x06

    What i have to write on the Bus (i2c)?

    My Steps:

    Write Address: 0xB0
    Write ManufacturerAccess: 0x44
    Write 0x4E (low byte first - little Endian, see Page 68 in TRM)
    Write 0x49

    Start new Transmission and Read 1 Byte from Address 0xB0 and ManufacturerAccess-Register 0x44.

    I also tried this with ManufacturerAccess = 0x00 and read wit 0x23


    Best regards,

    Dirk