System on high current when wifi is disconnected

Hi,

We are evaluating NRF5340+NRF7002 setup for our customer. We are currently using https client example(sdk v3.0.2) and we would like to benchmark current consumption of the individual chips.I have set up the PPK2s as explained in your technical documentation.

We would like the application to run in a loop where it wakes up and posts some data over https and goes back to sleep. It is not possible at the moment to wakeup periodically from system off state as there is no wakeup option to achieve this without external component. Hence we would like to remain in system on state and try to achieve as low power consumption as possible when device is in sleep. We noticed that bringing up the net interface takes a long time due to a known bug as posted here ->NRF7002DK boot up time - Nordic Q&A - Nordic DevZone - Nordic DevZone. Hence we are avoiding calls to conn_mgr_all_if_up and conn_mgr_all_if_down within the loop. The loop now just establishes connection before http request and then disconnects. This puts the nrf7002 in relatively low power state (average ~16uA). But we noticed that nrf5340 still consumes around ~200uA constant current. On digging deeper it looks like the BUCKEN and IOVDD pins are the reason for this. These are needed to keep nrf7002 powered on and are only disabled when conn_mgr_all_if_down is called. If powered down I believe nrf7002 loses all context and need to be reinitialized. Without powering down nrf7002(using these pins) it looks like it is not possible at the moment to reduce current consumption on host MCU below ~200uA. 

Could you please let me know if there is a way to achieve low power consumption (~1-10uA) in system ON keeping nrf7002 chip on and how this can be done? Else are there any other alternative approaches?

Best Regards,

Arjun

