Power consumptio when a button is constant pushed

Dear sir/madam

Background:

We have developed a remote-control system where we use nRF52840 and SDK 17.1.0

VDD is 3,0 V

We also use the library “app_button” where “button_high_accuracy” is disabled.

We have defined 6 buttons and use external pullup of 1 MΩ.

Power measurement is done by using Power Profile Kit 2

When no button is pushed, power consumption is approx. 20 µA

 

Question:

When we push a button and kept it pushed, we get a power consumption of approx. 278 µA.

Our circuit is quite simple: GPIO connected to a button with an external pullup of 1 MΩ. Simple calculation says that the currency drawn on that GPIO should be approx. 3 µA. So to my understanding power consumption with a button pushed should be approx. 23 µA.

So, I suspect there is something in app_button.c that generate the power consumption, but maybe I am wrong.

If someone have a hint of why this high currency consumption, I’ll be very happy. 

Kind regards,

Svein

Parents
  • Hi

    Can you share some details on what GPIO you're pressing here exactly, and what this button is configured as exactly. It might be that it wakes one of the clocks/oscillators, that would indeed increase the current consumption by quite a bit. Also, how do you measure power consumption here exactly, are you using a PPK2, a dedicated power analyzer, or some other method?

    Best regards,

    Simon

  • Hi Simon

    I use the app_button module to configure the buttons by calling app_button_init.

    Power measurement is done by using PPK2

    Here is the configuration:  

    static void buttons_init(void)
    {
    uint32_t err_code;
    static app_button_cfg_t buttons[] =
    {
    {DM_BUTTON, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON1, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {EM_BUTTON, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {RU_IN_CHARGER, APP_BUTTON_ACTIVE_HIGH, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON2, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON3, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON4, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler}
    };
    err_code = app_button_init(buttons, ARRAY_SIZE(buttons), BUTTON_DETECTION_DELAY);
    APP_ERROR_CHECK(err_code);

    err_code = app_button_enable();
    APP_ERROR_CHECK(err_code);
    }

    Button names and assosiated GPIO
    DM_BUTTON           => P0.22
    FUNC_BUTTON1     => P0.20
    EM_BUTTON            => P0.22
    FUNC_BUTTON1     => P0.19
    RU_IN_CHARGER   => P0.04
    FUNC_BUTTON2     => P0.21
    FUNC_BUTTON3     => P0.23
    FUNC_BUTTON4     => P0.24

    Is it possible to upload a picture of the measurement done by PPK2?

    When looking at PPK2 there are pulses when a button is pushed, and kept pushed.
    Time distance from top to top is 980 µS and the amplitude is 2,5mA +/- some hundred µA

    Kind regards

    Svein

Reply
  • Hi Simon

    I use the app_button module to configure the buttons by calling app_button_init.

    Power measurement is done by using PPK2

    Here is the configuration:  

    static void buttons_init(void)
    {
    uint32_t err_code;
    static app_button_cfg_t buttons[] =
    {
    {DM_BUTTON, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON1, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {EM_BUTTON, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {RU_IN_CHARGER, APP_BUTTON_ACTIVE_HIGH, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON2, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON3, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler},
    {FUNC_BUTTON4, APP_BUTTON_ACTIVE_LOW, NRF_GPIO_PIN_NOPULL, button_event_handler}
    };
    err_code = app_button_init(buttons, ARRAY_SIZE(buttons), BUTTON_DETECTION_DELAY);
    APP_ERROR_CHECK(err_code);

    err_code = app_button_enable();
    APP_ERROR_CHECK(err_code);
    }

    Button names and assosiated GPIO
    DM_BUTTON           => P0.22
    FUNC_BUTTON1     => P0.20
    EM_BUTTON            => P0.22
    FUNC_BUTTON1     => P0.19
    RU_IN_CHARGER   => P0.04
    FUNC_BUTTON2     => P0.21
    FUNC_BUTTON3     => P0.23
    FUNC_BUTTON4     => P0.24

    Is it possible to upload a picture of the measurement done by PPK2?

    When looking at PPK2 there are pulses when a button is pushed, and kept pushed.
    Time distance from top to top is 980 µS and the amplitude is 2,5mA +/- some hundred µA

    Kind regards

    Svein

Children
No Data
Related