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.

BQ25890: BQ25890 charging current rise and down frequently when powered with 9V supply.

Part Number: BQ25890

Powered by a 5V or 5.5V supply, it works normally.

Powered by 9V, I find the source current Rise and Down:

At first when just power up, Isource=1033mA and for about 30 seconds it is always 1033mA.

After that, the Isource drop to 480mA for 1 second and then go back to 1033mA for about 5 second, then it drop to 480mA again.....,go round and round.

Here is the status of the registers and the Isource:

 

9V

9V

Isource

1033mA

480mA

Ichgr

 1450 mA

 500 mA

VBUSV

 8300 mV

 8700 mV

IINLIM

 3250 mA

 3250 mA

VBUS_STAT

 DCP (3.25A)

 DCP (3.25A)

REG0C

 0x00

 0x00

TSPCT

 42%

 42%

 

 

What I use is a desk power supply. And when the voltage is set to 7V or 8V, it has the same phenonenon.

What's wrong with that?

Frank

  • Frank,

    Are you disabling the watchdog?  At what voltages are D+/D-?  What is the profile of your system load current?  Do you have an oscillscope shot of ISYS, IBAT, VSYS, VBAT?

  • Hi Jeff,

    The program is this:

    while(1)
    {
    tempL=BQ27411ByteRead(0x02);
    tempL=(tempL|0x40)|0x10;
    BQ27411ByteWrite(0x02,tempL);//1 – Start 1s Continuous Conversion
    printf("REG02 = %d,\n",tempL); 

    tempL=BQ27411ByteRead(0x12);
    printf(" %d mA \n",(tempL&0x7F)*50); 

    tempL=BQ27411ByteRead(0x11);
    printf(" %d mV \n",(tempL&0x7F)*100+2600); 

    tempL=BQ27411ByteRead(0x00);
    printf(" %d mA \n",(tempL&0x3F)*50+100); 

    tempL=BQ27411ByteRead(0x0B);
    tempL=(tempL&0xE0)>>5;
    if(tempL==0)
    printf(" No Input \n");
    else if(tempL==1)
    printf(" SDP \n");
    else if(tempL==2)
    printf(" CDP (1.5A)\n");
    else if(tempL==3)
    printf(" DCP (3.25A)\n");
    else if(tempL==4)
    printf(" Adjustable High Voltage DCP (1.5A) \n");
    else if(tempL==5)
    printf(" Unknown Adapter (500mA) \n");
    else if(tempL==6)
    printf(" Non-Standard Adapter (1A/2A/2.1A/2.4A) \n");
    else if(tempL==7)
    printf(" OTG \n");

    tempL=BQ27411ByteRead(0x0C);
    printf(" REG0C = 0x%x\n",tempL); 

    tempL=BQ27411ByteRead(0x10);
    printf(" %d \n",(tempL&0x7F)); 

    tempL=BQ27411ByteRead(0x0E);
    printf(" %d \n",(tempL&0x80)>>7); 

    Delay(0x0FFFFF);
    }

          1. watchdog not disabled, but the CONV_RATE bit is written frequently, so the bq25890 is always in host mode.

          2.  I use a desktop power supply, D+/D- is shorted.

          3. System load is about 200mA.

          4. It not convient to monitor Isys and Ibat on my board. I read the registers instead.

          And I take another test this morning.

     

    9V when normal

    9V when drop down

    Isource

    1200mA

    950mA

    Ichgr

    1900 mA

     1250 mA

    VBUSV

     8000 mV

     8400 mV

    IINLIM

     3250 mA

     3250 mA

    VBUS_STAT

     DCP (3.25A)

     DCP (3.25A)

    REG0C

     REG0C = 0x0

     REG0C = 0x0

    TSPCT

     52

     52

    THERM_STAT

     0

     0

        The 1200mA last for about 5 seconds and 950mA last for about 1 second.

        The bq25890 is very hot.

        This time ,the THERM_STAT is also monitored. but I find it is always 0 ,means never get into In Thermal Regulation mode.

    Frank

  • Frank,

    I will need to see all of the register readings during the 5 second period and also the 1 second period. If the top of the IC is hot, then it is likely going into and out of thermal regulation. Your register read may not be capturing the THERM_STAT bit. Do you have the IC's power pad properly soldered to the ground plane?
  • Jeff,

         "  Your register read may not be capturing the THERM_STAT bit"

         I think you are right, I do more test and monitor the registers carefully. And find what I miss is not THERM_STAT, what I miss is REG0C.

         Because the read is not frequently enough.

         Here is the result:

     

    9.2V

    9.2V

    9.2V

    5V

    Isource

    980

    980

    477

    695

    Ichgr

    1450 mA

    1450 mA

    550 mA

    400 mA

    VBUSV

    8500 mV

    8500 mV

    8500 mV

    4500 mV

    IINLIM

    3250 mA

    3250 mA

    3250 mA

    3250 mA

    VBUS_STAT

    DCP (3.25A)

    DCP (3.25A)

    DCP (3.25A)

    DCP (3.25A)

    REG0C

    REG0C = 0x0

    REG0C = 0x2

    REG0C = 0x2

    REG0C = 0x0

    TSPCT

    52

    51

    51

    61

    THERM_STAT

    0

    0

    0

    0

    TS PCT

     

    44.715%

    44.715%

    49.365%

    REGN

     

    6.16V

    6.14V

    4.32V

    TS value

     

    2.75V

    2.74V

    2.13V

     REG0C=0x02 meas : TS warm.

     The battery is warm, so the bq25890 lows down the charging current.

     And I find that, it's because the battery is under the board, the board is hot so the battery because warm. And I replace the battery, the current rise and down phenomenon never happens again.

     But I still have one more question:

     The REGN is 6.16V when powered with 9V and REGN is 4.32V when powered with 5V.

     That makes the reference of TS variable. So the TS value can not reveal the real temperature of the NTC resister. Why does bq25890  not use a constant reference voltage for the TS?

     Thank you.

    Frank

  • Frank,

    Great job debugging this on your own! As REGN varies, the TS pin voltage varies proportionately by the same amount. The TS pin voltage is then compared relative to the REGN voltage.