current consumption about long press button

Hi,

        We use the nRF52810 to develop a HID controller, we use SDK 17.1.0 ,and the softdevice is S112 .

        We develop based on the example of 'ble_app_hids_keyboard' .everything is going ok .but when we test the power consumption ,we found when long press the button ,the curren consumption is about 270uA @3V  in customer PCB . Then we test the 'ble_app_hids_keyboard' example program in pca10040 EVB ,the current consumption is the same .

        We have another PCB of other product ,which also using nRF52810 ,we test the current consumption  is 45uA when long press the button .

        Could you please explain how to reduce the current consumption of long press button ?

        We have enable the DCDC power supply, We checked the example code ,the hi_accuracy is not enable .

nrf_drv_gpiote_in_config_t config = GPIOTE_CONFIG_IN_SENSE_TOGGLE(false);

  • Hi,

     

    but when we test the power consumption ,we found when long press the button ,the curren consumption is about 270uA @3V  in customer PCB

    Are you using internal pull-resistor in the GPIO PIN_CNF[] register?

    If yes, then it is expected to see such a current draw, as the internal pull resistor is in the 13k (nominal value).

     

    To minimize this current, use an external pull resistor instead with a higher value.

     

    Kind regards,

    Håkon

  • Hi,

            Thanks for your reply .

            The button GPIO config is as below :

    static const app_button_cfg_t app_buttons[BUTTONS_NUMBER] =
    {
    	#ifdef BSP_BUTTON_0
        {BSP_BUTTON_0, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_0
    
        #ifdef BSP_BUTTON_1
        {BSP_BUTTON_1, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_1
    
        #ifdef BSP_BUTTON_2
        {BSP_BUTTON_2, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_2
    
        #ifdef BSP_BUTTON_3
        {BSP_BUTTON_3, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_3
    
        #ifdef BSP_BUTTON_4
        {BSP_BUTTON_4, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_4
    
        #ifdef BSP_BUTTON_5
        {BSP_BUTTON_5, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_5
    
        #ifdef BSP_BUTTON_6
        {BSP_BUTTON_6, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_6
    
        #ifdef BSP_BUTTON_7
        {BSP_BUTTON_7, false, BUTTON_PULL, bsp_button_event_handler},
        #endif // BUTTON_7
    };

            if pca10040.h

    #define BUTTON_PULL    NRF_GPIO_PIN_PULLUP

            Is that mean that's using internal 13K pull-resistor ?

            

    To minimize this current, use an external pull resistor instead with a higher value.

            We modify the NRF_GPIO_PIN_PULLUP to NRF_GPIO_PIN_NOPULL ,and then add an external pull-up resistor like 100k, right ?

            Thanks .

  • Hi,

     

    hyman said:
    Is that mean that's using internal 13K pull-resistor ?

    Yes, that is correct.

    hyman said:
    We modify the NRF_GPIO_PIN_PULLUP to NRF_GPIO_PIN_NOPULL ,and then add an external pull-up resistor like 100k, right ?

    Yes, that will reduce the active current when the pin is pressed.

     

    Kind regards,

    Håkon

Related