Problems that occur in system on mode

Hi,the Nordic team

I use the SED device by system on mode.I found that my static average power consumption increased by more than 20 ua after I defined an IO port to use and interrupt wake-up. The lowest power consumption did not go to a few ua, and the lowest power consumption was 20 ua.

this is my code:

// init GPIO and Interrupt
void report_gpio_init(void)
{
    if (!device_is_ready(report_gpio.port)) {
        LOG_ERR("GPIO port not ready");
        return;
    }

    gpio_pin_configure_dt(&report_gpio, GPIO_INPUT);
    gpio_pin_interrupt_configure_dt(&report_gpio, GPIO_INT_EDGE_BOTH);

    gpio_init_callback(&report_gpio_cb, report_gpio_callback, BIT(report_gpio.pin));
    gpio_add_callback(report_gpio.port, &report_gpio_cb);

    LOG_INF("Report GPIO initialized");
}


static void report_gpio_callback(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
{
    LOG_INF("GPIO triggered, sending status");

    // 提交工作队列进行上报
    k_work_submit_to_queue(&coap_server_workq, &report_status_work);

}

 k_work_init(&report_status_work, gpio_status_report);
 
 void gpio_status_report(struct k_work *item)
{
	ARG_UNUSED(item);
	// 读取引脚电平
    bool pin_state = gpio_pin_get_dt(&report_gpio);
    LOG_INF("Sending GPIO status via CoAP: %d", pin_state);

    uint8_t payload = pin_state ? 1 : 0;
    coap_send_request(COAP_METHOD_POST,
                      (const struct sockaddr *)&provisioning_client_addr,
                      status_option, &payload, sizeof(payload), NULL);
}

Related