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 slave - BQ24765 - Battery Charger hold data line low

Other Parts Discussed in Thread: AM3505, BQ24765, BQ24725

Hi,

We are running into a very wired issue.

We have a custom board where we are using three I2C master (AM3505, MSP430 and Battery pack) and four I2C slave devices on a single I2C bus. All these devices (master/slave) are using SMBus protocol.

  1. AM3505 (master) communicates with all the slave devices at regular interval (10 sec).
  2. MSP430 (master) communicates with the Battery Charger (slave) every 10 sec.
  3. Battery pack (master) communicates with the Battery Charger (slave) every 5 sec.

The problem is, after a long run the BQ24765 - Battery Charger (which is one of the slave device) hold the data line low and we are not able to access the bus at all. The only solution to this problem is to disconnect the power to the charger. When we disconnect the power to the charger the Data line goes high and everything starts working (which is obvious since charger has hold the line).

Does anyone encounter such situation ever? Can anyone pls explain the problem and possible solution / debugging points?

(We have thought of a solution where we will implement a timer in MSP430. The timer  will check the status of SDA line every 5-10 sec, if the SDA line is low msp430 will reset SDA line to high. This will be a workaround of the problem which we would like to implement only if we don't have any other (proper) solution).

Regards,

Krunal

  • I didn't hear this issue on bq24765 before. But, we have an noise analysis on this issue before.

    bq24765 is a switching charger. If the switching is happened during the SDA signal filpping. The ground noise can couple to SMBus clock signal. This noise inserts an extra SMbus clock signal, it may turn a write commend to a Read commend or other deivce's address to bq24765 charger address. So, we can see the data line is held low.

    The solution:

    1. Reduce the noise source level. Check the PH (switching node) node, does it have too much ringing?  (Do we need to add a snubber? Or, add BTST series resistor to slow down the turn on speed?)

    2. Cut the noise path.

    a. Is the switching node copper too close to clock (SCL) trace?

    b. Does the SCL small single ground shares a same ground with power ground. (we recommend the small signal ground and power ground are separated first. And then, join together near the IC)

    3.  Make SCL (clock) signal strong and noise insensitive.

    a. If the ground noise add a spike on clock, add a small cap (lower than 220pF) close to the bq24765 SCL pin and bq24765 AGND.

    b. Reduce the pull-up resistor to make the flipping edge sharp.

    I agree with your workaround. Also, you may try to give some extra clock signal to let charge finish its job (bq24765 think it is read by host) and release data line.

    Also, please tell me what hardware do you change to make the bq24765 work with I2C? 

    Regards,

    Wang 

     

  • Hi Wang,

    Thank you very much for your valuable inputs. I will talk to my team on this and let you know.

    Regards,

    Krunal

  • Krunal, Wang

    We are encountering the exact same issue where a charger (BQ24725) is holding the SDA line low after a long time operating, we have come up with a similar work around where we hold SCL low for >35 ms to reset the SDA line, as with your issue we would like to identify the root cause. 

    Did you end up making a hardware change that corrected this or did you go with the work around?

    Thanks,

    -Zach