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.

MSP430FR5969: UART and LPM3/4

Part Number: MSP430FR5969

Hi,

I'm running a 9600 baud UART, derived from an 8MHz DCO.  I'd like to put the processor in LPM3/4, but still be able to receive a byte on the UART (which may arrive at any unexpected time).  Based on the datasheet, I thought I would be able to rely on the DCO being automatically started by the falling edge of the start bit to make this work.  However, when I put the processor to sleep, I miss the first received byte of the packet once in every 20 wake ups or so.  With sleep disabled, I have not yet been able to induce a lost byte (I have an overnight test running to confirm).

My questions are:

1) Are my expectations reasonable?  Can the FR5969 DCO and UART reliably start up from LPM4 to catch a 9600 baud byte?  The datasheet spec of worst case wakeup time of 10us would suggest it should be possible (<10% of the start bit), but please enlighten me if I am missing something.

2) If it is reasonable to do this reliably, is there something special I need to do to ensure it works?  Special optimizations in the ISR?  I'm already doing the __even_in_range trick to speed up the ISR vector.  Tricks to start the DCO up faster? All hints appreciated.

Thanks!

  • Hi Lawrence,

    1) DCO doesn't work at LPM4. It definitely needs time to power up and stabilize. See the note in User's guide. The clock source must be ready before receiving data from UART.

    2) Use the first received byte to weak up the MCU from LPM. That means you need to add one empty byte at the beginning. 

    Best regards,

    Cash Hao

**Attention** This is a public forum