Npm1100 SHPHLD button shared with GPIO

I am currently developing a board with the npm1100 and nrf52832. I want to make use of the npm1100 ship mode to achieve a very lower power off mode.

I want to use a button connected to SHPHLD to power on again but I also want to connect the same button to a GPIO pin on the MCU.

If the button is connected to both SHPHLD and a GPIO pin I am concerned this will connect VBAT to the MCU and will slowly drain the battery. Also VBAT is 3.7 where as VDD is only 3.0.

I also considered using a simple MOSFET level shifter but I'm concerned this will also drain the battery.

What is the recommended way to share the button input with SHPHLD and a GPIO pin while minimizing power consumption?

  • Hi,

    What is your motivation to use the same button for a GPIO that you already use for SHPHLD, note that you're not forced to pull SHPHLD low to exit ship mode, you can also just plug in VBUS. That will make it exit ship mode. 

    If the button is connected to both SHPHLD and a GPIO pin I am concerned this will connect VBAT to the MCU and will slowly drain the battery. Also VBAT is 3.7 where as VDD is only 3.0.

    Exposing the nRF52832 to 3V7 when VDD is 3V0 violates the absolute maximum ratings and can result in damaging the chip. 

    How are you thinking of implementing the level shifter?

    If you absolutely don't want to add a second button then I would go with the level shifter if you're able to make it work with that,

    regards

    Jared

  • Thanks for your reply Jared.

    The device is a small wearable device - there simply isn't space for many buttons. I was intending to use the ship mode as the main power-off mode since it isolates the battery, instead of powering down the MCU and all the peripherals. Maybe this is the wrong approach?

    So the idea was that one of the application buttons could be used to power it on by pulling SHPHLD low. I was thinking of implementing the level shifter like this:

    This should work fine, but results in a small current drain of approx 230uA when the button is not pressed. I suppose I could use a GPIO output instead of 3V0 VDD and only turn it on when scanning the button. but even this could become significant over time.

  • mccleanp said:
    The device is a small wearable device - there simply isn't space for many buttons. I was intending to use the ship mode as the main power-off mode since it isolates the battery, instead of powering down the MCU and all the peripherals. Maybe this is the wrong approach?

    Just to be clear, you can still put the device into ship mode and exit it without using SHPHLD:

    There are two ways to exit Ship mode. Either connect the USB (VBUS) or set SHPHLD low for a minimum period of tshipToActive. The battery supply (VBAT) is used to hold SHPHLD high through a weak pull-up resistor when Ship mode is enabled. A circuit to pull down SHPHLD is optional (see the Button switch shown in the following figure). If no pull-down circuit is present, Ship mode is exited when VBUS is connected.

    If you're restricted to only using one button then I think you have the choice of either not using the pull-down circuit and only rely on VBUS, or using a level shifter as you've shared.

    regards

    Jared 

Related