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

nRF9160 custom board power consumption

Hello!

I am trying to lower the sleep current of our custom board. Right now in sleep, the whole system have a current consumption of 100uA. There might be component choices affecting this also so it's not really good for comparison.

  • If I sleep directly after boot, we get 100uA.
  • If I disable init of bsdlib, this number goes down to 70uA.
  • If I just disable socket offload I get the same result.
  • If I use bsd_shutdown it will consume a couple of mA during sleep.

Do you have any ideas of what might help us lower it? Anything would be helpful :)

The nrf9160 chip uses mcuboot+spm+app. We use i2c and logging (to flash), but current consumption is barely affected by disabling these.

SDK: v1.0.0
Modem FW: 1.0.1

Some of our prj.conf:

# General config
CONFIG_NEWLIB_LIBC=y
CONFIG_TEST_RANDOM_GENERATOR=y
CONFIG_ASSERT=n
CONFIG_REBOOT=y
CONFIG_SENSOR=y
CONFIG_DEBUG=n
CONFIG_USE_SEGGER_RTT=n
CONFIG_SEGGER_SYSTEMVIEW=n

# Heap and stacks
CONFIG_HEAP_MEM_POOL_SIZE=16384
CONFIG_MAIN_STACK_SIZE=8192
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
CONFIG_MAIN_THREAD_PRIORITY=7
CONFIG_LOG_PROCESS_THREAD_STACK_SIZE=2048

# BSD library
CONFIG_BSD_LIBRARY=y
CONFIG_BSD_LIBRARY_TRACE_ENABLED=n

# Network
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_OFFLOAD=y
CONFIG_NET_SOCKETS_POSIX_NAMES=y

# AT Host
CONFIG_AT_HOST_LIBRARY=n
CONFIG_UART_0_INTERRUPT_DRIVEN=n

CONFIG_SRAM_SIZE=128

# COAP configuration
CONFIG_COAP=y

# Disable native network stack to save some memory
CONFIG_NET_IPV4=n
CONFIG_NET_IPV6=n
CONFIG_NET_UDP=n
CONFIG_NET_TCP=n

# Enable flash operations.
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_FLASH_LOAD_SIZE=0

# Flash circular buffer
CONFIG_FCB=y

# Console
CONFIG_CONSOLE_SUBSYS=n
CONFIG_CONSOLE_HANDLER=n
CONFIG_CONSOLE_GETCHAR=n

CONFIG_CONSOLE=n
CONFIG_STDOUT_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_PRINTK=y
CONFIG_SERIAL=n

Thanks alot in advance

Joakim

Parents
  • Hi,

    Is 100uA the average current, or static base-line current? How are you measuring it?

    Do you have any timers running, that is waking up the CPU ?

    Do you have CONFIG_SERIAL=n for SPM and MCUboot also ?

  • Hi, Sigurd. Thanks for the answer Slight smile

    100uA is for the whole system, measuring from power supply. It is me looking at the multimeter and see it not change, so I guess it is the static base-line current. :) 

    As I said, there are other components and they are most likely responsible for 60-70uA. We will soon make some changes to confirm this. As we can lower the consumption by around 30uA if we disable bsdlib, I believe that is the main problem. After I made the first post I found some info that the SIM-card could be responsible for a current draw of around 30uA. Wouldn't that make sense if power consumption is improved when we disable bsdlib?

    As I understand it, using PSM would shut down the SIM? I tried to use this but it didn't have any effect.
    (Tested RPTAU=10mins, RAT=1min and RPTAU=31hours, RAT=1min)
    However, after sending a message and before going to sleep, we set AT+CGATT=0, AT+CFUN=4, AT+CFUN=0. If that can somehow affect anything.

    Is there any other way to shut the SIM down to see if that is the culprit? I couldn't find any AT-command for it, but perhaps I am stupid.

    To answer your other questions, there shouldn't be any timers. At least not any that I am aware of. And CONFIG_SERIAL=n should also be set for SPM and MCUboot.

    Thanks again!

  • Hi,

    Wouldn't that make sense if power consumption is improved when we disable bsdlib?

    Yes, the 30uA you see is the sim-card current. (It's initialized as part of bsd_init ).

    As I understand it, using PSM would shut down the SIM? I

    Correct. Note that cheap SIM cards may have longer minimum shut down time, or in some cases not allow for shutdown at all.

    I tried to use this but it didn't have any effect.

    You might not be able to enter PSM mode with the iBasis card. Be aware that some carriers put limitations on use of IoT features with roaming SIM cards. Power Saving Mode (PSM) is a feature that is not always available with roaming cards. In that case, you would need to order an IoT SIM from your local carrier.

    Use  +CEREG with level 5, to see if you are able to enter PSM or not. Alternatively %XMONITOR

    Is there any other way to shut the SIM down to see if that is the culprit?

    No. AFAIK 3GPP only allows you to shutdown in PSM and eDRX(not supported by all sim-cards). But again, the culprit for the 30 uA is the SIM card.

    If I use bsd_shutdown it will consume a couple of mA during sleep.

    See this sample on how to use system off mode.

Reply
  • Hi,

    Wouldn't that make sense if power consumption is improved when we disable bsdlib?

    Yes, the 30uA you see is the sim-card current. (It's initialized as part of bsd_init ).

    As I understand it, using PSM would shut down the SIM? I

    Correct. Note that cheap SIM cards may have longer minimum shut down time, or in some cases not allow for shutdown at all.

    I tried to use this but it didn't have any effect.

    You might not be able to enter PSM mode with the iBasis card. Be aware that some carriers put limitations on use of IoT features with roaming SIM cards. Power Saving Mode (PSM) is a feature that is not always available with roaming cards. In that case, you would need to order an IoT SIM from your local carrier.

    Use  +CEREG with level 5, to see if you are able to enter PSM or not. Alternatively %XMONITOR

    Is there any other way to shut the SIM down to see if that is the culprit?

    No. AFAIK 3GPP only allows you to shutdown in PSM and eDRX(not supported by all sim-cards). But again, the culprit for the 30 uA is the SIM card.

    If I use bsd_shutdown it will consume a couple of mA during sleep.

    See this sample on how to use system off mode.

Children
No Data
Related