I’m creating a custom board using NRF52832 in order to create a BLE device that will store and transmit data.
Ble device uses GATT Characteristics for data transmission.
For data storage I use LittleFileSystem.
My project will be a wearable device, so I’m trying to achieve months of battery life (if possible). I saw that the NRF52832 chip can achieve lower power consumption than 0.5mA using ble.
I’ve found the following step to improve the power consumption of the board:
int main(void)
{
//Enable DCDC Regulator
NRF_POWER->DCDCEN = 1;
//Start Bluetooth Functionalities
thread.start(BluetoothThread);
shouldSleep = false;
while(1){
// if System OFF must be enabled
if (shouldSleep == true)
{
NRF_POWER->SYSTEMOFF = 1;
}
// Enter LOWPWR mode (LOWPWR is recommended for most applications)
NRF_POWER->TASKS_LOWPWR = 1;
// Enter System ON sleep mode
__WFI();
__SEV();
__WFI();
}
}
I want to reduce the power consumption as much as possible, but the best I got was 1.5mA, which is way too much compared to BLE examples using Segger Embedded Studio.
As you can see in the screenshot above, power consumption has a large spike (5mA) at the beginning of the wake-up process (triggered from an interrupt pin signal). Furthermore, the wake-up takes way too long until the first advertising. Is it a normal thing to happen or did I miss something?
I am more familiar with C++ and mbed os, that’s why I want to find the best solution with this approach.
All suggestions are welcome.