I am developing a simple BLE node with an I2C sensor on it. Basically I just need to send over BLE the measurements made by that I2C sensor every minute or so. Fortunately, I managed to make it work using the arduino nano 33 BLE board (which is based on a nRF52840), and everything seemed fine until I started to measure current consumption.
The problem I am facing is that the system draws 1.13 mA when I set all BLE configurations and start advertising, and 0.85 mA as soon as I end the BLE process. I know it is not too much, but honestly, I was expecting to get significant lower readings. At first, I suppoused the sensor was the responsible for draining such ammount of current, but when I removed it, I kept having the same 1.13 mA measure.
That is when I decided to go directly to the arduino page to look for a solution, but instead of it, I found that there are a lot of users having this same problem. Unfortunately, the only solution that is available right now is this shutdown command.
NRF_POWER->SYSTEMOFF = 1;
Finally, I decided to sneak into the C files available at the arduino board core, and found that the mbed OS arduino uses has some interesting files on a folder named nRF_SDK_15. So my thoughts are, is there a way to reduce the current consumption I am having by shutting down some non-escencial registers, watchdogs and timers using those NRF_POWER commands?Thanks in advance,
Do you know if the UARTE interface may be enabled in your project? Maybe it's used for logging? This is one of the peripherals that has to remain active in idle mode and thus increases idle current (usually around ~1mA). The total current would have been much higher if the chip didn't enter sleep at all. Most peripherals such as TWI powers down automatically.
Note that you can use our online power profiler to find the expected current consumption for a given configuration: https://devzone.nordicsemi.com/nordic/power/w/opp