Parents
  • Hi,

     

    If you keep the nRF7002 powered, the lowest sleep current is Isleep, ie. 15 uA:

    https://docs.nordicsemi.com/bundle/ps_nrf7002/page/chapters/elspec/doc/electrical_specification.html 

    We would like the application to run in a loop where it wakes up and posts some data over https and goes back to sleep. It is not possible at the moment to wakeup periodically from system off state as there is no wakeup option to achieve this without external component. Hence we would like to remain in system on state and try to achieve as low power consumption as possible when device is in sleep.

    You can use the nRF5340 to power on/off the nRF7002 dynamically, as shown in this example:

    https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/wifi/shutdown/README.html

     

    This will require a full re-connect of your wifi-connection, and thus any other on-going udp/tcp socket operation.

     

    We noticed that bringing up the net interface takes a long time due to a known bug as posted here ->NRF7002DK boot up time - Nordic Q&A - Nordic DevZone - Nordic DevZone.

    Yes, this is unfortunately a known issue at this time. It is the crypto required that takes such a long time. This is being looked into internally.

    Without powering down nrf7002(using these pins) it looks like it is not possible at the moment to reduce current consumption on host MCU below ~200uA. 

    Could you please let me know if there is a way to achieve low power consumption (~1-10uA) in system ON keeping nrf7002 chip on and how this can be done? Else are there any other alternative approaches?

    Is this a custom design? Is your IOVDD voltage 3V ?

    If so, you will notice the side-effects of this erratum: https://docs.nordicsemi.com/bundle/errata_nRF7002_Rev1/page/ERR/nRF7002/Rev1/latest/anomaly_002_9.html#anomaly_002_9

     

    If IOVDD is low (ie. < 2.0V):

    Is CONFIG_SERIAL disabled on both application core and network core?

    Since you also mention TFM, have you disabled TFM logging as well?

     

    Kind regards,

    Håkon

  • Hi,

    Thank you for the quick response.

    It's not a custom design. We are using nrf7002dk.

    I believe IOVDD is 1.8V as nrf5340 is also powered with 1.8V.

    Yes, the console has been fully disabled in the example. I notice that one would have to call conn_mgr_all_if_down inorder to achieve low current consumption host MCU(~5uA). In disconnected state the MCU otherwise consumers ~200uA.

    Best Regards,

    Arjun

  • Hi Arjun,

     

    Q1: Could you try to run wifi/sta, compiled for board "nrf7002dk/nrf5340/cpuapp" with the configuration that I suggested to see if this yields expected results?

    Q2: Which revision of the nRF7002-DK do you have?

    Q3: There is a statical current in your measurements, ie. the current is flat at around 300 uA, indicating a resistive load.

    Have you altered the external flash connection? Ie. Have you tried cutting SB8 and soldering SB10 to connect the ext flash to the VDDMEAS net?

    https://docs.nordicsemi.com/bundle/ug_nrf7002_dk/page/UG/nrf7002_DK/solder_bridge.html

     

    Kind regards,

    Håkon

  • Hi Hakon,

    Thanks for the feedback and sorry for the late reply.

    Q1: Yes, we also tried your modification to the wifi/sta example. You can see the results below. The base current still is above ~300uA. As you can see when the nrf7002 is in DTIM PS mode I expected that the host MCU not consume high current. This can also be tested by putting the wifi IC in twt mode. In twt mode the IC has target wakeup time. During this time host MCU pretty much will have nothing to do and yet we see base current of 300uA.

    Q2: We are using PCA10143, 1.0.2, 2023.25 . This is what it says on the label of the DK

    Q3: We have done no other modification to the dev kit except closing SB17 and cutting SB16. This is as recommended for dual current measurement setup.

    Best Regards,

    Arjun

  • Hi Arjun,

     

    I tested the same version as you, and I can confirm that I see similar results (around 360 uA):

     

    I think there are two problems here:

    1. GPIOTE IN channel used for HOST_IRQ

    2. QSPI IO1 (MISO line) and IO3 looks to be idle high.

     

    The first is forced by using GPIOTE PORT event for wakeup/IRQ. Second is fixed by setting the two pins to floating (ie. expected driven by nRF7002)

     

    Could you try the following overlay?

    &pinctrl {
    	qspi_test: qspi_test {
    		group1 {
    			psels = <NRF_PSEL(QSPI_SCK, 0, 17)>, 
    					<NRF_PSEL(QSPI_IO2, 0, 15)>;
    			bias-pull-down;
    		};
    		group2 {
    			psels = <NRF_PSEL(QSPI_CSN, 0, 18)>,
    					<NRF_PSEL(QSPI_IO0, 0, 13)>;
    			bias-pull-up;
    		};
    		group3 {
    			psels = <NRF_PSEL(QSPI_IO1, 0, 14)>,
    					<NRF_PSEL(QSPI_IO3, 0, 16)>;
    		};
    	};
    };
    
    &gpio0 {
        sense-edge-mask = <(1 << 23)>;
    };
    
    &qspi {
    	status = "okay";
    	pinctrl-0 = <&qspi_test>;
    	pinctrl-1 = <&qspi_sleep>;
    	pinctrl-names = "default", "sleep";
    };

     

    I used wifi/sta sample, with these added configs:

    CONFIG_LOG=n
    CONFIG_PINCTRL=y
    CONFIG_NET_LOG=n
    CONFIG_CONSOLE=n
    CONFIG_SERIAL=n
    CONFIG_DEBUG_COREDUMP=n
    CONFIG_DEBUG_COREDUMP_BACKEND_LOGGING=n
    CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=n

     

    After these I see approx 24 uA in the sleep events:

      

    Could you check if this helps on your end as well? Please note that setting "sense-edge-mask" is for debugging purposes, as this is a lesser accuracy mode.

     

    Kind regards,

    Håkon

  • Hi Hakon,

    Thats it! I can reproduce the current consumption here as well. Thanks a lot. Much appreciated.

    BR,

    Arjun

  • Hi Arjun,

     

    I am very glad to hear that you also see similar results now. I will take this up internally with the wifi team to address this pinctrl configuration.

     

    Kind regards,

    Håkon

Reply Children
No Data
Related