2011-08-24 107 views
0

我的UART配置爲4800baud速率,我無法使用下面粘貼的UART代碼接收NMEA語句(GPS評估板)。單獨的GPS +終端和UART +終端工作正常。但GPS + UART,我永遠不能接收任何語句 GPS默認buad率是4800UART無法接收GPS NMEA語句

任何想法,我哪裏出錯了UART?

/** 
* uart default at 4800 ACLK= 32.768KHz 
* @4800 bps 
*/ 

    void UART_default(void){ 
    P3SEL = BIT3+BIT4;       
    UCA0CTL1 |= UCSWRST;      
    UCA0CTL1 |= UCSSEL_1;      
    UCA0BR0 = 0x06;       
    UCA0BR1 = 0x00;       
    UCA0MCTL |= UCBRS_6+UCBRF_0;    
    UCA0CTL1 &= ~UCSWRST;      
    UCA0IE |= UCRXIE;       
} 

#pragma vector=USCI_A0_VECTOR 
__interrupt void USCI_A0_ISR(void) 
{ 
    volatile char byte; 
    switch(__even_in_range(UCA0IV,4)) 
    { 
    case 0:break;        // Vector 0 - no interrupt 
    case 2:    
    byte= UCA0RXBUF; 
    if (byte == '\r') { 
      push_char(byte);     // At end of Data transmission 
      ptr = 0; 
     } 
    else{      
      push_char(byte); 
       ptr++; 
     } 
    break; 
    case 4:break;           
    default: break; 
    }  
} 
+0

一些問題可以縮小問題的可能性:您是否驗證過GPS正在發送數據? RX線上的邏輯分析儀是否看到有效的4800bps數據?你能接收數據輪詢UART而不是使用中斷嗎? –

+0

我也會問你怎麼知道你沒有收到這些信息 - 你是如何測試的,你是如何處理這些信息的? push_char()做什麼以及ptr如何在代碼的其餘部分中使用? – tinman

回答

0

您是否嘗試用USB電腦代替GPS <→UART轉換器? 這可以驗證MSP430中的波特率設置以及接收內容的能力。