This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Timer power consumption in NRF51822 ??

I'm using nrf51822 & S130 to read the temperature humidity values every 5 seconds from AM2301 sensor. For that I am using timer in system on sleep mode. The current consumption should not be more than 100uA. But while using timer I am getting 500uA. I have disabled all other peripherals other than timer. Is there any other way to generate interrupt for every 5 seconds and consume less power OR is there any way to reduce the timer power consumption. Someone please suggest.

  • Hi,

    The current consumption for the TIMER peripheral is given in the nRF51822 product specifications. Note that the TIMER peripheral requires the HFCLK (16 MHz clock) to be running, adding an additional 250-470 µA of current draw. You will therefore not be able to get your application below 100 µA using the TIMER peripheral.

    The good news is that since you don't need high resolution for your timing, you can use the Real-Time Counter (RTC) instead. The RTC use the LFCLK (32.768 KHz clock), requiring much less current both for the clock source and the peripheral itself. Using only the RTC, should keep your current consumption way beyond 100 µA (closer to a few µAs).

    You can use the RTC driver directly, or you can use the application timer library. A tutorial on usage of application timer can be found in the tutorial section here at DevZone.

    Best regards,

    Jørgen

  • i am using rtc driver functions in ble_app_uart. But it is not executing rtc_config() function. Program is getting stuck there. But when i use rtc in normal peripheral mode it is working fine. I want to use rtc here to minimize the current consumption below 100uA.

  • Which SDK verison are you using? What is in your rtc_config() function? Have you checked any return values from the functions for error codes? Is anything else in your appliciation using the same RTC interface? (Note that the softdevice blocks the RTC0 interface. If you use app_timer, this will use the RTC1 interface).