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.

BQ25790EVM: I2C Read Operation

Part Number: BQ25790EVM
Other Parts Discussed in Thread: BQ25790

Hi,

I am working on a battery charger circuit with the BQ25790. In my design, I only have a UART interface available. Therefore, I am using a SC18IM700 UART-to-I2C bridge IC to communicate with the BQ25790. I designed the following prototype circuit for testing purposes.

I can successfully communicate with the BQ25790 but I have come across this unexpected finding that I can't wrap my head around.  I send an instruction to read 3 bytes of data starting from the address 0x00 (REG00_Minimal_System_Voltage) and receive the correct data back ( 1 byte from REG00_Minimal_System_Voltage and 2 bytes from REG01_Charge_Voltage_Limit). I send the same instruction again and then it returns the data of the next 3 bytes (2 bytes from REG03_Charge_Current_Limit and the lower byte of REG05_Input_Voltage_Limit).  If I keep sending the same instruction, it returns the data of the next three bytes until it reaches the last register of the BQ25790 and then it loops back to REG_00. I don't understand why this is happening. In my instruction, I don't change the address of the first register. Just to test the other half of the circuit, I replaced the BQ25790 with some other IC with an I2C interface. After changing the slave address data, I sent the same instruction over and over and every time it returned the data of the first 3 bytes. 

If you can help me to figure out what's happening with BQ25790, that would be great.

Thank you so much for your time. 

Regards,

Paul

  • Hi Paul,

    It appears that the first time the instruction sent everything functions correctly, but upon a second read the register Address should be re-written and that is not occurring. This would cause the device to believe that a multi-read is occurring and provide subsequent register information.

    Can you please provide waveforms for the first functioning i2c communication and the subsequent incorrect reads?

    Best Regards,

    Juan Ospina

  • Hi Juan,

    Please find attached the waveforms of the first, second and third instructions executed one after the other and the data captured in RealTerm.

  • Hi Paul,

    I am truly sorry for the delay, I am unsure why I did not see the notification of this response.

    Can you please extend the horizontal scale so that I can see more of the transmissions? I am curious to see the full initial write for the first working transmission as well as for the second not working transmission.

    Thank you,

    Juan Ospina