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

Low Power UART migration

Dear All,

Currently I'm developing a BLE module that will be useful by its uart service and will use nrf51822. Nordic provided an example based on sdk 6.1 for low power operation. I'm trying to migrate it to the newer SDK to take advantage of the DFU OTA features present in newer softdevices (S110, S130).

I've been digging the SDKs from 6.1 to 12.3 and a lot of changes were introduced in uart code projects structure. With newer SDK I managed to get uart working over BLE(it's simple) but I didn't get success putting my module working with low power mode as the example provided provided here

In did, develop these SDKs is an huge work for nordic, but the structure is getting very complex and it's very confusing now to explore it and adapt older projects.

I have read a lot of nordic threads, and it seems to me that it was also complicated for other developers trying to migrate to SDKs newer then V6.1.0.

I would like to ask if nordic can provide a migration of this project to a newer SDK.

Best Regards,

Vitor Barbosa

  • Hi,

    So the problem here is in essence that the current consumption is high after calling:

    NRF_UART0->TASKS_STARTRX = 1; 

    And the current consumption will go low only when calling:

    NRF_UART0->TASKS_STOPRX = 1;

    This means that you need some way for the application running on the nRF51822 to know/detect when to START and STOP the UART RX. The UART TX is no problem to use at any time, as it will only draw current while active transmitting data over UART.

    My suggestion here is for the peer device to set a pin high or low when there is data to transmit to the nRF51822, then the application running on the nRF51822 can START and STOP the UART RX by calling above tasks to control the power consumption. It may for instance be possible by peer device using hardware flow control, then the nRF51822 can use the RTS pin as a normal GPIO input pin to know when to START and STOP the UART RX. In such case the application will use a software implementation of the flow control (for instance set CTS when there is TX data to send, and use RTS as input to start and stop RX data), instead of the hardware flow control. 

    Best regards,
    Kenneth

Related