Idle power consumption in nrf5340 when Thread Enabled

I am trying to build an application for a custom board developed with nrf5340 module in which power consumption is a major dimension which we focus.
Currently in the idle period the device is consuming arounf 48uA current.

Our application has following features:

The network core child image is with BLE and Thread support. It also has button and led(over pwm) support. k_timer module provided by zephyr is used in the application for periodic activity.

RTC peripheral is enabled without any tick, capture compare property. Only counter is used for keeping track of time.

For the power consumption management
CONFIG_PM is activated.
Most of the peripherals that are not used are disabled in the device tree.

In order to avoid the power consumption through GPIO, GPIOTE is enabled(in Low power mode) and used for button press detection.

From the electrical specification of nrf5340 we have seen that in system ON and some peripheral enabled the power consumption can be reduced around 1uA

We performed some tests in between to analyze the issue.

Without any application if the thread network configurations are provided, in the idle period a consumption of 47uA is measured.

Following are the thread network configurations provided

CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_POSIX_NAMES=y
CONFIG_NET_SOCKETS_POLL_MAX=4
CONFIG_OPENTHREAD_NORDIC_LIBRARY_MASTER=y
CONFIG_NET_L2_OPENTHREAD=y
CONFIG_COAP_UTILS=y
CONFIG_MBEDTLS_SHA1_C=n
CONFIG_FPU=y
CONFIG_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED=y
CONFIG_OPENTHREAD_MTD=y
CONFIG_OPENTHREAD_MTD_SED=y
CONFIG_OPENTHREAD_POLL_PERIOD=6000
We are using ncs 2.2.0 version.
We like to have an ideal power consumption below 10uA. With following feature system ON, rtc enabled, GPIOTE enabled, Thread running. 
 
Parents
  • Hi  ,

    We were able to reduce this consumption to 8uA in the idle period by disabling the TFM Logging and GPIO. Nothing is changed in the configurations for thread network.

    If any one of the configuration is enabled the idle period consumption is ramped up to 40-50uA. The TFM logging is associated with the UART1. What can be the reason of this value?

    Currently in the idle period we are observing a current spike of 4mA at every 4 seconds interval. What can be the cause of this current spikes?

  • George said:
    If any one of the configuration is enabled the idle period consumption is ramped up to 40-50uA. The TFM logging is associated with the UART1. What can be the reason of this value?

    That could be due to the RX IDLE current for the UART peripheral

    George said:
    Currently in the idle period we are observing a current spike of 4mA at every 4 seconds interval. What can be the cause of this current spikes?

    Do you configure any timers in your application? 

    regards

    Jared

  • Do you configure any timers in your application?

    We are using the k_timer module provided by the kernel in the application, but it is not configured for 4 seconds. Will this module contribute the power consumption in idle period?

    Other than this RTC is also enabled. But ticks and other interrupts are disabled, only the counter value is used.

    That could be due to the RX IDLE current for the UART peripheral

    Just a doubt in this, even if we disabled the TFM logging, the current consumption was around 48uA, When GPIO is also disabled the reduction was observed. Is UART peripheral is initialized even if the TFM logging is disabled?

  • George said:

    We are using the k_timer module provided by the kernel in the application, but it is not configured for 4 seconds. Will this module contribute the power consumption in idle period?

    Other than this RTC is also enabled. But ticks and other interrupts are disabled, only the counter value is used.

    By timer I meant the calibration of the RC oscillator which is used by the timers. Can you try to change the calibration interval as suggested by my colleague Vidar here and see if correlates with the current plot? 

    George said:
    Just a doubt in this, even if we disabled the TFM logging, the current consumption was around 48uA, When GPIO is also disabled the reduction was observed. Is UART peripheral is initialized even if the TFM logging is disabled?

    Could be that some of the pins that used by the UART is not configured to default which can cause some of them to float causing excessive current. I'm not 100% sure on this, but a way to confirm it is to check the PIN_CNF register for each GPIO peripheral and confirm that every pin is configured to the default value of Input, Input buffer disconnected, no pull, standard drive and SENSE disabled. 

    regards

    Jared 

Reply
  • George said:

    We are using the k_timer module provided by the kernel in the application, but it is not configured for 4 seconds. Will this module contribute the power consumption in idle period?

    Other than this RTC is also enabled. But ticks and other interrupts are disabled, only the counter value is used.

    By timer I meant the calibration of the RC oscillator which is used by the timers. Can you try to change the calibration interval as suggested by my colleague Vidar here and see if correlates with the current plot? 

    George said:
    Just a doubt in this, even if we disabled the TFM logging, the current consumption was around 48uA, When GPIO is also disabled the reduction was observed. Is UART peripheral is initialized even if the TFM logging is disabled?

    Could be that some of the pins that used by the UART is not configured to default which can cause some of them to float causing excessive current. I'm not 100% sure on this, but a way to confirm it is to check the PIN_CNF register for each GPIO peripheral and confirm that every pin is configured to the default value of Input, Input buffer disconnected, no pull, standard drive and SENSE disabled. 

    regards

    Jared 

Children
No Data
Related