This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

No GPIO wakeup from SYSTEM OFF state

We have an nRF51822-based product that goes the SYSTEM OFF in certain situations. We wake up with the DETECT signal from a pin which we set to sensing just before calling sd_power_system_off() The code is really trivial:

...
nrf_gpio_cfg_sense_input(WAKEUP_PIN, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW);

#ifdef USE_UART
simple_uart_putstring((uint8_t*)"Good bye, blue sky!\r\n");
#endif

sd_power_system_off();
...

This always seems to work in "sunny day" cases. Unfortunately, we found a reproducible corner case for which the wake up does not work. In case we have a TRANSIENT short between the 3V3 power rail and GND (I know, it's bad. It happened temporarily for a mechanical issue), the following happens:

  • the nRF51 resets (cleanly, it seems)
  • the application starts executing, configures GPIOs, enters the main loop
  • the application decides to enter SYSTEM OFF, which triggers the code above

The nRF51 enters successfully SYSTEM OFF, but never wakes up again for WAKEUP_PIN. Is there some known situation where the wake up from DETECT could fail? We read the PANs (2.3 and 3.0) but did not find anything that could apply.

Parents Reply Children
No Data
Related