RAK3172 USART interrupt trigger doesn't work when PM is active

Hello devs,
I am testing power management in my application running on RAK3172 and I stumbled upon an issue while trying to use USART1. The peripheral is configured as interrupt-driven and asynchronous and works when PM is off; however, when PM is on, it correctly sleeps when the application goes to an idle state, but doesn’t look to wake up properly:

Main loop

while(true) {
    pm_device_action_run(gps_uart, PM_DEVICE_ACTION_RESUME);
    MainApp::LIS3DHRun(LIS3DH_FIFO_MODE);

    if(accel_sample_event_counter > 30) {
        sendClassificationAndGpsData();
        accel_sample_event_counter = 0;
    } 
    pm_device_action_run(gps_uart, PM_DEVICE_ACTION_SUSPEND);
    k_msleep(4000);
}

I tried to use Zephyr PM methods for managing the device, but they seem not to affect the result.

Hi @Giovanni ,

I am not sure what PM is (Power Management?). But if this is in STOP MODE 2, it will not be able to wake up your device on USART1.

STOP MODE 2 only allows LPUART1 which is mapped to USART2 in STM32WL.

Here’s screenshot from datasheet.

You can refer on Low-power Mode section of the STM32WL datasheet for the difference of STOP MODE 0/1 and STOP MODE 2.

Thank you for your support. I will dive into it thoroughly afterwards.