nPM1304 + nRF54L15: Single button on SHPHLD for ship mode entry and wake

Hi,

I'm designing a battery-powered device using the nPM1304 PMIC and nRF54L15. I want to implement a sleep/wake function using a single button.

Desired behavior:

  • Button press while running → nRF54L15 detects it, executes shutdown code, then sends TWI command to nPM1304 to enter ship mode via TASKENTERSHIPMODE
  • Button press while in ship mode → nPM1304 wakes via SHPHLD pin, regulators come up, nRF54L15 boots

Proposed wiring:

  • Single button connected to both nPM1304 SHPHLD pin and an nRF54L15 GPIO (directly in parallel), active low to GND

Questions:

  1. Is there any issue with having the button directly connected to both SHPHLD and an nRF54L15 GPIO simultaneously?
  2. While the system is running (not in ship mode), does the SHPHLD pin state affect normal operation, or is it only monitored during ship/hibernate mode by nPM?

Thanks!

Parents
  • Hi,

    The SHPHLD pins is pulled up to VBAT, this means the pin can not be connected to a GPIO pin of the nRF54L15 without causing a leakage current through the ESD diodes internal to the nRF54L15.

    A workaround for this is to only connect the button to SHPHLD and configure the EVENTSHPHLDBTNPRESS event to trigger one of the GPIO pins of the nPM1304. This way the nRF54L15 can be notified that the ship hold button has been pressed, and execute the shutdown code and the button can be used to wake the nPM1304 from ship mode

    So the connection would be:

    Button => SHPHLD => nPM1304 GPIO pin => nRF54L15

     

    Best regards,
    Bendik

Reply
  • Hi,

    The SHPHLD pins is pulled up to VBAT, this means the pin can not be connected to a GPIO pin of the nRF54L15 without causing a leakage current through the ESD diodes internal to the nRF54L15.

    A workaround for this is to only connect the button to SHPHLD and configure the EVENTSHPHLDBTNPRESS event to trigger one of the GPIO pins of the nPM1304. This way the nRF54L15 can be notified that the ship hold button has been pressed, and execute the shutdown code and the button can be used to wake the nPM1304 from ship mode

    So the connection would be:

    Button => SHPHLD => nPM1304 GPIO pin => nRF54L15

     

    Best regards,
    Bendik

Children
  • Nice, thank you! That sounds very useful.

    So the only way the nPM reacts to SHPHLD being pressed (in active state) is by setting EVENTSHPHLDBTNPRESS and, if configured, triggering one of the GPIOs?

    That seems to be exactly what I'm looking for. If I understand correctly, I could even detect a long press using the press/release events.

    What I don't see clearly yet is how exactly I configure—let's say—GPIO0 to trigger on the EVENTSHPHLDBTNPRESS event.

    Can I also release GPIO0 on the RELEASE event, so that GPIO0 effectively mirrors press/release events? Or is a dual GPIO config on this the way to go - one for press + one for release?

    Which configuration register maps EVENTSHPHLDBTNPRESS and/or EVENTSHPHLDBTNRELEASE to GPIOx?

Related