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.

BQ25895 VBUS/PMID/VSYS interaction

Other Parts Discussed in Thread: BQ25895

Hello,


I'm developing an application where I intend to use a BQ25895 with a Li-Ion battery as a power bank: I need to be able to charge the battery from VBUS, and output 5V on PMID to charge external devices. I'm using the BQ25895 in host mode with a microcontroller that talks to it over I2C. I've read the datasheet a couple of times now, but I still have some questions:


a) From what I understand, if only VBUS is present, the internal converter will be in buck mode charging the battery, and if VBUS is not present, the converter will be in boost mode charging an external device through PMID. This behavior is fine. However, I'm not sure what happens on PMID when VBUS is present. According to the functional diagram, it will have the same voltage as VBUS, since they are connected through RBFET (Q1). But what if I have a charger with MaxCharge, and the VBUS voltage is raised to, say, 12V? I would also have 12V on PMID, which is supposed to be a 5V output.


b) Section 8.2.6.1 (Narrow VDC Architecture) of the datasheet claims that VSYS is always kept over the minimum system voltage, "even with a fully depleted battery". From my understading of the functional diagram, this is only possible if an external charger is connected to VBUS, since VBAT and VSYS are connected via the BATFET. What happens on VSYS once the battery voltage becomes lower than the minimum system voltage? Is the BATFET simply turned off, shutting down VSYS?

Thanks!

  • Regarding a, when VBUS is present, V(PMID) = V(VBUS) - InputCurrent*Rdson(RBFET), so yes, when VBUS = 12V, V(PMIVD) ~=12V. In addition to reverse blocking the RBFET also performs input current limit.
    Regarding b, V(SYS) is clamped to MINSYS only when VBUS is applied. When VBUS is not applied, V(SYS) = V(BAT) - ISYS*Rdson(BATFET) down to VBAT(DPLZ) = 2.15V minimum but practically for I2C to function only down to VBAT(UVLOZ)=2.3V.
  • Great, thanks! One last question then: if I'm using a MaxCharge charger with MAXC_EN is set to 1 and there are 12V on VBUS, will the BQ25895 renegotiate the voltage and take it down to 5V again if I then set MAXC_EN to 0? (without having to unplug the charger).
  • When enabled, bq25895 negotiates with high voltage DCP adapters.
  • Jeff,

    That does not answer my question. I know the BQ25895 will negotiate with higher voltage adapters: what I need to know if is there is any way to make the BQ25895 re-negotiate a lower voltage (5V) after a higher voltage (9 or 12V) has been stablished. I need to do this under certain conditions to avoid outputting a voltage different than 5V on PMID.

    Thanks

  • Hello Nicolas,

    To add to Jeff's comments, if the charger had negotiated a higher voltage and MAXC_EN or HVDCP are disabled, the adapter should stay at 9/12V.

    Having said that, if you want to revert to 5V, you can disable HVDCP and force an input detection (REG02, bit 1) and the charger should handshake with the adapter and revert to 5V.

  • Hi Fernando,

    Thanks! I am now able to force a MaxCharge charger to decrease the output voltage to 5V, and then increase it back to 12V again by enabling/disabling those bits and forcing input detection.

    However, I'm now facing a strange issue: regular 5V chargers work fine, and the MaxCharge charger also works fine, but when I force 5V on the high voltage charger, the BQ25895 stops charging the battery, and the VDPM_STAT pin goes high. I am not changing any other setting, just setting MAXC_EN and HVDCP_EN to 0, and FORCE_DPDM to 1. Is it possible that I also need to manually update the voltage thresholds after forcing input detection?

    Bits 0 to 4 of REG01 (VINDPM_OS) are set to 00110 (600mV, the default value), and bit 7 of REG0D (FORCE_VINDPM) is set to 0 (relative VINDPM threshold).

    Thank you again for your help!

  • Yes. VINDPM defaults to relative mode and autosets a threshold at startup. It will not reset until input power is removed and replaced. You will need to FORCE_VINDPM and then change the value in the VINDPM register.
  • Jeff,

    I've run a couple more test and now have a better idea of what's happening. It looks like even though the VINDPM register is updated every time I plug a new charger (because I am using relative mode), it is NOT being updated when I force the high voltage charger to go to 5V. After setting MAXC_EN and HVDCP_EN to 0, and FORCE_DPDM to 1, VINDPM is still 11V (the same value it had before lowering the voltage).

    I have also tried plugging the charger with MAXC_EN and HVDCP_EN set to 0, and then setting them to 1 and forcing input detection. In this case, VINDPM is also not updated. It looks like the register is not automatically updated if the input detection was forced.

    I would like to continue using the relative mode for VINDPM and avoid setting absolute voltages: is there any way I can make sure VINDPM will be automatically updated? Would setting FORCE_VINDPM to 1 (absolute mode) and then ot 0 (relative mode) again work? Would I need to wait for some time between these writes?

    Thanks

  • Unfortunately, relative VINDPM autoset is reset/triggered by VBUS voltage rising above UVLO. But, you could use the integrated ADC to measure VBUS voltage and then set the absolute VINDPM based on the ADC reading. There would be a short period where no input current is allowed and the system would be powered only from the battery.
  • Oh, that's a shame. If I'm understanding correctly, you're suggesting I put the VBUS pin in high impedance mode (EN_HIZ) for a short while, measure the VBUS voltage while no current is being drawn, and then update VINDPM based on the value I read (replicating the relative mode algorithm). Is that correct? Will the ADC be able to measure the voltage while EN_HIZ is set? Having to power the system from the battery for a short while is not an issue.

  • Jeff,

    I'm encountering a weird problem. After I connect a MaxCharge adapter to VBUS, with MAXC_EN and HVDCP_EN set, the adapter voltage rises to 12V as expected. However, as soon as I set HIZ_EN in order to measure the no-load input voltage, the adapter drops its voltage to 5V again. What is causing this? Is there a way to avoid this behaviour so that I can get an accurate reading of the no-load 12V voltage?


    Thanks