我使用 nRF52840 DK 模块和 Zephyr 以及 J-link 编程器。问题是深度睡眠不起作用,并且也无法使用我在数据记录器上看到的中断即将到来的 GPIO 上升沿唤醒。另外,我在万用表上看到运行/活动代码中的电流消耗为 500 微安培,执行后
sys_poweroff();
意味着深度睡眠中的电流消耗为 2550 微安培。
代码简单片段是
app main()
{
...
...
gpio_pin_interrupt_configure_dt(&intr_specs, GPIO_INT_EDGE_RISING);
// k_msleep(1000);
pm_device_action_run(cons, PM_DEVICE_ACTION_TURN_OFF);
pm_device_action_run(i2c1_dev, PM_DEVICE_ACTION_TURN_OFF);
pm_device_action_run(uart_dev, PM_DEVICE_ACTION_TURN_OFF);
pm_device_action_run(fs.flash_device, PM_DEVICE_ACTION_TURN_OFF);
// NRF_GPIOTE-\>EVENTS_PORT = 0;
// NRF_POWER-\>SYSTEMOFF = 1;
sys_poweroff();
}
我在 prj.config 中的配置如下所示
CONFIG_GPIO=y
CONFIG_GPIO_INIT_PRIORITY=60
CONFIG_I2C=y
CONFIG_LOG=y
CONFIG_STDOUT_CONSOLE=y
CONFIG_CRC=y
CONFIG_PM=n
CONFIG_PM_DEVICE=y
CONFIG_POWEROFF=y
CONFIG_CBPRINTF_FP_SUPPORT=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_SERIAL=y
CONFIG_UART_ASYNC_API=y
CONFIG_UART_0_INTERRUPT_DRIVEN=n
CONFIG_UART_0_ASYNC=y
CONFIG_FLASH=y
CONFIG_NVS=y
CONFIG_LOG_MODE_IMMEDIATE=y
CONFIG_NVS_LOG_LEVEL_DBG=y
CONFIG_REBOOT=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DEVICE_NAME="BT-MT"
CONFIG_BT_DEVICE_APPEARANCE=0
CONFIG_BOOTLOADER_MCUBOOT=y