BQ28Z610: I2C bus hang when MCU communicate with BQ28Z610

Part Number: BQ28Z610
Other Parts Discussed in Thread: LP5562, TPS25751, BQ25723,

Tool/software:

Hi TI expert,

Currently i'm encounting the I2C bus hang issue when MCU(Nordic, nRF52840) communicate with BQ28Z610 as below:
NG symptom:
Randomly when MCU write register address, the 9th clock width is much smaller(2us), and after ACKed, the I2C bus always keep low(i suspect it is pulled low by BQ28Z610), and after 500ms, the I2C bus reset and recover, and randomly repeat the same NG symptom in the next time.Please see the attached log.

nRF52840 I2C intermittent failure log.xlsx

What I do:
1.Found intermittent I2C abnormal communication between MCU(Nordic, nRF52840) and BQ28Z610;
2.MCU's I2C communication with other I2C slave devices are good, no abnormal found;
3.Using logic analyzer to capture the I2C logs, found I2C bus hang;
4.Tried to remove all I2C slave device except BQ28Z610, and the NG symptom still exist;
5.Tried to disable the clock strech function via BQ STUDIO, and re-tried, and the NG symptom still exist;
6.Tried to introduce SW I2C and also increase the interval between 8th clock and 9th clock in the register address write operation above 100us, NG symptom disappear;


7.Tried to decrease the interval between 8th clock and 9th clock in the register address write operation below 80us,NG symptom come back again;

 

Finding:
The interval between 8th clock and 9th clock in the register address write operation caused this issue.

Question:
Do you know what's the root cause for this issue, and whether the finding is expected or not? Is there a konwn corrective action to this issue?

Look forward for your comments and thanks in advance.(also attached the Pack schematic and MCU I2C related schematic as below)

  • Hello,

    This question has been assigned and will be reviewed when possible. In the meantime you can post your .log/.gg files associated with the project.

    Thank you,
    Alan

  • Hi,

    Does this happen on multiple device?

    Can you share your .gg file?

    Regards,

    Diego

  • Hi Diego,

    Thank you for quick reply.

    The NG symptom only focus on BQ28Z610(system include TPS25751, BQ25723, LP5562 etc, I2C communication all OK).

    And attach the .gg file as below:

    BQ28Z610_0826.gg.csv

    BR

  • Hi,

    This is happening on multiple BQ28z610 ICs or just one? Does the mcu support clock stretching?

    It is possible the device could be damaged.

    Regards,

    Diego

  • Hi,

    This is happening on all the units in Proto build (50x units).

    nRF52840 support clock stretching, and i also tried to enable & disable BQ28Z610's stretch function by writing 0/1b to bit6 of I2C configuration setting, it didn't help on this issue.

    And what do you mean about device damage, if it's the fact, it will be very strange that increasing the interval between 8th & 9th clock pulse in register address write operaton can resolve this issue.

  • Hi,

    The i2c engine could have been damaged, but not if this is reproducible on 50 units.

    If you are using R1 FW you can hold the i2c lines low for 2 seconds to rest the i2c engine.

    8.3.12 I 2C Timeout The I 2C engine will release both SDA and SCL if the I 2C bus is held low for ~2 seconds. If the BQ28Z610-R1 device were holding the lines, releasing them frees the master to drive the lines. Note: that the low time setting can be under firmware control but the HW default is 2 seconds

    This is only for the R1 hardware.

    Regards,

    Diego