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

Current measurements in low power modes

Hello, I am working on a project that uses nrf52832 and I need to put that device and in the system on mode. For that, I want to measure the current in the system on and system off mode which is 1-2 uA and 0.2 uA respectively, but I do not get these values. Can you provide me with the code for which I can measure the current in system on and system off mode to get the above values? I had used ble_app-pwr-profiling example to get the values but I did not get the desired values.

Parents
  • I do not get these values

    So what values do you get?

    And how, exactly, are you measuring?

    At these levels, you need to be very careful about how you take the measurements - and to ensure that you are actually measuring just the DUT, and not leakage to other parts of your system ...

  • I get 287.099 uA in system on mode. I am measuring using PPK and measuring only the DUT. I am using ble_app_pwr_profiling example.

    SDK used is 15.3.0 

  • Thank you -for the clarification regarding the system off mode. I was a bit confused because of the condition given in ble_app_pwr_profiling example as below:

    if (!m_is_notification_mode && !m_is_non_connectable_mode)
    {
    // The startup was not because of button presses. This is the first start.
    // Go into System-Off mode. Button presses will wake the chip up.
            nrf_pwr_mgmt_shutdown(NRF_PWR_MGMT_SHUTDOWN_GOTO_SYSOFF);
    }

    I had changed APP_ADV_DURATION to 500 but still continues advertising. 

    Because even if I am not connecting via nrfConnect application then also it remains in the system on mode I mean advertising and not in system off mode. 

  • It should start in system off, as it says there.

    I wouldn't worry too much about this example if I were you. You can focus on your application, and use the PPK to determine whether the current consumption is too high there.

    This example is set up a bit different from the other BLE examples. 

    But if you need to measure on this example, you can see that depending on what button that is pressed it will advertise in a different mode. Both modes uses the APP_ADV_DURATION timeout. Maybe something connects to your device, so that the device resets the advertisement timeout. Or does it time out after 30 seconds? If it never times out, are you sure that you have flashed the example correctly?  I have tried this example a lot on my desk now, and it behaves like it should, and like it is explained in the description of the example

    If it doesn't maybe we are using different versions of the SDK? Either way, I suggest you try another example that has logging enabled, so that it is easier to see what's going on. 

    It is possible to see what's going on here as well, but it is a bit more work to get the logger up and running in this example. Feel free to try, but in my opinion, it's not worth it. And it is easier to measure the system off current in a project using the softdevice just by reducing the advertising timeout in the other examples.

  • "If it doesn't maybe we are using different versions of the SDK? Either way, I suggest you try another example that has logging enabled, so that it is easier to see what's going on. " 

    Yes for that I am trying ble_app_uart example and will let you know what I get.

    And again of I failed at it then will reduce the advertising timeout.

    Thanks.

  • Could you please also answer my question on ble_app_uart? 

    When I press the button the device does not enter system_off mode as current does not change. Is there anything else which I am missing out? And also how to diasble uart so that I can reduce system on current presently I am getting 2.318 mA.

  • One way to disable the uart is to not initialize it. 

    Don't press any buttons. Unmodified, the uart will time out and enter system off after 180 seconds, as long as noone connect to it. If you want to shorten the advertising timeout, that is the APP_ADV_DURATION in the ble_app_uart example, which is given in units of 10ms. Also remember to disable the NRF_LOG_ENABLED in sdk_config.h to minimize the current consumption.

Reply
  • One way to disable the uart is to not initialize it. 

    Don't press any buttons. Unmodified, the uart will time out and enter system off after 180 seconds, as long as noone connect to it. If you want to shorten the advertising timeout, that is the APP_ADV_DURATION in the ble_app_uart example, which is given in units of 10ms. Also remember to disable the NRF_LOG_ENABLED in sdk_config.h to minimize the current consumption.

Children
Related