I have a PCB with an nRf51822 @1.8V, using the SDK 10 (no chance to change it).
The PCB itself with everything but the nRF (we did not iron it on purpose to measure consumption) draws ~14µA.
The full PCB with the nRF in "low power" draws ~640µA, so the nRf is using ~526 µA.
The code does the following:
// Initializes the softdevice.
softdevice_init();
NRF_UART0->ENABLE = 0;
NRF_SPIS1->ENABLE = 0;
NRF_SPI0->ENABLE = 0;
NRF_SPI1->ENABLE = 0;
NRF_TWI0->ENABLE=0;
NRF_TWI1->ENABLE=0;
NRF_ADC->ENABLE = 0;
NRF_QDEC->ENABLE = 0;
NRF_LPCOMP->ENABLE = 0;
NRF_CLOCK->TASKS_HFCLKSTOP = 1;
do
{
sd_app_evt_wait();
// Process the event.
do
{
retval = mcutask_run();
} while(retval == NRF_SUCCESS);
nrf_gpio_pin_toggle(18);
} while(1);
I am using the internal RC for the LFCLK, but even using the external crystal will only decrese the amount on ~10µA.
I can also do the same without using the softdevice and issuing __WFI().
I know that the loop is not running due to pin 18 not toggling, so there are no external events awakening the CPU. I can confirm this works because if I use the debugger the code will not wait for events and the pin will toggle.
The only thing I'm running on purpose if the RTC1 because I need a timer. No BLE enabled at this point.
Can the power consumption be lowered? Am I missing something? Yes, i have digged the archive trying lots of things but could not get lower than this so far.
Is there any way I can check if somehow the internal HFCLK is still running?