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

ble_app_uart example current consumption difference on SDK11 and SDK12 (and later)?

We are trying to minimize the UART current in our product, so we tried some experiments on the PCA10040 board.

We noticed a significant current difference between SDK11 and later SDKs for the ble_app_uart example.

When running the example in SDK11 on PCA10040 board, the average current is around 0.5 mA, which looks fair.

However, when running the example in SDK12.3 and later, the average current is around 2.2 mA, which is definitely unacceptable.

What could cause these significant difference on current consumption with the same example between different SDKs?

What is the typical current for applications using constant UART RX when UART is idle?

Parents
  • The main difference between the SDK's in this case is that the UART peripheral supports two modes of operation, buffer RX data in the UART peripheral (fixed 6byte FIFO) or allow the UART to write data directly to RAM (EasyDMA). The first will use less current consumption, but with the drawback that the CPU will need to pull the data from the UART peripheral and make sure the UART buffer does not overrun. The second will use more current consumption, but received data is written directly to RAM and the CPU doesn't really have to handle any real-time requirements of incomming data on the UART. 

    All that said. The new SDK can also use the old mode by disable UART0_CONFIG_USE_EASY_DMA. I also recommend to enable DCDC, which will lower the current consumption overall.

Reply
  • The main difference between the SDK's in this case is that the UART peripheral supports two modes of operation, buffer RX data in the UART peripheral (fixed 6byte FIFO) or allow the UART to write data directly to RAM (EasyDMA). The first will use less current consumption, but with the drawback that the CPU will need to pull the data from the UART peripheral and make sure the UART buffer does not overrun. The second will use more current consumption, but received data is written directly to RAM and the CPU doesn't really have to handle any real-time requirements of incomming data on the UART. 

    All that said. The new SDK can also use the old mode by disable UART0_CONFIG_USE_EASY_DMA. I also recommend to enable DCDC, which will lower the current consumption overall.

Children
No Data
Related