This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Extremely high current consumption during advertising - broadcast mode(ble_app_temp)

I have written application similar to ble_app_temp (posted by Ole Morten) and during the test I noticed that current consumption is extremly high. I used brand new coin battery that was included in evaluation kit and after ~10 minutes battery status was only 40% ( I checked this also with ble_app_hrs app). At the beginning I though that it was caused by the data included in advertisment packet ( I added 10 bytes of data to manufacturer data - adv interval was 1 second), but then I tested my battery with original app (ble_app_temp) and the effect was the same. My question is: did anyone also encountered such a problem with high current consumpion in case of broadcaster mode? I will test different battery today but I am afraid that is not case of battery.

Thanks in advance for your help.

ble_app_temp.zip

  • I suspect that this problem may be caused by the enabling of the ADC interrupt, when the interrupt is not used. Try removing the line

    
        NRF_ADC->INTENSET   = ADC_INTENSET_END_Msk;
    
    

    from the battery_level_get() function.

    Edit: For completeness, also include some other things that should be checked when seeing unexpected current consumption:

    • Make sure that you power-toggle your board after programming, as discussed here.
    • If you use the Evaluation Board, make sure to disconnect or turn off the Segger chip (i.e. remove jumpers on P8 or turn off SW4 depending on board revision).
    • Make sure that the lines that are connected to the UART of the Segger chip are defined as input with their buffers disconnected, or cut the UART solderbridges.
  • I will try this when I get back home, but not sure if this is the issue, because in first version of my app I didn't have battery service (just advertised manufacturer data). I added this service to check if battery is really discharging so fast.

    Thank you for your answer.

  • Please try it, and if it works, I'd be happy if you could accept my answer. :) Your code seems to be running this code path, so I believe it should at least have some effect.

  • I tried to run app without line responsible for enabling ADC interrupts, but unfortunately it didn't solve my problem. Maybe current consumption is a bit smaller, but during 4 minutes test (I bought new battery, which was used for maybe 3 minutes before this test) voltage droped down from ~2.8 to ~2.6. I could have run this test for longer, but this way I would discharge new battery in few minutes:/

    Maybe somebody know what can cause such a high current consumption in a broadcaster mode?

  • I performed one more test to be sure that something is not right with this app. I decided to run app for whole night (~8 hours). At the beginning ble_app_temp returned 0xb4 as NRF_ADC->RESULT value (I have waited for few minutes before first measurement - didn't want to measure fake voltaga value). When I checked my app on mobile at 6 a.m. it indicated that NRF_ADC->RESULT = 0xa7. If I didn't make any error, it means that: 0xb4 = 180 -> 180/255 * 1.2 * 3 = 2.54V [ NRF_ADC->RESULT/ADC_MAX * Ref vol. * 1/prescaling factor] 0xa7 = 167 -> 167/255 * 1.2 * 3 = 2.37V Despite the fact that voltage level is really low for battery used not even for an hour, voltage drop of 0.17V in 8 hours is much more than the standard . P.S. I removed temp measurment from app to be sure that it is not caused by it.

Related