Transcript USCI-SPI

[0102] Lecture 13
USCI-SPI
(Universal Serial Communication Interface)
 UCA 與UCB Module皆支援SPI Mode
(Synchronous Peripheral Interface)
 UCA Module在Synchronous Mode下即工作
在SPI Mode
 一般的SPI 有一個Master裝置和一個Slave 裝
置
SPI
SPI
 SPI的傳輸動作類似UART
 將8-bit(7-bit) data存入TXBUF後,即
由模組傳送出去
 8-bit(7-bit)data由模組接受後,存放在
RXBUF中
 Master 與Slave 皆配備有RXBUF和
TXBUF
SPI
SPI
 SPI Mode的傳輸中,Bit-rate由Master
裝置決定,並提供BitCLK給Slave裝
置使用
 SPI 與UART不同的是,傳輸只能由
Master 發起
 Master在將資料存入TXBUF後,便會
開始SPI 模組的傳輸,並輸出BitCLK
給Slave
SPI
SPI
 Slave使用來自Master的時脈訊號,接
收來自Master傳送的data,並將
TXBUF(Slave)的data傳出
 Slave裝置將data存入TXBUF後並不能
立即送出,data會在TXBUF中等候,
直到Master發起傳輸
SPI
BitCLK
 由於Slave裝置的Bit-rate 由Master提
供的BitCLK決定,所以只需要設定
Master的Bit-rate即可
 設定Bit-rate的方法和在UART中一樣,
設定UCA2BR0與UCA2BR1構成
UCA2BR
 𝑓𝐵𝑖𝑡𝐶𝐿𝐾= 𝑆𝑜𝑢𝑟𝑐𝑒 𝐶𝐿𝐾 𝑈𝐶𝐴2𝐵𝑅
 由使用手冊得知,UCAx模組工作在
SPI mode時,UCA2MCTL不需使用,
設值為零
SPI
SPI Interrupt
 SPI 模組和UART一樣,RXIFG和
TXIFG共享一個中斷向量
 由UCA2IV的值,反映發起中斷的訊
號源為何
SPI
SPI-Bus
 SPI 通訊介面分別有3-Pin 與4-Pin兩
種模式
 3-Pin 模式的SPI-Bus 共有CLK、
SIMO、SOMI三條連線
 4-Pin 模式則多了一條STE line
 STE(Slave Transmit Enable) 是讓Slave
裝置也能夠發起傳輸,令一組SPI介
面允許一個以上的Master角色
SPI
SPI-Bus
 CLK pin 用來傳遞Master的BitCLK訊
號給Slave
 SIMO pin用於Master 輸出資料給
Slave接收
 SOMI pin用於Slave 輸出資料給
Master接收
 MSP430EVM設置了UCA2的腳
位供我們使用
SPI
SPI-Bus
 由電路圖可知UCA2的腳位配置
SPI
SPI-Bus
 接出的腳位位於圖中紅圈處
SPI
SPI-Bus
 以導線連接相應的Pin腳
SPI
SPI-Bus
 特別注意導線於排針上須確實連接
SPI
UCAx模組設定
 UCAx的部分設定需要在模組暫停時
才能變更,因此在設定前,我們需要
以UCSWRT 軟體暫停功能先暫停
UCA模組的活動。
 待設定完成後,再清除UCSWRST bit
讓系統就緒。
 系統就緒後即可開始由Master發起傳
輸
SPI
UCAxCTL0
 UCMST: Master Mode
0b= Slave mode
1b= Master mode
 UCMODEx: When UCSYNC = 1
00b= 3-pin SPI
01b、10b for 4-pin SPI
SPI
UCAxCTL0
 UCSYNC: Synchronous
0b= Asynchronous
1b= Synchronous
SPI
UCAxCTL1
 UCSSELx: Clock source select
00b = Reserved
01b = ACLK
10b = SMCLK
11b = SMCLK
SPI
UCAxCTL1
 UCSWRT: Software Reset(Default=1)
通訊模組的軟暫停,許多設定必須在通訊模
組暫停的情況下才能更動,預設是1。
0b = 通訊模組啟動
1b = 通訊模組暫停
SPI
UCAxBR0
 UCBRx: Bit-rate prescaler(Bit7-Bit0)
Bit-rate 預除器的Low byte 設定,加上
UCAxBR1 × 256的值成為UCBRx,用來設
定Bit-rate 和Source clock的關係。
SPI
UCAxBR1
 UCBRx: Bit-rate prescaler(Bit15-Bit8)
Bit-rate 預除器的High byte 設定,加上
UCAxBR0的值成為UCBRx,用來設定Bitrate 和Source clock的關係。
SPI
UCAxMCTL
 Bit7-0 : Reserved
SPI
UCAxSTAT
 UCLISTEN: Listen enable
0b = Disabled
1b = Enabled. UCAxTXD 會把資料傳到
receiver.
 UCFE: Framing Error flag.
 UCOE: Overrun Error flag
SPI
UCAxSTAT
 UCBUSY: USCI Busy
0b = USCI inactive
1b = USCI transmitting or receiving
SPI
UCAxRXBUF
 UCRXBUFx: Receive data Buffer
外部傳入的資料會暫存於此,RXBUFx在收
到資料後會升起UCRXIFG;讀取RXBUFx會
清除UCRXIFG.
 在7-bit 模式下MSB會一直為0。
SPI
UCAxTXBUF
 UCTXBUF: Transmit data Buffer
將要傳出的資料存放於此。Master一旦將要
傳輸的資料放置於此,傳輸模組即開始傳送,
同時寫入資料到TX buffer 會清除UCTXIFG
 Slave 寫入資料到TX buffer會清楚UCTXIFG,
但資料會在TX buffer中等待
Master 發起通訊
SPI
UCAxIE
 UCTXIE: Transmit interrupt enabled
 UCRXIE: Receive interrupt enabled
SPI
UCAxIFG
 UCTXIFG: Transmit interrupt Flag
UCTXIFG 會在 TX buffer 清空時升起
 UCRXIFG: Receive interrupt Flag
UCRXIFG 會在讀取完一個完整字節後升起
SPI
UCAxIV
 UCAxIV: Interrupt Vector
反映 Interrupt source,
02b = UCRXIFG; Higher Priority
04b = UCTXIFG; Lower Priority
Example
範例1
 利用UCA2模組,設定在SPI模式,配置成
Master裝置
 利用UCA2STAT中的UCLISTEN bit 設定Self
echo
 Bit-rate 設定為9600bps
 傳送一個byte的資料給自己接收
 範例程式下載
Exercise
練習1
 兩人一組
 撰寫一個SPI傳輸程式
 一個人撰寫Master程式,一個人撰寫Slave程
式
 Bit-rate 9600bps
 以Key pad 控制,傳輸5個不同字
元給對方
Exercise
練習1
 Master 傳輸的訊息為小寫a~e
 Slave 傳輸的訊息為大寫A~E
 將資料放入TXBUF後切換D1狀態
 RXBUF收到資料後切換D2狀態
 將收到的資料顯示在LCM上
Exercise
練習2
 角色互換
 原本做Master 端的人改寫成Slave端程式
 原本做Slave端的人改寫成Master端程式
 嚴禁板子互換
Exercise
Reference Code
 Master端程式
 Slave端程式
Exercise
 完成後,找到專案裡面的source file,以附
檔形式寄到 [email protected],並在
主旨中註明姓名、系級與學號,
source檔名稱請利於辨識。
EX:
 主旨:
微處理機實習 LAB3 王大明 電機碩二 7101064123
Appendixes
附件
 LCD.h
 附件下載