Device not booting up after SystemOff (NRF52840)

NRF52840

We are using NCS v3.3.0, however this issue occurs also on NCS 3.0.0.

When using the SoftDevice Controller stack. ie MPSL etc enabled, at times we enter SYSTEMOFF without calling bt_disable and mpsl_unit.

There is a chance that our device does not seem to wakeup again when using the GPIOTE PORT Detection. It's a simple switch used to wake up the device and it works 90% of the time it seems.

However, it seems that if we call:

bt_disable() followed by mpsl_lib_uninit(), the device seems to wake up all the time

Do you have any idea what could be going on?

When the device does hang, I attach a debugger to it without restarting the device and the PC register appears to be at the early stages of Init in Zephyr land generally. After which I hit 'RUN' and the device continues to boot as normal.

Thanks

  • Hello,

    Not directly related to the problem, but there is a note in the datasheet that: "Before entering System OFF mode, all on-going EasyDMA transactions need to have completed."

    So in general we do recommend that you have a safe/proper disabling everything before going to system off. But in this case I suspect that there may be some higher level interrupts occurring shortly before you want to go to system OFF, and indirectly reconfigure or change "something" that prevent wakeup from system OFF to work. So you might also at some point shortly before you go to system OFF disable all interrupts before you configure the hardware exactly as you want before going to system OFF.

    Kenneth

  • Thanks for the quick reply.

    Before entering SYSTEMOFF a call to __disable_irq is made. ISB and DMB for good measure too. Before the System goes off all interrupts are disabled and the GPIOs are setup for DETECT on LATCH.

    If there are on going EasyDMA transactions, what would happen?

Related