Unexpected Wakeup from Hibernate Mode via SHPHLD with Rising-Edge Configuration on nPM2100

Hi Nordic team,

I'm using the nPM2100 PMIC in my design to power a microcontroller. The microcontroller sets the nPM2100 into Hibernate mode, and a vibration sensor connected to the SHPHLD pin is used to wake the system on movement.

  • The vibration sensor is normally closed, pulling SHPHLD to GND (low) during rest.

  • The PMIC is configured to wake on a Rising Edge on SHPHLD (via register 0xC2 = 1).

  • SHPHLD is internally pulled up.

Exclamation Problem:

When the SHPHLD pin is already high before entering Hibernate, the nPM2100 immediately wakes up, even though no edge transition occurred. This seems to contradict the expected edge-based wakeup behavior.

To eliminate external factors:

  • I replaced the vibration sensor with a mechanical switch (same logic behavior).

  • No bounce or glitches were observed.

  • Wakeup occurs immediately if SHPHLD is already high when Hibernate is entered.

Attached you’ll find two charts:

 Chart with upwards trend Figure 1: Shows the SHPHLD wakeup trigger occurring without any edge transition at Hibernate entry (Rising-Edge configuration).


Chart with upwards trend Figure 2: Same scenario with Falling-Edge configuration (0xC2 = 0) — no false wakeups occur. Behavior is now correct and stable.

This leads me to believe that:

The nPM2100 may internally default to a low reference state for SHPHLD edge detection during Hibernate entry. If the pin is already high, this is interpreted as a Rising Edge, triggering a wakeup immediately.

This behavior is not described in the nPM2100 Product Specification.

White check mark Temporary workaround:

I switched to Falling-Edge detection and inverted the logic. This now works reliably.


Pushpin My questions:

  1. Is this a known behavior or a bug in the Hibernate wakeup edge detection logic?

  2. Does the PMIC not properly reference the current SHPHLD state when entering Hibernate?

  3. Can this be addressed in firmware, or should Falling-Edge be considered the only reliable mode?

Thanks in advance – let me know if you'd like more test logs or register traces.

Best regards,
Philipp

Parents
  • Additional finding:

    After further testing, I noticed that the very first entry into Hibernate after a cold start behaves as expected – edge detection on SHPHLD works reliably (tested multiple times).

    However, if the PMIC wakes from Hibernate via SHPHLD and I put the system back into Hibernate mode (without cold reset), then:

    - The system immediately wakes again via SHPHLD, even though the SHPHLD pin remains stable (physical switch attached).
    - This suggests that SHPHLD edge detection logic may not reinitialize correctly after a prior SHPHLD-based wake event or I'm missing the spot.

    This points to a potential issue with edge detection state retention or misbehavior in the internal logic between Hibernate transitions. It seems that the first Hibernate cycle works correctly, but subsequent cycles behave as if the previous wake source is "stuck".

    I'm happy to provide register dumps or reinitialization sequences if needed.

    Would appreciate clarification if this is known/expected, or if a specific sequence is required to fully reset the SHPHLD wake logic.

Reply
  • Additional finding:

    After further testing, I noticed that the very first entry into Hibernate after a cold start behaves as expected – edge detection on SHPHLD works reliably (tested multiple times).

    However, if the PMIC wakes from Hibernate via SHPHLD and I put the system back into Hibernate mode (without cold reset), then:

    - The system immediately wakes again via SHPHLD, even though the SHPHLD pin remains stable (physical switch attached).
    - This suggests that SHPHLD edge detection logic may not reinitialize correctly after a prior SHPHLD-based wake event or I'm missing the spot.

    This points to a potential issue with edge detection state retention or misbehavior in the internal logic between Hibernate transitions. It seems that the first Hibernate cycle works correctly, but subsequent cycles behave as if the previous wake source is "stuck".

    I'm happy to provide register dumps or reinitialization sequences if needed.

    Would appreciate clarification if this is known/expected, or if a specific sequence is required to fully reset the SHPHLD wake logic.

Children
No Data
Related