NRF9160 in sleep mode over 1 mA current consumption

Hello Nordic,

we want to use the nrf9160 to measure some stuff and send data to a server while being battery powered. Therefore we need the lowest power consumption possible.

To get straight into the problem:I flashed it (via Bootloader) with a bare minimum of code to check and understand the current consumption, but eventough everything is deactived (especially Uart, which seem to be a common problem) it consumes about 1.27 mA. The nrf9160 is mounted on the Actinius Icarus board, nothing more connected to it.

Now you might think, the problem is the Icarus board. But if I set

NRF_REGULATORS->SYSTEMOFF = 1;
... the current will drop to 33 uA (This is still unexpected high, but the Icarus board features some devices which might be the reason for it)

So the question is, why does it consume so much power when being in idle mode?

main.c

#include <zephyr.h>
#include <sys/printk.h>

void main(void)
{
	k_sleep(K_SECONDS(20));
	NRF_REGULATORS->SYSTEMOFF = 1;
}

proj.conf

CONFIG_GPIO=n
CONFIG_LOG=n
CONFIG_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_RTT_CONSOLE=n
CONFIG_USE_SEGGER_RTT=n
CONFIG_LOG_BACKEND_RTT=n
CONFIG_SERIAL=n
CONFIG_AT_HOST_LIBRARY=n
CONFIG_STDOUT_CONSOLE=n

# Zephyr Device Power Management
CONFIG_DEVICE_POWER_MANAGEMENT=y
CONFIG_PM=y

# Modem 
CONFIG_NRF_MODEM_LIB=y

#Boot
CONFIG_BOOTLOADER_MCUBOOT=y

also in the overlay file I set almost everything to deactivated:

&adc {
	status ="disabled";
};

&gpiote {
	status = "disabled";
};

&gpio0 {
	status = "disabled";
};

&uart0 {
    status = "disabled";   
};

&uart1 {
    status = "disabled";   
};

&uart2 {
    status = "disabled";   
};
&spi3 {
    status = "disabled";    
};

&i2c2 {
    status = "disabled";   
};

&timer0 {
	status = "disabled";   
};

&timer1 {
	status = "disabled";   
};

&timer2 {
	status = "disabled";   
};

&pwm0 {
    status = "disabled";   
};

Thanks for your help, I really appreciate it Slight smile

Moritz

Parents Reply
  • Hello,

    I received a board with version B2 on it. I updated the modem firmware via the "fmfu_smp_svr" example to v1.3.2, additonally I updated the nrf sdk to v2.0.2.

    When in idle mode, with or without lte_lc_power_off(), it draws around 700 uA, which is much better, but still high.

    I set CONFIG_SERIAL=n in proj.conf to disable the UART Module. Current is still at 700 uA and serial terminal only shows spm startup, which tells me some part of Serial is already disabled, but not everything.

    I found that in \build\spm\zephyr\.config CONFIG_SERIAL is still set to "y" (I guess thats why it prints spm startup). In this thread they try to disable it. According to it, I added a file under \child_image\spm\proj.conf:

    CONFIG_IS_SPM=y
    CONFIG_FW_INFO=y
    CONFIG_GPIO=y
    CONFIG_SERIAL=n

    But it wont build and give the following error:

    warning: UART_CONSOLE (defined at drivers/console/Kconfig:43) was assigned the value 'y' but got the
    value 'n'. Check these unsatisfied dependencies: CONSOLE (=n). See
    http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_UART_CONSOLE and/or look up UART_CONSOLE in
    the menuconfig/guiconfig interface.

    Can you help me how to disable the serial module properly? What is missing?

    Thank you very much!

    Moritz

Children
Related