SDK 2.3.0
We have a custom board with a few GPIO connected to various interrupt sources (Button, sensor interrupts, power connection etc.)
We are experiencing here sleep current 70uA even after turning all the other peripherals and sensors off and leaving 2-3 interrupt sources configured.
What I am looking for help with is the lowest possible power interrupt setup.
Here are some settings in the board file as well as the code snippet:
int8_t configButtonInt(bool enable, bool detectOff) { int err = 0; #ifdef DEBUG_PRINT_SENSOR printf("Enabling pinButtonPwr Int.\n"); #endif gpio_pin_configure(gpio_dev, pinButtonPwr, GPIO_INPUT | GPIO_PULL_UP); // if (detectOff) err = gpio_pin_interrupt_configure(gpio_dev, pinButtonPwr, GPIO_INT_EDGE_BOTH ); // else // gpio_pin_interrupt_configure(gpio_dev, pinButtonPwr, GPIO_INT_LEVEL_LOW ); if (err !=0) { #ifdef DEBUG_PRINT_SENSOR printf("FAIL - Button Int setup. error: 0x%08X\n", err); #endif return err; } gpio_init_callback(&gpio_button_cb, buttonIntCallback, BIT(pinButtonPwr)); err = gpio_add_callback(gpio_dev, &gpio_button_cb); if (err != 0) { #ifdef DEBUG_PRINT_SENSOR printf("Failed - Button Int setup\n"); #endif return err; } #ifdef DEBUG_PRINT_SENSOR printf("OK - Button Int setup\n"); #endif return ERROR_SUCCESS; }
here is the common.dts file:
gpiote: &gpiote { status = "okay"; /*lte uart wake up*/ //interrupts = <4 2>; // interrupts = <22 2>,<4 2>,<6 2>,<10 2>; /*12v detect interrupts = <6 NRF_DEFAULT_IRQ_PRIORITY>; /*power Button*/ // interrupts = <4 4>; /*acc int interrupts = <10 NRF_DEFAULT_IRQ_PRIORITY>;*/ }; gpio0: &gpio0 { status = "okay"; sense-edge-mask = < 0xffffffff >; // sense-edge-mask = < 0xffffffff >; };