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.

BQ40Z80: Receiving Extra 2-Byte of Data initially, when reading Status1(0x0071), Status2(0x0071) Registers.

Part Number: BQ40Z80

Hello,

The BQ40Z80 is interfaced with the i2c-2 in my IMX8 processor-based system. Here I am reading the DAStatus1(0x0071), DAStatus2(0x0072), and DAStatus3(0x007B) register.

1) DAStatus1(0x0071) Register: Here when I am reading this status register, which returns 32 Bytes of data containing the Battery voltage, BAT Volatge, PACK voltage, current and Power as mentioned in the BQ40Z80 reference manual. And as mentioned in manual I am receiving 32 Bytes of data, But the first 2 initial bytes is not technically correct I assume as it does not practically represent Battery1 voltage as mentioned in referenced manual. And the same thing is happening in other status registers such as DAStatus2, DAStatus3 except the value is different, but those values are???

For the Reference I have attached the Screenshot of my reading. Will be waiting eagerly for the reply. Please provide the Solution or Explanation ASAP.

Thanks & Regards,

HK. (Acevin Solutions)

  • Hello HK,

    Please make sure you follow SMBus specification, The BQ40Z80 does not use I2C, the first byte returned is the size of the block read. From what I can tell with your first screenshot of 0x71, all the reported values are correct, the first byte is the size of the packet (0x20) then all the data follows (0x0EAA = 3754mV, 0x0E69 = 3689mV, etc) I suspect it is the same issue with all block read commands.

    SMBus spec: http://smbus.org/specs/smbus110.pdf

    Sincerely,

    Wyatt Keller