This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Low power on the nRF9160

Hi, 

I recently designed a prototyping board featuring the nRF9160, which we got made for a couple of reasons. 

  • To have multiple boards to test with
  • Potential to have multiple engineers working with them
  • Long term testing of potential products
  • To see if our production equipment could successfully populate such a small device. 

The good news is, we successfully managed to populate a panel, and all 8 of the PCBs are are programmable. No short circuits between pins on the device that can be seen under a microscope. As its an LGA component, there is a chance that there could be shorts underneath the board, but we do not own x-ray inspection equipment to be able to see this. 

The main idea for our prototype board is a datalogger, that sends data periodically over LTE networks using MQTT, so low power is an absolute must. I noticed when using our current code we  see constant currents of around 3mA at its lowest, even when its in Power Saving Mode (PSM). So I looked into this a bit more thoroughly.  

I saw this question posted below, and tried to recreate his code, following an example through a link he posted. I also tried multiple different things with the GPIO configuration - ended up making them all high-z. 

https://devzone.nordicsemi.com/f/nordic-q-a/63745/lowering-the-power-consumption-of-nrf9160-mqtt_simple-ncs-1-3-0

Even when running this code, I was seeing about 2.7mA constant current. So around 500x more than expected. 

Ok, so now I thought I must've messed up something on the design, so I take off the 3V regulator circled in the schematic, and removed the pullup resistors on the SDA/SCL lines, so  the only thing being powered is the nRF9160. I now get 2.61mA

Is there something fundamentally wrong with my schematic to get into a low power idle state? Could the reserved pins underneath the package cause a high constant current if shorted together somewhere? Is the code missing anything to be in low power?

Schematic and code below

/*
 * Copyright (c) 2018 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic
 */

#include <zephyr.h>
#include <stdio.h>
#include <drivers/uart.h>
#include <string.h>
#include "hal/nrf_gpio.h"

/**@brief Recoverable BSD library error. */
void bsd_recoverable_error_handler(uint32_t err)
{
	printk("bsdlib recoverable error: %u\n", err);
}

void main(void)
{	
	for(int i=0;i<32;i++){
		nrf_gpio_cfg_input( i, NRF_GPIO_PIN_NOPULL);
	}

	NRF_UARTE0->ENABLE = 0;
    NRF_UARTE1->ENABLE = 0;
    
	k_sleep(K_SECONDS(6));

	k_cpu_idle();
}

Thanks, 

Damien

  • Hi Jonathan, 

    I have tried this code and get around 600uA. Now if I remove this resistor R8 (image), it drops to 96uA, and if I remove the 3V supply, it gets down to 5-6uA.

    The extra current when the 3V supply is present, I can kind of understand. I'm using P-Channel FETS, so I assume in system-off mode they will be in an ON state, and even when nothing is connected to the output there could still be some loss. 

    Thanks, 

    Damien

  • I still think the 600uA is unusually high. So from what yo describe there seems to be something on the 3V line that is causing a unusaly high current draw. Was thinking that the op-amp might contribute to the draw and the active gps, but that still does not account for the high value i think. 

    What state is the GPIO that is driving your fets... see you tried making all high z. 

    Do you have a nrf52 or som other chip on the pcb also? where does RESET line go? 

    the op-amp is also driven by 3V but if on it has a max uA of 230uA in worst case, from what i can see in datasheet. What is the battery supply voltage?

    I will ponder on this and get back to you. 

    Regards,
    Jonathan

  • Yes I agree 600uA does seem excessive. Although I think there may have been a short under the 10k resistor R8, as it reduced to 96uA when I removed it. I just replaced it to confirm it was still 600uA and it stayed at 96uA, so that's a positive start. 

    What state is the GPIO that is driving your fets... see you tried making all high z. 

     The GPIOs are reading 3V as they are pulled up externally. Not sure how I should be configuring them tbh. If I use the code you posted which doesn't configure them, I get 96uA. If I configure them as hi-z its about 130uA.

    Do you have a nrf52 or som other chip on the pcb also? where does RESET line go? 

    No, the RESET net goes to the JTAG header and nRESET net goes to the nRF9160 nRESET pin through a 1K resistor and 100uF capacitor. The whole schematic is attached on the OP. 

    The op-amp is a direct copy from another design, so I doubt its an inherent design flaw there. I checked the shutdown pin was low and it is. 

    The board is currently using a 3.6V supply.

    Thanks,

    Damien

  • DamoL said:
    I get 96uA

    I am a bit interested in this number.... i have seen on rear ocations that a DK can show values close to 90uA.. i have seen around 70-80uA after flashing the file one some devices. But after wiping the device and power cycle, then flash and power cycle the consumption has gone down to normal levels. 

    What modem firmware are you using?


    Regards,
    Jonathan

  • Hi Jonathan, 

    Apologies, been a busy week. Modem FW I believe is 1.3.1. 

    If the GPIOs are pulled up externally, how should the pins be set up in the program?

    Thanks, 

    Damien

Related