MP2790 infinite fault loop

I’m doing initial bring-up for the MP2790. I’ve set a long series of registers, any of which I can provide on request. I have most of the faults and interrupts enabled. The current behaviour is that

  1. on boot, I set all of the initial registers,
  2. I set ACTIVE_CTRL to 3 (charge+discharge),
  3. quickly get an xAlert,
  4. check INT0 and INT1, seeing that the only interrupt flag is FET_DRIVER_INT_STS, and that FET_TIMEOUT=1,
  5. reset all flags via INT1_CLR,
  6. never see any other xAlert interrupt;
  7. observe that I’m permanently stuck in fault (PWR_NORMAL_C);
  8. issue ACTIVE_CTRL=0 (FETs off);
  9. issue ACTIVE_CTRL=3;
  10. observe that INT0 and INT1 are both all 0;
  11. loop 7-10 infinitely.

The test load is trivial and I don’t get any other SC or OC interrupt flags, so that seems unlikely to be the culprit. Why would this be stuck in fault if I only get one timeout and then it’s never reported again?

The immediate cause for the timeout was that TURNON_TIMEOUT was too aggressive, so I increased it to the maximum of 180 ms. There were also electrical issues where there was solder discontinuity on the standby FET. Disabling standby and increasing the timeout allows for normal system operation, but it still doesn’t explain why I would be able to enter a state where I always drop into NORMAL_C with no whiff of an exception beyond the initial one.

Hello,

I see that you mediated a few causes in the form of the aggressive TURNON_TIMEOUT_ setting combined with the solder discontinuity on your standby FET where the short timeout fault (FET_TIMEOUT) was flagged before the FET could fully turn on.

The poor solder joint perhaps also rendered the electrical path incomplete. Once the fault was triggered, the MP2790 latched to the PWR_NORMAL_C fault state, making the device stuck.

Here is the FSM as posted in the datasheet for reference outlining the conditions to supplement my initial comments.

Hope this provided some insight here. Let me know if you have any more questions.

Best,

Krishan