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

Softdevice - basic BLE advertising current consumption.

Hello,nrf_pwr_mgmt

I am doing basic BLE advertising on the nRF52840 DK board and using nRF5 SK 17.0.2. I can see the current consumption is ~50uA but after using nrf_pwr_mgmt I don't see any change in current consumption.

I am initializing the nrf_pwr_mgmt_init() in main and in loop I am executing  nrf_pwr_mgmt_run() function.

power_management_init();
    ble_stack_init();
    gap_params_init();
advertising_init();
advertising_start();
for (;;)
   {
       idle_state_handle();
   }

Am I doing anything wrong? Is the above code is enough to achieve low power mode?

Thanks in advance.

Regards,

Neeraj Dhekale

  • Hello Neeraj Dhekale,

    Am I doing anything wrong? Is the above code is enough to achieve low power mode?

    No, this looks alright - the device will setup and start advertising, and then go into SYSTEM_ON sleep whenever it is not handling an incoming event.

    but after using nrf_pwr_mgmt I don't see any change in current consumption.

    You should see quite the increase in power consumption if you measure it without idle_state_handle() running in the main loop.

    I can see the current consumption is ~50uA but after using nrf_pwr_mgmt I don't see any change in current consumption.

    ~50 µA average sounds like you are entering the SYSTEM_ON sleep successfully - the radio events (advertisings, scan requests, connection requests) will happen periodically and wake the CPU and Radio peripheral, which will add to your average consumption - keep in mind that I do not know how your advertising is configured. You could use the Online Power Profiler to estimate how your advertising configuration will affect the power consumption of your device.

    How are you measuring your power consumption by the way, are you using an oscilloscope, Power Profiler Kit, or other instrument?

    Best regards,
    Karl

  • Hello

    Currently, I am measuring current from a multimeter.

    the device will setup and start advertising, and then go into SYSTEM_ON sleep whenever it is not handling an incoming event.
    ~50 µA average sounds like you are entering the SYSTEM_ON sleep successfully

    Without implementing nrf_pwr_mgmt code I was getting the same ~50 µA current consumption. I was expecting it will be less than this.  Do you mean that nrf_pwr_mgmt is optional and it goes into SYSTEM_ON sleep mode automatically whenever it is idle like Low power mode in Zephyr does?

    Anyways I need to test in it power profiler. I will give a more clear idea about the difference before/after using nrf_pwr_mgmt.

    Thanks and regards,

    Neeraj Dhekale

  • Neeraj Dhekale said:
    Currently, I am measuring current from a multimeter.

    Multimeters measures with a lot of averaging, which is likely why you are seeing 50 µA.
    As you can see from the sleep mode documentation the SYSTEM_ON sleep current should be much lower - but the advertising events will cause quite an increase in consumption.
    If you input your advertising configuration into the online power profiler you can subtract that from from your current measurement to estimate what your sleep current is, roughly.

    Neeraj Dhekale said:
    Do you mean that nrf_pwr_mgmt is optional and it goes into SYSTEM_ON sleep mode automatically whenever it is idle like Low power mode in Zephyr does?

    This is not the case, if you have not implemented system on sleep the device will not sleep and thus the CPU will be active all the time. It is not the same as the low power mode in Zephyr.

    Neeraj Dhekale said:
    Anyways I need to test in it power profiler. I will give a more clear idea about the difference before/after using nrf_pwr_mgmt.

    I agree - this would be the best way to get an accurate picture of the consumption during the different stages of your program.

    Best regards,
    Karl

Related