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.

BQ24195L: Unable to Detect Max Charge Rate

Part Number: BQ24195L

Hi there, I'm trying to verify that the BQ24195L works as expected in our system, however I'm running into issues with getting the battery to charge at the correct speed. The battery will charge at 500mA when connected to a USB 3.0 port on a laptop, monitor, dock, etc. The battery will charge at 100mA when connected to a 2.0A cellphone charger or directly to a power supply.

Please help me debug / understand why it is unable to charge faster in both scenarios. I would expect more from a USB 3.0 port, and certainly more from a cellphone wall charger.

  • Battery is 3.7V
  • ILIM is set with 357 ohm resistor (should allow 1.5A)
  • Charge current register is set to 2.2A
  • HI,

    How are the D+/D- and OTG pins connected? What is REG08b[6:7] reporting? From table 2 on datasheet page 14, the input current limit can be limited to 100mA or 500mA for a detected SDP port if OTG is high or low.

    Regards,

    Jeff

  • Hi Jeff,

    OTG = 3V3 (10k pullup)

    D+/D- = connected to USB D+/D- (with ESD protection and 90ohm diff). I'm not a hardware guy but other devices (ie. CP2102 USB-UART) on the same bus appear to be communicating fine.

    REG08b[6:7]:

    On the cellphone charger: 00 (not detected)

    On the USB 3.0 port: 01 (USB host) or 10 ( Adaptor port)

    After some further testing the behavior on the USB host is inconsistent and varies between 350mA and 680mA and REG08b[6:7] toggles between 01 and 10 when I cycle it.

    It's strange that the same USB port can be detected as difference devices, and also that the cellphone charger is not recognized at all. In fact I've found one Sony branded wall charger that it only charges at ~45~75mA with REG08b[6:7] = 00.

  • Hi,

    The BQ24195L needs to be the only IC using the D+/D- lines for the first second after its input voltage is applied.  If not, it will not successfully complete adapter detection.  If you have an oscilloscope, monitor VBUS, D+ and D- at power up and see what is happening.

    For adapter's that cannot be detected (e.g. USB type C, QC3.0, etc.), this older charger defaults to 100mA input current.  Per the USB BC1.2 spec, your USB host is now supposed perform USB enumeration with the charging port, determine its true current capability and tell the processor what input current setting that charger should have. 

    Regards,

    Jeff

  • I see, this may be an issue of having other devices on the USB BUS. Is it not a valid use case then for this device to share a bus?

    I tried setting IINLIM to 1500mA per your suggestion and that increased the charge current from 100mA to 300mA for the 1.5A USB2.0 charger and from 500mA to 750mA with the USB3.0 port. While an improvement, both are still quite far off the set maximum 1.5A. Any idea what's going on?

    Also wondering what this line below from table 7 means. What is I2C in this context?

    "Input Current Limit (Actual input current limit is the lower of I2C and ILIM)"




  • The charger's D+D- lines return to HiZ approximately 1 second after power up.  You have to ensure no other communication over the bus during that time.

    The I2C comment refers to the I2C register that stores the the input current limit setting.  Following D+/D- detection, the charger auto stores the value in the register but you can use the host processor to change the value at any time.  If the ILIM resistor set value is lower than the I2C register value, the ILIM register value takes precedent.  

    Regards,

    Jeff

  • Thanks for all the help so far, Jeff. Unfortunately I'm still not able to get the charger to the current levels I'd expect. Could you perhaps take a look at this register dump? This is charging from a Samsung 1.5A charger, using a USB-A to USB-micro cable. Battery is at 4.0V, charge current is 350mA, and system current is 3mA

    BQ24195L: Register 0x0 = 0x36
    BQ24195L: Register 0x1 = 0x1b
    BQ24195L: Register 0x2 = 0x5c
    BQ24195L: Register 0x3 = 0x11
    BQ24195L: Register 0x4 = 0xb2
    BQ24195L: Register 0x5 = 0x8a
    BQ24195L: Register 0x6 = 0x3
    BQ24195L: Register 0x7 = 0x4b
    BQ24195L: Register 0x8 = 0x2c
    BQ24195L: Register 0x9 = 0x0
    BQ24195L: Register 0xa = 0x23

  • Hello,

    I took your register settings and input them into the BQ24195L software and here is the screenshot of it for your reference. I noticed that in your status register 0x08, it shows that your device is in DPM regulation mode. I'm not sure if it is regulating the input current (IINDPM) or input voltage (VINDPM). Could you measure the input voltage at the VBUS pin and let me know what voltage you see? This will help determine if it's in VINDPM or IINDPM.

    Thank you,

    Hari

  • Hi Hari,

    VBUS was sitting 4.35V. I increased the power supply to bring it up to 4.8V which produced the below registers but no effect on charge current. I'll get that EVM tool and see if it'll help me debug too.

    VBUS = 4.8V:

    BQ24195L: Register 0x0 = 0x36
    BQ24195L: Register 0x1 = 0x1b
    BQ24195L: Register 0x2 = 0x5c
    BQ24195L: Register 0x3 = 0x11
    BQ24195L: Register 0x4 = 0xb2
    BQ24195L: Register 0x5 = 0x8a
    BQ24195L: Register 0x6 = 0x3
    BQ24195L: Register 0x7 = 0x4b
    BQ24195L: Register 0x8 = 0x24
    BQ24195L: Register 0x9 = 0x0
    BQ24195L: Register 0xa = 0x23

  • Hi,

    Were you able to ensure that there was no communication on the shared on the I2C bus after power up? I see that in the Reg 0x08, it still shows that the VBUS is unknown. If you see the Table 2 from the datasheet below, it will clamp the current limit if bits [7:6] are 00. Also, what is the battery voltage that you measure? Could you please measure this voltage at the BAT pin of the IC and also your input current from the charger? As for the charging, how are you measuring the low charge current going to the battery?

    Thank you,

    Hari

  • Hi Hari, thanks for the continued support! Register 0x08 will not detect any wall chargers. However if I connect it to my PC it is able to detect it as USB host (0b01). I checked and I don't see any traffic on the D+/D- lines. I think if this were any issue of interference it would be able to detect the USB host either.

    However, I thought that the input current limit could be over-ridden by the register settings even if detection is not successful. Is this not correct?

    Voltage at the battery and at the BAT pin is the same (4.025V). Current from the charger is not great resolution but shows 0.09A when charging at 97mA and pretty well follows charger current. As I mentioned earlier our system current is only a few milliamps.

  • Hi,

    Alright, the detection should be only at the beginning so it should be ok then. If you are able to, could you also measure directly your system voltage? If the system voltage does not rise to 2.2V or higher, the device will force the input current to 100mA. Also, how exactly are you measuring the charge current going to the battery? Are you using a current probe or another way?

    Thank you,

    Hari

  • Hi Hari, the system voltage is 4V, and I can confirm the battery is charging at 300mA (not 100mA) via an inline current meter.

  • We're still having issues with this. I'm not sure what else to try at this point.

  • Silomilo,

    I think we covered this above, but your TS pin voltage is the normal range, correct?

    First, do you have a BQ24195LEVM that you can configure similar to your system? 

    Second, do you have another way (e.g., measure voltage across a 0.01 resistor, oscope current probe) to measure battery charge current?  We do not recommend and never use a current meter between the charge BAT pin and battery to measure current?  Or if you short across the current meter, does the input current rise?

    Third, if you have an oscope, can you measure VBUS, VBAT, IBAT and SW, zooming to show the switching pulses on SW?

    Regards,

    Jeff