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