Mbed nRF52 low power


#1

Hi,
I’m programming a nano 2 in mbed. Even when I switch off the UART and use __wfi() the current is up at 400uA. I need it to be at 120uA! Is there anything else I can do? Thanks!

int main(void)
{ 
    Ticker ticker;

    NRF_POWER->DCDCEN = 0x00000001;
    NRF_UART0->TASKS_STOPTX = 1;
    NRF_UART0->TASKS_STOPRX = 1;
    NRF_UART0->ENABLE = 0;

    //ble.setTxPower(4); // tx power to 4

    ble_error_t setTxPower(int8_t txPower);
    //uint16_t txPower     = 0x32;//(Half)//0xC8;// needs to be altered
    uint16_t txPower     = 0xC8;// needs to be altered
    //uint16_t txPower     = 0x4B;//3/8 power needs to be altered
 
    ticker.attach(periodicCallback, 5);

    BLE &ble = BLE::Instance();
    ble.init(bleInitComplete);
    
    while (ble.hasInitialized()  == false) {    /*__wfi();*/}

    while (true) {
       if (triggerSensorPolling && ble.gap().getState().connected) {
            updateValues();
            __wfi();
        } 
        else {
            __wfi();
           ble.waitForEvent();//ble.h line 224 for editing
          
           // While(ble.waitForEvent()==1){ }
        }
    }
}

#2

Hi @roro,

How about tempararily disabling the ticker?


#3

I have published a detailed tutorial on how to program the NanoV2 for very low power <100uA all the time, advertising and connected send/receive
https://www.forward.com.au/pfod/BLE/LowPower/index.html
You can use either the NanoV2 programmer or this tutorial shows you how to use a BlackMagic Probe to program the NanoV2.
There is a free app that will generate the low power Arduino Sketch for you that lets you show control menus and plot and log data on your Android mobile, using pfodApp.

Also it seems that the nRF52 chip can get into debug mode by its self which draws mA’s instead of uA’s
Once you have programmed your chip, connect a 470R and 1nF, in parallel, directly from SWCLK to GND to stop noise triggering debug