Power consumption in idle mode.

We have developed a hardware platform using the NRF5340 on Nordic's zephyr (version 3.5).

Our current consumption in idle mode is still around 330 µA, instead of the expected 20 µA.

In idle mode, only the following SoC peripherals should be active:

  • the NFCT (field detection)
  • the RTC (periodic wake-up)
  • 2 gpios pins (buttons)
  • all RAM memory is retained.

In system off mode, we consumed 11 µA for all hardware (mpu, LDO) platform.

We can deduce that the additional current consumption is not due to a peripheral outside the SOC. The over-current consumption is from the NRF5340.

An internal peripheral is consuming current in idle mode, but we don't know which one.

Is there a way to determine which internal peripheral is responsible?

I have been stuck for 3 weeks.

Thank you for your help.

Regards, Alain

Parents
  • Hello,

    I used the following code and the result is still the same (350µA). I'm not sure if the code is correct.

    BR/

    A.

    gpio_pin_interrupt_configure_dt(&config->pmu_det_spec, GPIO_INT_DISABLE);
    gpio_pin_interrupt_configure_dt(&config->pmu_int_spec, GPIO_INT_DISABLE);
    nrf_gpiote_task_configure(NRF_GPIOTE, GPIOTE_CHANNEL_INT,
    NRF_GPIO_PIN_MAP(1, config->pmu_int_spec.pin), // Port 1, Pin 13
    NRF_GPIOTE_POLARITY_HITOLO, // High-to-low transition
    NRF_GPIOTE_INITIAL_VALUE_HIGH); // No initial task

    // Enable the event for the GPIOTE channel
    nrf_gpiote_event_enable(NRF_GPIOTE, GPIOTE_CHANNEL_INT);
    nrf_gpiote_task_configure(NRF_GPIOTE, GPIOTE_CHANNEL_DET,
    NRF_GPIO_PIN_MAP(1, config->pmu_det_spec.pin), // Port 1, Pin 14
    NRF_GPIOTE_POLARITY_HITOLO, // High-to-low transition
    NRF_GPIOTE_INITIAL_VALUE_HIGH); // No initial task

    // Enable the event for the GPIOTE channel
    nrf_gpiote_event_enable(NRF_GPIOTE, GPIOTE_CHANNEL_DET);
Reply
  • Hello,

    I used the following code and the result is still the same (350µA). I'm not sure if the code is correct.

    BR/

    A.

    gpio_pin_interrupt_configure_dt(&config->pmu_det_spec, GPIO_INT_DISABLE);
    gpio_pin_interrupt_configure_dt(&config->pmu_int_spec, GPIO_INT_DISABLE);
    nrf_gpiote_task_configure(NRF_GPIOTE, GPIOTE_CHANNEL_INT,
    NRF_GPIO_PIN_MAP(1, config->pmu_int_spec.pin), // Port 1, Pin 13
    NRF_GPIOTE_POLARITY_HITOLO, // High-to-low transition
    NRF_GPIOTE_INITIAL_VALUE_HIGH); // No initial task

    // Enable the event for the GPIOTE channel
    nrf_gpiote_event_enable(NRF_GPIOTE, GPIOTE_CHANNEL_INT);
    nrf_gpiote_task_configure(NRF_GPIOTE, GPIOTE_CHANNEL_DET,
    NRF_GPIO_PIN_MAP(1, config->pmu_det_spec.pin), // Port 1, Pin 14
    NRF_GPIOTE_POLARITY_HITOLO, // High-to-low transition
    NRF_GPIOTE_INITIAL_VALUE_HIGH); // No initial task

    // Enable the event for the GPIOTE channel
    nrf_gpiote_event_enable(NRF_GPIOTE, GPIOTE_CHANNEL_DET);
Children
No Data
Related