This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

UART current consumption

Hello,

I developed an application for a custom nrf52832 board. It uses the Nordic UART Service (NUS) to transmit data over BLE. This works fine.

At the moment I am trying to optimize the current consumtion of this application on the custom nrf52832 board. I have already made some measurements and I figured out the following:

If I initialize the UART by calling the uart_init() function, my current consumption increases by 1,35mA (V_cc = 1.8V). This looks a bit too high for me.

Can you please answer my following questions:

1. Is this the normal current consumption of the UART?

2. Are there any ways to lower the current consumption of the UART?

Thank you very much in advance.

Parents
  • Hi,

    1. Is this the normal current consumption of the UART?

    This depends a bit on which UART are used. Both the UART and the UARTE peripherals has a run current of 55 uA, but in addition, both requires the HFCLK to run, which is about 400 uA. The UARTE peripheral also adds the EasyDMA current of about 1.2 mA to the current, when the UART is active. These are numbers for 3.0V supply, I would expect them to be higher at 1.8V.

    2. Are there any ways to lower the current consumption of the UART?

    You can try to for the UART library to use the legacy UART peripheral, by setting the following configs in your sdk_config.h file:

    #ifndef UART_LEGACY_SUPPORT
    #define UART_LEGACY_SUPPORT 0
    #endif
    
    
    #ifndef UART0_CONFIG_USE_EASY_DMA
    #define UART0_CONFIG_USE_EASY_DMA 0
    #endif

    With these configs, I measure about 450 uA base current.

    Another option is to disable the RX part of the UART if you do not need this in your application. We have implemented this in NRF_LOG, and I measure 4 uA base current with this, as the UART peripheral is only active when a TX operation is happening. Since UART is asynchronous, there is no way to achieve this for RX, except having RX enabled at all times, or use additional control-signals to notify the chip in advance that a transfer will happen, to make it enable the RX mode.

    Best regards,
    Jørgen

  • Hello,

    thank you very much for your response.

    With these configs, I measure about 450 uA base current.

    I applied these changes to my sdk_config.h in my project, unfortunaly the current consumption is still at 1.35mA. Did you made more changes in the sdk_config.h?

    Another option is to disable the RX part of the UART

    I don´t need the RX part of the UART for my application. Where can I find this implementation for disabling the RX part of the UART in NRF_LOG?

    Thank you very much in advance.

Reply Children
No Data
Related