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 附件下載