Hello everyone,
I'm currently developing a custom firmware for the Nrf52840 usb dongle (https://www.mouser.de/new/nordic-semiconductor/nordic-nrf52840-usb-dongle).
The custom firmware is written completely from scratch in Rust, if needed I can provide all the code.
I am currently trying to optimize the power consumption when the board should be idle.
Information regarding the setup:
- The board is powered using the vbus and ground connectors using a 5V power source (battery based)
- I am measuring the current using a Multimeter, according to my tests (using the 5V power source and some high resistance resistors) it is sufficiently precise
- Except GND and VBUS no other pin is connected to the nrf52840 usb dongle.
When I started measuring the idle (power on, full ram powered, rtc running on lfclk, dcdc enabled) power consumption I was surprised to see about 25 uA, which is not terrible, but according to the documentation something in the range of 2 - 3 uA should be possible.
To rule out enabling any peripherals by accident I went ahead and placed the following code at the start of the firmware (rust, but I'm sure everyone here will understand it):
loop { unsafe { core::arch::asm! { "wfe" } }; }
With this my understanding is, that:
- Immediatly after reset the cpu will enter idle mode
- No peripherals are ever accessed
- If I didn't miss anything in the documentation no peripheral should by default be enabled
Sadly the high power consumption of about 25 uA still remains.
Is there anything I actively have to disable to achieve a lower power consumption?
Any help is much appreciated
Edit:
I also found this post (https://devzone.nordicsemi.com/f/nordic-q-a/1657/how-to-minimize-current-consumption-for-ble-application-on-nrf51822#reply-5187), but I don't think any of the troubleshooting steps apply in my scenario?