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

How to put the nrf52832 into deep sleep mode

Hello,

I am currently using nRF52832 with SDK v11.0.0 and S132 v2.0.0. I am also using the soft device as my application requires. I have been trying to put the CPU into SYSTEM OFF mode using the following:

// Configure the "main" button:

nrf_gpio_cfg_sense_input( BUTTON_MAIN_PIN, NRF_GPIO_PIN_PULLUPNRF_GPIO_PIN_SENSE_LOW );

// Enter SYSTEM OFF mode

sd_power_system_off();

There is one major problem -- the system is still pulling a lot of current ~3.5mA. I don't understand what is going on. I read this in the manual, in section 18.2: "

Before entering System OFF mode, the user must make sure that all on-going EasyDMA transactions have been completed. This is usually accomplished by making sure that the EasyDMA enabled peripheral is not active when entering System OFF. "

Questions: -Am I using the correct function call for my version of the SDK to put the system in System OFF mode?

                  - Is the EasyDMA consuming that much current?! If so, how do I disable EasyDMA and ensure all transactions are complete?

                   - What other calls am I missing?

Parents
  • Hi

    What peripheral(s) is your application using with EasyDMA? The current consumption you are seeing looks more like your chip is in debug mode. You should always be able to go back to normal mode by way of a reset, try adding NRF_POWER->RESET =1; to your code, from here, you should be able to do pin reset after programming.

    Best regards,

    Simon

  • Hi Simonr, thank you for your reply. My application is running I2C and SPI which both are using EasyDMA. I thought that if I turned off EasyDMA but uninitializing the I2C driver and SPI driver, everything would be ok. 

    Is sd_power_system_off() the correct function call to make?

    I'm using the nRF52832, not the nRF52811 (which is the model number that your debug mode link sends me to).

    My application must be put into System OFF mode via user interaction, and not after a reset.

    So do I call 

    NRF_POWER->RESET =1;

    and then 

    sd_power_system_off(); ?

    Thank you.

Reply
  • Hi Simonr, thank you for your reply. My application is running I2C and SPI which both are using EasyDMA. I thought that if I turned off EasyDMA but uninitializing the I2C driver and SPI driver, everything would be ok. 

    Is sd_power_system_off() the correct function call to make?

    I'm using the nRF52832, not the nRF52811 (which is the model number that your debug mode link sends me to).

    My application must be put into System OFF mode via user interaction, and not after a reset.

    So do I call 

    NRF_POWER->RESET =1;

    and then 

    sd_power_system_off(); ?

    Thank you.

Children
Related