NRF54L10 takes too much current

Hi everyone,

I'm working on a project using the nRF54 and Zephyr RTOS. Previously, I implemented almost identical functionality on an nRF52, where the device consumed around 3.5 µA while waiting for an input change (GPIO_INT_LEVEL_ACTIVE). I changed to nrf54, and I hopped current will be less. 

Now, with mostly the same code base and doing nothing more, the current consumption sits at magical 150 µA

CONFIG_PM_DEVICE=y
CONFIG_PM_POLICY_DEFAULT=y
CONFIG_PM=y
CONFIG_PM_DEVICE=y
CONFIG_PM_DEVICE_RUNTIME=y

Here is what I've tried so far to debug this:

  • I've experimented with various configuration options (prj.conf).

  • I even tried blocking the execution right at the beginning of main() using a semaphore to ensure no application logic is running.

Despite this, the power consumption is always ....150 µA.

Has anyone encountered similar power management issues on the nRF54 with Zephyr, or are there specific Kconfig options/peripherals I should look into to debug this leak?

Thanks in advance!

Parents Reply Children
  • Main() is simplified to: 

    int main(void)
    {
    uint32_t events;
         while (1)
        {
            k_sem_take(&main_sem, K_FOREVER);
        }
    }

    Currently, after many changes I am working with this config. where base board is nrf54L15DK/nrf54L10 cpuapp with some overlay changes

    CONFIG_PICOLIBC=y
    CONFIG_TICKLESS_KERNEL=y
    CONFIG_MAIN_STACK_SIZE=4096
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    CONFIG_PRINTK=y

    CONFIG_CONSOLE=n
    CONFIG_DEBUG=n
    CONFIG_USE_SEGGER_RTT=n
    CONFIG_RTT_CONSOLE=n

    CONFIG_SERIAL=n
    CONFIG_UART_CONSOLE=n
    CONFIG_LOG=n
    CONFIG_SHELL=n

    CONFIG_DK_LIBRARY=n
    CONFIG_GPIO=y
    CONFIG_ADC=y
    CONFIG_NRFX_GRTC=y
    CONFIG_PWM=y
    CONFIG_PM_DEVICE=y
    CONFIG_PM=y
    CONFIG_PM_DEVICE_RUNTIME=y

    CONFIG_HEAP_MEM_POOL_SIZE=0

    CONFIG_CRC=y

    CONFIG_WATCHDOG=y

    CONFIG_FLASH=y
    CONFIG_ZMS=y
    CONFIG_FLASH_MAP=y
    CONFIG_SOC_FLASH_NRF_RRAM=y
    CONFIG_FLASH_PAGE_LAYOUT=y

    CONFIG_BT=y
    CONFIG_BT_HCI=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_GATT_CLIENT=y
    CONFIG_BT_NUS=y
    CONFIG_BT_OBSERVER=y

    CONFIG_BT_MAX_CONN=1

    CONFIG_BT_DEVICE_NAME_DYNAMIC=y
    CONFIG_BT_DEVICE_NAME_MAX=32
    CONFIG_BT_RX_STACK_SIZE=2048

    CONFIG_REGULATOR=y
    CONFIG_BT_CTLR_TX_PWR_ANTENNA=-4
    CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y

    CONFIG_BT_EXT_ADV=y
    CONFIG_BT_EXT_ADV_MAX_ADV_SET=1
    CONFIG_BT_CTLR_ADV_EXT=y

    CONFIG_BT_USER_DATA_LEN_UPDATE=y
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251

    CONFIG_BT_L2CAP_TX_MTU=513
    CONFIG_BT_BUF_ACL_RX_SIZE=517
    CONFIG_BT_BUF_ACL_TX_SIZE=517
    CONFIG_BT_BUF_ACL_TX_COUNT=6
    CONFIG_BT_USER_DATA_LEN_UPDATE=y

    CONFIG_HWINFO=y

    The only suspicion is that a floating pin somewhere is drawing current. But 150us? 

    And the same current results I saw when dk nrf 54L15 board was used.

Related