Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

BQ27421-G1: SCL line gets stuck at "low" state

Part Number: BQ27421-G1

Dear experts,

I have a customer having an issue with our BQ27421-G1 device as follows:

"First to begin that our problem is very rare and in general Fuelgauge is working correct.  Its identification is:

Fid=0421
ver=0109

The problem appears as "endless" clock stretching because SCL line has stuck in LOW state.

We have gpio emulated I2C communication so when we need to pull SCK to HIGH, we change gpio direction to input and wait until we read HIGH on it (because of the pullup). We observed that we are waiting for HIGH to forever. After 3sec of waiting we get Watchdog reset but stuck in this state again and  again until power is removed from Fuelgauge. The first thing after MCU reset is to set SDA and SCL lines to their idle state (HIGH) but because this is impossible MCU is reset again.

As I said only when power source has been removed SCL line may be controlled.


As you see from the picture above we have a second slave on our I2C bus but we have reset option for it so we figured out that it is not the cause.
Fuelgauge schematic is the following:
 "

 Explanation from another engineer is: "In this letter are attached parts of the schematics of two different devices. There are differences in the connection of BQ, but the problem found is the same. SCL pin of BQ stays in strong 0 till battery removal. If we use strong output levels of the MCU clock level is about 1V. After battery removal it goes up to normal value of 3.3V. We don't know what exactly is the reason the IC to enter in such mode, but it happens during operation at different customers. I want to remind that there is another problem with this IC, too. Sometimes it just stops to respond to its I2C address at all. Is it possible the firmware of BQ27421-G1 to be updated over I2C interface?"

Looking forward to your expert advise.

I have attached full schematics as well.

Thanks,

Murat Ilhan.

  • Do you have a screenshot of your I2C communication implementation? Is there anything specific to the SCL/SDA signals (timing, voltage, edge rates...) when the gauge interface locks up? You can try setting both SCL and SDA low for 2 seconds to recover.
  • Hi Dominik,

    I am attaching the screen shot to this thread. They have replied to me as below:

    "My colleagues have already tried to set both lines low. Diagram is attached, but we don't know why and when exactly the interface locks up."

    So, it looks like they have tried and put both SDA and SCL low but that did not help.They apparently do not know when the device I2C line locks up.

    I hope to hear back from you very soon as our assigned account needs to resolve this very quickly due to being a line stop issue. Let me know how I can help to quicken things.

    Thanks,

    Murat.

  • Please make sure that you keep the I2C timing within the restrictions from the datasheet. Do not issue more than 2 standard commands per second.

    In the case where the gauge doesn't pull SCL low but it doesn't respond to commands on the bus, please measure the voltage on VDD (B3).

    GPOUT looks like it's floating. This pin must be connected as per the pin functions table on page three of the datasheet. Note the recommendation to connect this pin to a GPIO on the MCU. www.ti.com/.../slusb85e.pdf
  • Hi Dominik,

    Here the feedback from our customer:

    "I know about the recommendation for GPOUT. In the second schematic is connected as you see, but the same problem has occurred.
    Yesterday we performed an experiment - repeatable communication to BQ with no interrupts, i.e. as many times as possible per second. After few hours IC was still responding.
    Voltage values - normal."

    This is interesting, it looks like when the interrupts come into play, the problem happens if I understood correctly.

    Let me know what you think.

    Murat.

  • Please elaborate on the interrupts. Which interrupts?
  • Hi Dominik,

    Customer says: "the only interrupt I see mentioned in the documentation is "Configurable SOC Interrupt or Battery Low Digital Output Warning", but we don't use this feature."

    I hope this helps.

    Murat.

  • The GPOUT pin is a multi-function pin. Even if you don't use any interrupts you still need to make sure it is terminated correctly. It is used to get the part out of shut-down mode so if this pin is not connected to a uC output then it will not be possible to start the gauge if it entered shutdown mode (unless you power cycle the gauge).
  • Hopefully, this will solve the problem. Thanks Dominik.

    Have a nice day,

    Murat.

  • Hi Dominik,

    The customer had the following feedback:

    "The IC is not in shut-down mode. In the second schematic this pin is connected to the MCU and we have a problem too?
    Is the firmware of the fuel gauge updatable?"

    There are two different designs in which the GPout is connected in one but not connected in the other, so the customer engineer is saying both designs do fail the same way.

    What do you think?

    Murat

  • The firmware can't be updated.

    I can't diagnose why SCL gets stuck low via E2E. It's not normal. There's likely some incorrect timing or transients or _something_ on the I2C bus or supply that kicks the gauge into this state.

  • Hi Dominik,

    Yes, this is very strange. They must be doing something wrong sw wise. It is hanging up perhaps due to some setup/hold time violation. I will ask them to go over these parameters while making sure all the line terminations are done correctly.

    Thanks again,

    Murat.