Transcript USCI-UART
[1226] Lecture 12 USCI (Universal Serial Communication Interface) USCI 傳輸協定包含UART、SPI以及I2C MSP430F5438中的USCI模組分別支援USCI 的傳輸協定 EX: 支援UART的USCI模組以UCA命名, 支援I2C的USCI模組以UCB命名 UCA UCAx 若是MSP430晶片中支援一組以上的 UCA模組,則再加上數字,成為 UCAx,x=0,1,2… UCAx模組提供了USCI-UART Mode UART Mode 的運作是設定了傳輸速 率Baud-rate之後,將要傳輸的字節送 入TXBUF傳出,或自RXBUF讀取收 到的字節 UCA Character Format 傳送的字節以特定的格式傳送 包含有 Start bit = 0 Data bits D0~D6(D7) Parity bit Stop bit(s) = 1 UCA Baud-rate 決定傳輸的速度,需要與傳輸對象有 相同的設定。 常用的設定有9600 與115200 設定Baud-rate需要先以UCSSELx選擇 時脈來源。 知道時脈來源後,參考User’s Guide 中的表34-4,以及表34-5找到對應的 Baud-rate,按照表上的參數設定 UCBRx、UCBRSx和UCBRFx. UCA Baud-rate 以Baud-rate 9600為例: UCA 接收資料 UART在接收資料時,資料會從 USCIAxRXD進來,並存放在 UCAxRXBUF中。 UCAxRXBUF為一個8-bit的暫存器。 接收完完整字節後,便會升起RXIFG, 我們便可以透過RX ISR 將資料讀出, 並儲存到適當的位置 當RXBUF的資料被讀取,RXIFG便 會被reset. UCA 接收資料 RXD的位置 UCA 傳送資料 UART在傳送資料時,將資料存放在 UCAxTXBUF中,UCAx便會將資料 由UCAxTXD傳出去。 UCAxTXBUF為一個8-bit的暫存器。 存入的字節傳送出去後,便會升起 TXIFG,我們便可以藉此知道該字節 是否完成傳出 當TXBUF被寫進資料時,TXIFG便 會被reset. UCA 傳送資料 TXD的位置 UCA UCAx模組設定 UCAx的部分設定需要在模組暫停時 才能變更,因此在設定前,我們需要 以UCSWRT 軟體暫停功能先暫停 UCA模組的活動。 透過暫存器設定偏好的設定(須配合 傳輸對象),包括Stop bit 數量,Parity bit 模式,Baud-rate的四項參數以及 時脈來源等設定。 UCA UCAx模組設定 待設定完成後,再清除UCSWRST bit 讓系統就緒。 系統就緒後即可開始傳送與接收動作 UCA UCAxCTL0 UCPEN: Parity enable 0b= disabled 1b= enabled UCPAR: Parity select. Not used when parity is disabled. 0b= Odd parity 1b= Even parity UCA UCAxCTL0 UCMSB: MSB first select. 0b = LSB first 1b = MSB first UC7BIT: Character length. 0b = 8-bit data 1b = 7-bit data UCA UCAxCTL0 UCSPB: Stop bit select. 0b= One stop bit 1b= Two stop bit UCMODEx: 00b = UART mode 11b = UART mode with automatic baud-rate detection UCA UCAxCTL0 UCSYNC: Synchronous mode enable 0b = Asynchronous mode 1b = Synchronous mode UCA UCAxCTL1 UCSSELx: Clock source select 00b = UCAxCLK(external USCI clock) 01b = ACLK 10b = SMCLK 11b = SMCLK UCA UCAxCTL1 UCSWRT: Software Reset(Default=1) 通訊模組的軟暫停,許多設定必須在通訊模 組暫停的情況下才能更動,預設是1。 0b = 通訊模組啟動 1b = 通訊模組暫停 UCA UCAxBR0 UCBRx: Baud-rate prescaler(Bit7-Bit0) Baud-rate 預除器的Low byte 設定,加上 UCAxBR1 × 256的值成為UCBRx,用來設 定Baud-rate 和Source clock的關係。 UCA UCAxBR1 UCBRx: Baud-rate prescaler(Bit15-Bit8) Baud-rate 預除器的High byte 設定,加上 UCAxBR0的值成為UCBRx,用來設定Baudrate 和Source clock的關係。 UCA UCAxMCTL UCBRFx: First Modulation stage select. UCOS16 = 1b時用來調整BITCLK16使用 UCOS16 = 0b時沒有作用。 UCBRSx: Second Modulation stage select. 用來調整BITCLK,依照需要的Baud-rate 在 User’s Guide參考對應的值 UCA UCAxSTAT UCLISTEN: Listen enable 0b = Disabled 1b = Enabled. UCAxTXD 會把資料傳到 receiver. UCFE: Framing Error flag. UCOE: Overrun Error flag UCPE: Parity Error flag UCA UCAxSTAT UCBRK: Break detect flag. UCRXERR: Receive error flag UCADDR/UCIDLE: for ADDR mode or IDLE mode UCBUSY: UCSI Busy flag. UCA UCAxRXBUF UCRXBUFx: Receive data Buffer 外部傳入的資料會暫存於此,RXBUFx在收 到資料後會升起UCRXIFG;讀取RXBUFx會 清除UCRXERR、UCADDR(UCIDLE) and UCRXIFG. 在7-bit 模式下(2 STOP bits) MSB 會一直為0。 UCA UCAxTXBUF UCTXBUFx: Transmit data Buffer 將要傳出的資料存放於此。一旦將要傳輸的 資料放置於此,傳輸模組即開始傳送,同時 寫入資料到TX buffer 會清除UCTXIFG 在7-bit 模式下(2 STOP bits) MSB 會一直為0且不被使用。 UCA UCAxIE UCTXIE: Transmit interrupt enabled UCRXIE: Receive interrupt enabled UCA UCAxIFG UCTXIFG: Transmit interrupt Flag UCTXIFG 會在 TX buffer 清空時升起 UCRXIFG: Receive interrupt Flag UCRXIFG 會在讀取完一個完整字節後升起 UCA UCAxIV UCAxIV: Interrupt Vector 反映 Interrupt source, 02b = UCRXIFG; Higher Priority 04b = UCTXIFG; Lower Priority Example 範例1 利用RS232訊號線連接PC與MSP430EVM 以RS232通訊測試軟體作為PC端程式 在EVM上收到字節後,將字節Echo back 回 傳到PC端 範例程式下載 Exercise 練習1 撰寫一個UART傳輸程式 No parity bit 8-BIT data One stop bit CLK Source = ACLK Baud-rate = 9600 將來自PC端的資料顯示在LCM上 以Key pad 控制,傳輸5個不同字元到PC端 Exercise 完成後,找到專案裡面的source file,以附 檔形式寄到 [email protected],並在 主旨中註明姓名、系級與學號, source檔名稱請利於辨識。 EX: 主旨: 微處理機實習 LAB3 王大明 電機碩二 7101064123 Appendixes 附件 LCD.h 附件下載 Appendixes 附件 RS232通訊測試軟體 附件下載