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

nRF52840 ble_app_uart example using PCA10059 high current consumption

I have modified the ble peripheral example - ble_app_uart to run on the PCA10059 USB dongle and the demo I developed using that as a starting point works very well. The problem I am experiencing is that the I am powering the dongle with 2 - AAA batteries but they are only lasting ~3 weeks connected to a raspberry Pi 0 W. I modified the traces to configure the power input to be compatible with 3.0 Volts input and enabled the DC/DC converter to try and improve the battery life but after 2 weeks the batteries are already down to 1.4 volts per cell. The dongle is connected to the Pi 100% of the time, the communications are limited to a "proof of life" check once a minute but for the most part that's the only communications besides maintaining the connection to the Pi. I disabled the HW uart used in the example to attempt to reduce the current further but I haven't experienced much improvement. Is there something in the example that could cause excessive current draw? Should the dongle not be continuously connected?

Thanks in advance.

Dan

Parents Reply
  • I see that log_init() function is commented out in the code. This will lead to the issue you are seeing, where the CPU is not able to go to sleep.

    There is a NRF_LOG statement in one of the modules in the SDK (components\libraries\timer\drv_rtc.c:108), which causes the log buffer to be filled with this log. Since the logger module have not been initialized, there are no buffers where the logs can be stored for later processing. When you call NRF_LOG_PROCESS() to process the logs, the process tasks are not able to allocate buffers either, generating a new log entry (components\libraries\log\src\nrf_log_frontend.c:904). This will happen every time NRF_LOG_PROCESS() is called, causing the log queue to be constantly filled and never fully emptied/processed.

Children
Related