UART power consumption Zephyr NRF52833

Hi all!

I am developing an application with Zephyr (commit b21a91e46833cfcf4f2bda9e3e0f9d8c2150882e) on nrf52833 and a Ublox SARA R5. I communicate with the module via the UART and I am now trying to optimise the power consumption. When I run the code with the UART1 status 'disabled' on the devicetree I get the expected power consumption (uA), but when I try to enable it (even without using it, just setting the status to "okay") the power consumption stays on the mA range.

I have the following settings enabled:

CONFIG_PM=y
CONFIG_PM_DEVICE=y
CONFIG_PM_DEVICE_RUNTIME=y

and I think the power management is working fine without the UART. I tried to force the UART to sleep with the following code:

int error = pm_device_state_set(DEVICE_DT_GET(DT_NODELABEL(uart1)), PM_STATE_SOFT_OFF, NULL, NULL);

But the function return a -134 error, which I think is a "non supported" error. Moreover, I tried to be sure that the UART has no IRQ or RX active, running this code:

uart_irq_tx_disable(uart);
uart_irq_rx_disable(uart);
int error = uart_rx_disable(uart);

but the consumption doesn't change and the 'uart_rx_disable' returns -14, which if I am not mistaken means the UART RX is already disabled.

Do you have any pointers on how to turn off the UART at runtime?

Thanks a lot!

Parents Reply Children
  • Hi, 

    We only support nRF Connect SDK in our integration layer and we can't really help if the customer wants to use the vanilla Zephyr. That is, all the development was with nRF Connect SDK in mind, and we cannot guarantee it will work without code changes in a different context.

    sixaxix9 said:
    If I set CONFIG_SERIAL disabled, won't this disable the UART functionality?

    Agree. 

    -Amanda

Related