Power consumption on UART

Hello,

I'm trying to reduce the power conception of my custom board with a nrf52840 and a 4g modem on uart.

For this test, I reduce the code to a loop (modem is off)


        k_msleep(5000);
        pm_device_action_run(modem_uart, PM_DEVICE_ACTION_RESUME);
        k_msleep(5000);
        pm_device_action_run(modem_uart, PM_DEVICE_ACTION_SUSPEND);
 
If I disable the rx to the uart on modem pins with disable-rx; on dts file:
Current is  30µA on suspend, 1.5mA on resume -> this is what I expect but I need RX 
 
If I put the uart on others pins(unconnected) with RX enable:
Current is  30µA on suspend, 1.5mA on resume -> it's OK
 
If I put the uart on the modem pin.
Current is  500µA on suspend, 1.5mA on resume.
 
I assume modem have a ON lvl on its TX even when off and draws current.
But I can't explain why it is not disconnected when the suspend happens. This is the purpose of "low-power-enable": disconnect the pin and put it as a input.
Why I have a difference between disable-rx and low-power-enable options?
 
uart pins in DTS file:
 uart1_default: uart1_default {
         group1 {
             psels = <NRF_PSEL(UART_TX, 1, 7)>,
                        <NRF_PSEL(UART_RX, 1, 4)>;
         };
     };
     
uart1_sleep: uart1_sleep {
        group1 {
            psels = <NRF_PSEL(UART_TX, 1,7)>,<NRF_PSEL (UART_RX, 1,4)>;
            low-power-enable;
        };
    };
 
I tried async uart, with uart_rx_disable before suspend but idle current is now 3mA! I tried the low power uart but current is 500µ too.
How can I have a low current of 30uA  with the suspend mechanism ( or other solution)
Thanks you
Related