This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1312R: TIRTOS: Wake from Standby via UART RX

Part Number: CC1312R

Tool/software:

Hello,

We are developing a battery-powered device using the CC1312, which communicates with a peripheral chip via UART. We are using the TI-RTOS UART2 driver for this connection, but as documented, the driver prevents the device from entering low-power modes while receiving.

Our challenge is that we want to keep the device in standby mode as much as possible while ensuring we do not miss any messages. The messages we receive are short status codes, typically 2-3 bytes long.

Are there any recommended approaches to optimize power consumption in this scenario? Is it possible to configure a wake-on-RX? Any guidance on best practices for achieving both low power consumption and reliable UART reception would be greatly appreciated.

Thanks in advance!

  • Hi Karsten,

    once you have opened a UART2 instance the device will always stay active as it needs to track the uart.

    The only way that you could achieve a wake-up functionality is when you use another GPIO (or re-configure one of the UART pins as GPIO) as interrupt to wakeup the device. After the wake-up you let the device open a UART2 instance and then you are ready to receive data. After receiving the message you could send some kind of keywork which will trigger the CC1312R to close the UART instance and following it can go back to sleep or shutdown depending on which other operations you are running.

    This would require your host to first wakeup the device using the GPIO interrupt and then send the UART message with some delay (to let the CC1312R open the UART). 

    This solution will lead to a longer delay in sending the messages.


    Could you tell me a bit more about what other software stack the CC1312R is running and which application it is for? Do you need to safe power because it is battery powered?

    Kind regards,
    Theo

  • Hi Theo,

    we're using the simplelink SDK 7.41 and using the proprietary sub-1GHz RF stack. We need to be in standby mode to have a long as possible battery life. With the UART port open we have a current draw of about 3mA but when closing it we get down to 170uA while the Radio is sleeping.

    The peripheral unfortunately does not have a dedicated GPIO to be able to wake up the CC1312 but it does repeat the message up to two times when it does not receive an acknowledgement message. Would it be possible to configure the RX pin as a IRQ GPIO and in the ISR configure it back into a UART and open the port to receive the repeated message? Is the CC1312 able to go into standby while waiting for interrupts?

    Kind regards

    Karsten

  • Hi Karsten,

    I understand, thank you for the details.

    Yes, this is what I was suggesting. You can reconfigure one of the UART pins as interrupt (example in the SDK drivers/gpiointerrupt) and if you receive an interrupt you can set a flag in the ISR. The flag should trigger a function that disables the gpio interrupt on the UART pin and then opens the UART. After the one UART message or a keyword is received you close the UART and then you enable the interrupt again. 

    This is the overview from the Technical Reference Manual: https://www.ti.com/lit/swcu185g and the wakeup on pin edge is available in all power modes.

    Kind regards,
    Theo

  • Thanks a lot!

    One last question, is there an overview on what TIRTOS objects do/do not prevent the processor going into standby such as pending on events or waiting on semaphores?

  • Hi Karsten, 

    yes, we have the TI-TROS 7 Kernel documentation as part of the SDK and hosted here: https://dev.ti.com/tirex/explore/node?node=A__AOefSmxZLpihMzigSqxbMg__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__LATEST 

    Kind regards,
    Theo