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.

MSP430F6779A: Interfacing with CC2564, Errata Workarounds

Part Number: MSP430F6779A
Other Parts Discussed in Thread: CC2564

My customer has encountered a recent issue with the interaction between the MSP430F6779A and the CC2564 bluetooth module associated with coming out of LPM3 mode.  On the errata, there are a couple workarounds described (use another clock or implement a delay) but we wanted to see if there were any other possible workarounds as well that may not have been mentioned because neither will work for their implementation.  Also, was/is there a fix planned for this possibly in a subsequent revision of the die?

 

Link to the errata document: http://www.ti.com/lit/er/slaz597k/slaz597k.pdf

The specific item that we’re looking at is PMM12:

PMM12 PMM Module

Function SMCLK comes up fast on exit from LPM3 and LPM4

Description The DCO exceeds the programmed frequency of operation on exit from LPM3 and LPM4

for up to 6 us. When SMCLK is sourced by the DCO, it is not masked on exit from LPM3

or LPM4. Therefore, SMCLK exceeds the programmed frequency of operation on exit

from LPM3 and LPM4 for up to 6 us. The increased frequency has the potential to

change the expected timing behavior of peripherals that select SMCLK as the clock

source.

Workaround - Use XT2 as the SMCLK oscillator source instead of the DCO. (This cannot work since it doesn’t look like this MSP430F6779A supports XT2, no pins assigned) 

or

- Do not disable the clock request bit for SMCLKREQEN in the Unified Clock System

Control 8 Register (UCSCTL8). This means that all modules that depend on SMCLK to

operate successfully should be halted or disabled before entering LPM3 or LPM4. If the

increased frequency prevents the proper function of an affected module, wait 32, 48, 80,

or 100 cycles for core voltage levels 0, 1, 2, or 3, respectively, before re-enabling the

module [for example, __delay_cycles(100)]. This cannot work, because when the scheduler has no tasks to run, it goes into LPM3 mode and an interrupt wakes up the processor. We are also communicating with CC2564 module at 115200 baud over UART. Each bit is about 8.6 micro seconds. Waiting for 100 delay cycles at MCLK=16 MHz is about 6.25 micro-secs. Considering interrupt latency, we are concerned that we may miss bytes/interrupts.


They considered using ACLK as source for UART baud rate generator, but ACLK can support only 32768 Hz and this may not be sufficient to generate 115200 baud.

Thanks,

Brian

 

  • Hi Brian,

    Another workaround that is implied but not mentioned is simply to use LPM2 - LPM2 is not listed in the errata text (only LPM3 and LPM4) - it could be an option if your power budget can allow for the extra current consumption.

    However, I am wondering if PMM12 might not be the problem you are running into. We have recently released an application note Solutions to Common eUSCI and USCI Serial Communication Issues on MSP430 MCUs http://www.ti.com/lit/pdf/slaa734. Section 3.2 Approaches to Using UART With Low-Power Modes discusses how you can have problems with fast UART communications waking from LPM3 mode because of the DCO wakeup time causing you to miss the beginning of your received data. It suggests that your options then are to either use a different LPM mode with a faster wake-time, using a different baud rate, using dummy bytes from your host for the first byte to wake the MCU, or to use a GPIO to wake the device before the transmission. I don't know if any of these would be options for you? The app note provides more detailed descriptions of each.

    Regards,
    Katie

  • Hi Brian,

    Did this help? Were any of these options working for the customer?

    Regards,
    Katie

**Attention** This is a public forum