NRF52840 GPIO 41 Drawing 140 uA when configured as input with PULLUP

Setup:
- We have a custom board using the BL654 (Laird Connectivity) module with the NRF52840 core using SDK 17.1

Issue:

- On power up we configure the GPIO 41 as an input with internal pullup (NRF_GPIO_PIN_PULLUP)

. The input in this test is disconnected from any button or input source

- We notice an extra ~ 140 uA when setting this input as a pullup. The extra 140 uA  doesn't occur when configuring input as no pull (NRF_GPIO_PIN_NOPULL)

- If we reset the board using the reset button then the issue goes away (even when using the internal pullup)

Question:

- Why are we seeing 140 uA current leakage on this pin?

example code

void config_gpio_input(void)
{
    nrfx_gpiote_pin_t pin_num  = 41u;
    uint32_t          err_code = nrfx_gpiote_init();
    ASSERT(0 == err_code);

    nrfx_gpiote_in_config_t in_config = NRFX_GPIOTE_CONFIG_IN_SENSE_TOGGLE(false);
    in_config.pull                    = NRF_GPIO_PIN_PULLUP;
    nrfx_err_t init_err               = nrfx_gpiote_in_init(pin_num, &in_config, gpio_event_handler);

    ASSERT(0 == init_err);
    nrf_drv_gpiote_in_event_enable(pin_num, true);
}

Parents Reply
  • Hi, ok but it looks like even when I do this (not using events or triggers) I still get the issue

    Also, some tests show that even using NOPULLUP results in 140 uA current draw

    Can you provide an example of using the "port event" option? 
    Thank you!

    if (!nrfx_gpiote_is_init())
    {
    ASSERT(0 == nrfx_gpiote_init());
    }
    nrf_gpio_cfg_input(41u, NRF_GPIO_PIN_PULLUP);

Children
No Data
Related