nRF7002dk nrf5340 Power Consumption

We are currently testing the nRF7002dk with Zephyr 2.3.0. We have a application that sets up BLE and then sleeps forever in the main thread.

On our development board, we have shorted SB17 to allow us to measure the power consumed by the nrf5340 using P22.

 If I disable logging and other peripherals (SPI, I2C), I have found that if I compile and run the code with 

CONFIG_WIFI=n
CONFIG_WIFI_NRF700X=n
The idle power consumption between BLE advertisements is around 10uA. If I change the options in my prj.conf to
CONFIG_WIFI=y
CONFIG_WIFI_NRF700X=y
The idle power consumption measured at P22 between BLE advertisements increases to 1.7mA. 
To reproduce the issue, build the peripheral_lbs sample for the nrf7002dk_nrf5340_cpuapp board. The idle power consumption will be ~10uA. Then add 
CONFIG_WIFI=y
CONFIG_WIFI_NRF700X=y
CONFIG_NETWORKING=y
CONFIG_NEWLIB_LIBC=y
to prj.conf and the idle power consumption will be almost 2mA.
 
How do I achieve <1mA combined idle power consumption with the nRF7002dk?
Parents Reply Children
  • Hello,

    Today, I started from the wifi/sta sample in the latest main branch. I disabled the console and serial logging. In the code, immediately following a successful connection, I added a call to the wifi_disconnect function that I posted above as well as a call to the net_if_down function as you recommended. I did not enable any Bluetooth functions for this test.

    After connecting, disconnecting and shutting down the interface I see 165uA of current draw at 1.8v from the nrf5340.

    At this point the nrf5340 should be completely idle, the code "running" in the main loop is a k_sleep(K_FOREVER). 

    In non-WiFi tests of the nrf5340, the idle power consumption is significantly lower. Why is it so high when WiFi support is compiled in? Is there anything I can manually turn off to reduce power consumption which is turned on by the WiFi driver?

  • I was able to determine what causes the increased power consumption using Ozone and the lbs_peripheral sample with and without the WiFi constants included in the build.

    The nrf7002 driver configures the following registers:

    NRF_GPIOTE0_S->INTENSET
    NRF_GPIOTE0_S->INTENCLR
    NRF_GPIOTE0_S->CONFIG[7]

    If I read them without the WiFi driver compiled in, their values are:

    NRF_GPIOTE0_S->INTENSET = 0x80000000;
    NRF_GPIOTE0_S->INTENCLR = 0x80000080;
    NRF_GPIOTE0_S->CONFIG[7] = 0x00000000; 

    If I enable WiFi support, and do nothing else in the lbs_peripheral sample, the idle current draw is ~165uA. If I set the registers as specified above, the idle current draw is ~40mA, which is what I measure when not enabling WiFi support.

    Obviously these registers need set when using WiFi, but I suspect the nrf7002 driver should reset these registers when the interface is shut down.

  • Hi,

    I have forwarded this to the developers, and I am waiting on a response from them. I will update you as soon as I know  more.

    Best regards,
    Marte

  • Hi,

    The nRF7002 does not directly configure NRF_GPIOTE0_S, but it might be an indirect dependency.

    Can you try with this https://github.com/nrfconnect/sdk-nrf/pull/12744? This disconnects the Wi-Fi GPIOs when the Wi-Fi interface is shut down.

    Best regards,
    Marte

  • Hello,

    I noticed this change had been merged into main, so I rebased and re-tested my project. I am happy to report that with this commit, the power consumption issues we have been experiencing appear to have been resolved. Thank you for you help with this issue. 

    Once we have a stable NCS release with these changes included, we should be able to consider this issue resolved.

Related