I've got a BQ25895 charging off solar. I'm noticing a condition where the BATFET_DIS bit will be asserted on its own, without any command from my firmware.
I initially noticed after powering up via QON (VBUS disconnected) and then plugging in the solar panel and finding that it refused to charge. On further analysis, BATFET_DIS was set, and the system was only powered from VBUS and couldn't charge. When unplugging the panel, it of course lost power since the battery was disconnected.
Only about half of my units did that, the other half (identical hardware and firmware) worked fine.
Temperatures are fine, below 40C.
System current is low, it's just running an ESP32. Less than 0.5A.
My current workaround is to continuously check if VBUS is plugged in and if so, check BATFET_DIS and clear it if it is set. I also log an error message.
This seemed to work - the system is charging now. However, I'm seeing my log message come up occasionally with the panel plugged in (possibly from momentary cloud cover), so it keeps happening. I have to hope that there is enough power on VBUS available to ride through and reset the bit before losing power entirely. There is no way I can poll fast enough to guarantee this will never happen - it would need a huge amount of capacitance to ride out a power glitch that long.
As far as I can tell from searching here and the datasheet, the BQ25895 will set BATFET_DIS if there is an overcurrent condition on the battery. But there is just no way I'm hitting that in this design. The SYS output is just powering a small microcontroller circuit. There is no way I'm hitting 8A - and this only occurs when VBUS is plugged in to a solar panel, it otherwise never happens. The circuitry on the other side of SYS is a 3.3V buck converter which is current limited to about 1A. Additionally, I don't get a brownout on that side - as long as there is just enough solar available, the SYS power stays up. So in case I haven't made that clear enough: there is no over-current condition occurring, at least not on the load side of the circuit.
There are no faults indicated in the fault register, and all other registers look fine.
Possibly there might be some poor interaction on the VBUS side from a solar input and the BQ25895 gets very confused and decides to try to turn the batteries off. It would be far from the first bug I've found in the chip logic - it also used to momentarily glitch the SYS output during periods of low light (enough to present a voltage on VBUS but not enough to actually power anything) and I had to fix it by adding a large capacitor on it (so it still glitches briefly, but there is enough capacitance to ride through). Perhaps this is related to that bug (the datasheet asserts that supplement mode is always available on marginal inputs but this is clearly not true in practice). It has been extremely frustrating - TI markets this chip as solar compatible but it performs quite poorly in real world conditions. It works fine as a wall charger but the solar app note was clearly not tested in true day/night cycling and in varying weather conditions.
I'm open to suggestions on how to work around this. I have to be able to power this thing off solar and have it stay up unless the batteries run down to cut off. It is not acceptable to cut off the batteries during charging when there is nothing wrong. I shouldn't have to poll the bit and reset it correctly during normal operation, and I can't do that fast enough to guarantee the system will never lose power.