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

Problem with BLE Low Power Mode

Hello,

I am using nRF52832 and having a problem with the Low Power Mode. I am not sure if I am either not getting it to stay in low power mode when my UART is initialized, or if low power mode is using too much power.

When I do not even initialize the UART, my low power mode sees current usage in the 100s μA range

When I initialize my UART and then almost immediately uninitialize it, my sleep mode has a current draw of about 5-6mA. I have also disabled easy DMA to try to get the UART to use less power. Any ideas as to what is going on here? I have no other timers and am not connecting to it, so there should be no other events that wake it from this mode.

Fullscreen
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


I have confirmed that the GPIOTE is not the issue in a separate isolated test. It seems to be something with the UART either causing a much higher current draw or not allowing the board to remain asleep

Parents
  • seems like the uart uninit function is leaving something enabled. I would have to reproduce this tomorrow, which SDK version did you use? Is the code snippet you attached, enough for me to be able to reproduce this issue?

  • I think should be enough. I also have events for ble connections but shouldn't be an issue. I am using version 12.3 with s130

    All my uart init/uninit is in uart library app_uart_fifo.c which is very similar to app_uart.c. I moved some of the code out of there and into this snippet just to make it more clear.

  • If this is all I need, then i will test this tomorrow morning as its pretty late here in Norway

  • As a note... I was able to get it into the lowest power mode when I switched to the non-FIFO uart. Is there any reason for this?

  • It looks like in your code snippet, you are trying to uninitialize the UART before you are calling app_uart_init.

    Please check in a debugger to see if when using app_fifo and when calling nrf_drv_uart_rx_disable/app_uart_close fails with a return code and is stuck in the app_error handler?

  • Hi Aryan,

    Looks like I have resolved this for now. Turns out that calling sd_app_evt_wait() twice does the trick and puts it into low power mode consistently.
    Do you have any idea if the UART FIFO vs normal UART would have any affect on the low power mode?

  • UART with or without FIFO should work the same way power efficiency wise. UART FIFO just has very very tiny overhead of managing the buffer, but you should not see that big difference.

    john_h said:
    Turns out that calling sd_app_evt_wait() twice does the trick

    This smells like a bug in the FIFO code somewhere. Thanks for the workaround, I did not find any other customer having this problem. I will anyways asks the team to do some power measurements on both to compare. Can we close this case John?

Reply
  • UART with or without FIFO should work the same way power efficiency wise. UART FIFO just has very very tiny overhead of managing the buffer, but you should not see that big difference.

    john_h said:
    Turns out that calling sd_app_evt_wait() twice does the trick

    This smells like a bug in the FIFO code somewhere. Thanks for the workaround, I did not find any other customer having this problem. I will anyways asks the team to do some power measurements on both to compare. Can we close this case John?

Children
No Data