9 years, 1 month ago.

nRF51822 Puck power consumption

What current draw should I expect for this? I am using virtually the default code and am getting 1.6 mA when advertising, and 1.5 mA when connected with a characteristic being notified once per second.

I'm using the Rigado BMD-200 nRF51822 module which doesn't have a 32 kHz crystal, so I've used the mbed target HRM1017 which also doesn't have a crystal (the nRF51822 mKit Evaluation Board does). However I have managed to get much lower power consumption in the past.

Any ideas what I'm doing wrong. Does ble.waitForEvent() sleep as much as possible?

The Answer!

Ok this took a *lot* of narrowing down, but I eventually found the answer is the logging functionality of Puck. Specifically this line:

#define LOG_LEVEL_INFO

If you comment it out the current consumption goes from 1.4 mA down to 20 uA. I guess this is because it keeps the serial UART peripheral powered if don't.

PLEASE can you add a comment to that line in all your examples noting this? Hopefully it will save other people frustration!

Question relating to:

/ Puck Featured
A library for easier setup and prototyping of IoT devices (pucks), by collecting everything that is common for all pucks in one place. BLE, bluetooth, nRF51822

2 Answers

9 years, 1 month ago.

Hi Tim, I'm one of the authors. Thanks for the feedback!

I've now added warnings in both example_puck_ble and log.h in the puck library in regard to the power usage of serial logging.

Accepted Answer

Thanks!

posted by Tim H 10 Mar 2015
9 years, 1 month ago.

could the connection interval be too short?

ble.waitForEvent() is a very light-weight entry into ARM's WFE instructionwhich simply sleeps waiting for system events.

https://developer.mbed.org/teams/Bluetooth-Low-Energy/wiki/Managing-Power-on-mbed-BLE

I don't think it is a BLE issue actually. I added `for (;;) WFE();` to the start of my main() and I still get 1.4 mA consumption. I suspect a timer is started before we even get to main(). I shall take a look at the startup_nrf51822.c code.

posted by Tim H 09 Mar 2015

I found the answer (see edited question; seems you can't answer your own questions for some reason?)

posted by Tim H 09 Mar 2015