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.

CCS/MSP430F233: MSP430F233 UART RX Errrors

Part Number: MSP430F233

Tool/software: Code Composer Studio

I have two boards (both with MSP430F233 chips) that I am trying to communicate with over UART.  I have flashed one of my boards to transmit a continuous stream of data (32-bits long), and my second board is receiving the data.  Both UARTS are configured at a baud rate of 115200, and my DCO is set 8 MHz with SMCLK enabled.  I have tried reading the contents of the RX Buffer and every time I read the buffer I notice that the UCOE, UCFE, and UCRXERR error flag is raised within my debug session.  I know that this means that the data isn't being read in quick enough, which is causing for my last couple bytes of data to be overwritten and corrupted.  I am sort of new to programming these particular MCUs are there any good solutions which could fix this error and clear the UCOE error when read?

Thanks! 

  • Hi Gabriel,
    I would suggest that you confirm each part separately using an adapter and a terminal software like putty.
    This will make it easier to track the problem.
  • I've got my code to read a stream of data by increasing my array size to try and overcome the overrun errors. I'm able to successfully read a stream of data on my RX board, but when I toggle switches, and get a new stream of data my values don't update within my RX board code. I have my TX board flashed to change with the switch toggles, but I was wondering if there would be a way in my main loop of RX board code to call my RX ISR multiple times to continuously read the new data being sent through. I've verified with an oscope that new data is coming in.

    #pragma vector=USCIAB0RX_VECTOR
    __interrupt void USCI0RX_ISR(void)
    {
    if(a < 8)
    {
    Read_RX_Buffer[a++] = UCA0RXBUF; // Read and store RX Buffer contents
    }
    else
    {
    for(x = 0; x < 7; x++)
    {
    if(Read_RX_Buffer[x] == 'first_byte_of_stream')
    {
    // store values
    }
    }
    x = 0; // Reset Array counter
    }
    IFG2 &= ~UCA0RXIFG; // Clear RX IFG
    }
  • > x = 0; // Reset Array counter
    Typo alert: I suspect you meant:
    > a = 0; // Reset Array counter
  • Hi Gabriel,
    Were you ever able to get your issue resolved?
    If your RX interrupt is enabled, then it the ISR should be called when ever it receives a new transmission. Please check to see that your interrupt is enabled.

**Attention** This is a public forum