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

nrf52 Power consumption intermittently high

We have recently migrated from a custom board based on the nrf51 to a new board with the nrf52832. Our nrf51 board used to run at 6-8 uA when it was just sitting there advertising. The new board is running at about 34 uA, but sometimes inexplicably starts consuming 500 uA after radio communications from the iPhone central. This behavior is very intermittent.

We are using the SAADC in Scan mode to periodically measure battery voltage and temperature via a thermistor, both using voltage dividers.

I am on SDK 12.2 using the S132 Soft Device. I can't seem to figure out why the board sometimes starts consuming 500uA. It is very intermittent. Have you all seem the nrf52 get into a state like this? If so what can cause it?

Also, is 6 to 8 uA achievable with the nrf52? BTW, for the AtoD conversions I am enabling the SAADC prior to measurement, and then turning it off after per some recommendations on this forum to conserve power.

Thanks for your help.

  • FormerMember
    0 FormerMember

    Which LFCLK source do you use, the internal RC oscillator? If so, what is the calibration interval? Does the interval where the board use 500 uA change if you change the calibration interval of the RC oscillator?

  • @eq - We had a similar issue migrating from the 51 to the 52. Here are a couple of other things I would check: 1) If the HW is set up for DC-DC converter, be sure to enable it. 2) If you are using the TWI look at PAN-89 in the errata 3) There was a note about when clearing Events, read them back to make sure the clear is flushed to RAM before moving on. 4) Make sure to use sd_app_event_wait when idling rather than __WFE

  • Clock config is below:

    nrf_clock_lf_cfg_t clock_lf_cfg = { .source = NRF_CLOCK_LF_SRC_RC, .rc_ctiv = 16, // Check temperature every 4 * 250ms .rc_temp_ctiv = 2, // Only calibrate if temperature has changed. .xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_250_PPM, };

    // // Initialize the SoftDevice handler module. // SOFTDEVICE_HANDLER_INIT(&clock_lf_cfg, NULL);

    To be clear, when the board boots up it runs at 34uA. After the system starts communicating with the App and begins taking ADC measurements, thats when it sometimes goes up to 500uA.

  • Update: I have isolated the high current condition (510 uA) to occurring only when I use the SAADC WITH a Timer. If I just initiate a sample capture using nrf_drv_saadc_sample(); with NO Timer, the current stays at 34uA. Is there perhaps some Timer Interrupt that needs to be cleared to prevent this?

  • FormerMember
    0 FormerMember

    With the TIMER running, there should be an additional 250 uA + 70 uA = 320 uA current consumption..

Related