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