nRF52840DK+nRF7002EK, cannot enter low power unless build without nRF7002

I am trying to get a WiFi project working using the nRF52840DK and nRF7002EK. I use a 3.3V power source that is supplying power to both nRF's in parallel. For the nRF7002EK, I added pin header to P6 and supplied power there. I've confirmed the system works this way, as I was able to get the WiFi station project working (NCSv2.9.1, nrf/samples/wifi/sta).

I'm evaluating if it can sleep with a total current draw of <10uA. I am using the PPK2 as an ammeter to measure the current draw coming from the power source directly.

I have determined with a very simple project (NCS v2.9.1, zephyr/samples/boards/nordic/system_off) that the current draw can go as low as about 8.5uA after the sys_poweroff() call. I ensured that:

  • nRF52840DK SW6 was moved to "nRF ONLY" after flashing firmware
  • Shortly after sys_poweroff() is called, I unplugged power from nRF7002EK's P6.
    • This is fine, as we anticipate hardware later on that will similarly cut power to the nRF7002, to save power.
    • In other words, the total current draw is mostly, if not completely, coming from the nRF52.

I revisited my WiFi station project to try to replicate this, but with some small changes and typical power reductions like CONFIG_PM=y and CONFIG_SERIAL=n, I could only get it to draw around 12mA after sleeping. But then I tried removing the following and was able to get it to 8.5uA:

  • Remove CMake argument -DSHIELD="nrf7002ek"
  • Set CONFIG_WIFI_NRF70=n

Obviously the WiFi code won't work without the CMake argument and Kconfig flag, but it seems to point that the nRF52 is doing or waiting for something related to nRF7002. So my main question is - how I can save power like the system_off project shows, while still being able to use the nRF7002EK? Some other related questions include:

  • Is there an equivalent to the CMake argument and Kconfig flag, but that can be done dynamically in firmware? Something like "enabling nRF7002" with some function call, and a corresponding "disable" function I can call just before sys_poweroff()?

More info: I am using a Windows 11 machine, VS Code, & nRF Connect Extension. It was already mentioned earlier but we're also using nRF52840DK, nRF7002EK, and the PPK2.

Parents Reply
  • I've already tried most of these: CONFIG_PM=y and CONFIG_SERIAL=n (as mentioned in the original post), disabling several peripherals, CONFIG_NRF_WIFI_LOW_POWER=y, etc. but it did not dramatically cut back on the power draw. I also found this regarding nRF7002 in low power, and tried net_mgmt() with NET_REQUEST_WIFI_PS (as seen in NCS v2.9.1, nrf/samples/wifi/provisioning/softap) but it did not seem to have effect.

    Do also note that if the PPK2 is placed on nRF52840DK P22 (instead of at my 3.3V supply), it reports about 600uA. Again, I've already changed SW6 to be "nRF Only". So I'm not sure what could be drawing the extra 11.4mA.

    With my method of disconnecting power to nRF7002 when measuring current, wouldn't the nRF7002 (including the WiFi radio) be naturally turned off?

    Is there a way in firmware to disable the SPI peripheral being used for communication between the two nRF's?

Children
No Data
Related