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

NRF52832 system on mode current consumption reduction

Hello NRF ,

I have used NRF52832 with BLE advertise and  peripherals connected on two different  I2Cs ( temp sensor and gyro sensor ), One SPI( LCD Display ) , three GPIO Interrupt and one PWM (buzzer ) .

I have used SYSTEM ON mode for sleep since my RTC Counter should be always running  which gives me my current time , hence I can not use SYSTEM OFF mode .

After measuring SYTEM ON mode current , it comes around 1.6mA  . How do I reduce this current consumption below 500uA ??

below is how I have called SYSTEM ON mode sleep ,

if(perform_sleep)

{

while(!wakeup_button)

{

if (NRF_LOG_PROCESS() == false )
{
nrf_pwr_mgmt_run();
}

}

}

where , wakeup button is and variable updated by gpio interrupt callback .

Note : I am also turning off ble advertisement before I call SYSTEM ON mode .

  • Ok, so it means that something in your application that is LCD related is not properly turned off. It was using I2C. Do you disable the I2C before going to sleep? If not try to do that. If you already have, and the current doesn't drop down to 1mA, then try setting the default pin configuration to your I2C pins after disabling the I2C. 

    Then keep doing the same for all the peripheral you have used for your hardware.

    Best regards,

    Edvin

  • Hello ,

    I tried disabling I2C via  nrf_drv_twi_disable(&m_twi_master); function but the current consumption is same . 

  • try setting the default pin configuration

    Do you mean to say that after disabling I2C , I have to configure those pins as normal GPIO ?

  • FYI , LCD is connected over SPI , other sensors are on I2C.

  • man said:
    FYI , LCD is connected over SPI , other sensors are on I2C.

     Thank you. I may mix some details from different cases here on devzone from time to time.

    I think you need to take a step back.

    1: Go back to before you added any of the sensors or the display. Is the current consumption as you expect? If not, figure out how to optimize it (BLE part) before moving on. If yes:

    2: Add one device (sensor or display). Is the current consumption as expected? If yes, move on to the next sensor/display.

    3: If no, disable the peripheral (I2C or SPI) before you go to "sleep mode". Is the current consumption as expected now? If no, please check that the GPIO registers for the pin that you use are set to default values: Disconnected Input (0x00000002). If they are not, perhaps the peripheral disable function doesn't do this, and you need to do this manually.

    4: If that doesn't work, please check if there are any erratas that are related to the peripherals that you are using and make sure the workarounds are applied.

    When following this guide, what device causes the issues, and what peripheral is it using? What pins? Are the pins disconnected inputs before you go to sleep?

Related