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通訊測試軟體
 附件下載