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

nRF52840 DK / PCA10056 System Off

Hi all,

I cannot manage to get a proper System Off consumption with the nRF52840.

I use this setup, with devkits as the DUT (powered through "External Supply") :

When using a PCA10100 (nRF52833), I get this (4µA), when calling nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF) :

But, with the PCA10056, I get this (2mA) :

Both devkits have the exact same physical settings (jumpers and switches).

If I configure some GPIO to wake up the device from the System Off, I get a normal reset.

What could explain that I cannot manage to have a proper System Off with the nRF52840, but I can with the nRF52833 ?

I have the same problem when using a custom board instead of a devkit.

Thanks a lot.

Parents Reply
  • Hi Jerome,

    Thank you for your patience, I am very sorry for the long wait. 

    I am investigating a few possible scenarios. In order to narrow things down, could you please let me know the IC revisions involved, most importantly for nRF52840? And which HW version of the DKs are you using? I had a discussion with a team member regarding your case, and it was suggested that the DMA could still be active. The DMA is supposedly consuming around 2mA and it might be kept active due to some peripheral not shutting down properly. Could you please also list the peripherals you are using? The next step would be to investigate which of these could still be running. One place to look is at the errata, as small variations between the ICs could be causing trouble.

    Best regards,

    Håkon

Children
  • Hi Håkon,

    Thank you for your answer.

    The nRF52840 is QIAADO, 1930BC.

    The PCA10056 is 2.0.2 2020.13.

    I doubt it could be the DMA or any peripherals that would still be running because my code is very simple and I don't activate anything :

        ble_stack_init();
        nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF);

    I had a look at the errata, and I didn't find anything relevant.

    Best regards,

    Jerome

  • Hi Håkon,

    I noticed that the PCA10056 is not like the PCA10100 : it has a much higher consumption when used the way I explained.

    Whereas the consumption of the PCA10100 is very similar when used as a DUT (through external supply) or with the PPK on top of it.

    It's a pity the devkits are so (secretly) different.

  • Hi Jerome,

    I am sorry for the long silence. I have now made some measurements and findings.

    What is the position of SW6 on PCA10056? When the switch is positioned at 'nRF ONLY" I measure about 5uA. However, when I move the switch to 'Default' I measure 2mA. Have you tried toggling this switch? If we are lucky, you will see the measured current drop to the uA range as well.

    If we do the same exercise on PCA10100 we measure 5uA when set to 'nRF ONLY'. If the switch is set ti 'DEFAULT' the current only jumps a few hundred nA.

    Here are a few notes regarding my setup: I performed the measurements with PPK2 set up in Source meter mode. I compiled ble_app_uart using nRF5 SDK 17.0.2 and SoftDevice S140. I made the same shutdown call as you as well as disabling uart. The main() of the modified example then looked like this:

    int main(void)
    {
        bool erase_bonds;

        // Initialize.
        //uart_init();
        log_init();
        timers_init();
        buttons_leds_init(&erase_bonds);
        power_management_init();
        ble_stack_init();
        nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF);
        gap_params_init();
        gatt_init();
        services_init();
        advertising_init();
        conn_params_init();

        // Start execution.
        printf("\r\nUART started.\r\n");
        NRF_LOG_INFO("Debug logging for UART over RTT started.");
        advertising_start();

        // Enter main loop.
        for (;;)
        {
            idle_state_handle();
        }
    }

    In sdk_config.h I disabled logging on line 7731 by changing from 1 to 0: #define NRF_LOG_ENABLED 0.

    Best regards,

    Håkon

Related