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
  • It is super basic. I attached pictures of two configurations I tried. The battery configuration seems to be the most efficient. When powering through the 5V port is seems to have a much higher Regulators_systemoff current, thats why I always took the battery configuration.

    I am using a standard multimeter (Voltcraft VC185), it can measure down to 0,1 uA.

    The fact that I can bring down the current to 33uA in battery configuration via software tells me, that there might be still a problem in software. But I am open for all ideas :)

Children
  • Hello,

    The nRf9160 mounted on the board is seen in this picture is revision B0. This is old and will not work with the newer modem FW and SDK. There is difference how the modem is turned on and off between the B0 and the newest B1 version. You can get a newer version if your board has the B0 one.

    Looking at the datasheet I think you can try to use VBAT as measurement place not USB.  

    You can see USB is connected to FTDI chip, so its better not to power up that. 

    Thanks.

    Best Regards,

    Kazi Afroza Sultana

  • That is a good hint! Thanks for spotting it. I indeed have a B0 version, the new version will arrive soon.

    Nevertheless, I think the current is too high, even for the first version and also we dont want to throw the old version.

    Which FW and SDK do you recommend for B0?

    And how can I control the modem in version B0?

    I will focus on measuring current through VBAT now.

    Best regards,

    Moritz

  • Hello,

    You can check the compatibility matrix here (https://infocenter.nordicsemi.com/topic/comp_matrix_nrf9160/COMP/nrf9160/nrf9160_modem_fw.html?cp=2_0_3_5 ). Any MFW v1.2.x (or older) must be used with B0 devices. 

    You can find this from changelog also from download page (Compatible Downloads - nordicsemi.com) for each version of modem FW. For example: MFW 1.3.2 can be used for nRF9160 revision 1, but only for testing and development. 

    Thanks.

    Best Regards,

    Kazi Afroza Sultana

  • 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

  • Hello Moritz,

    It shows warning; so there should not be problem in building. Can you please send us the entire build log and also if possible the project file so we can look at and reproduce the issue from our side as well?

    Thanks.

    Best Regards,

    Kazi Afroza Sultana

Related