天津大學微機原理第8章SPI_第1頁
天津大學微機原理第8章SPI_第2頁
天津大學微機原理第8章SPI_第3頁
天津大學微機原理第8章SPI_第4頁
天津大學微機原理第8章SPI_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第8章 串行外圍接口SPI原理及應用第1節(jié) SPI及模式第2節(jié) SPI管腳及相關寄存器第3節(jié) SPI用于多機通訊第4節(jié) SPI在系統(tǒng)擴展中的應用第1節(jié) SPI及模式SPI串行外設接口總線 SPI(Serial Peripheral Interface串行外設接口)總線是Motorola公司推出的一種同步串行外設接口,它用于MCU與各種外圍設備以串行方式進行通信(8位數(shù)據(jù)同時同步地被發(fā)送和接收),系統(tǒng)可配置為主或從操作模式。外圍設備包括簡單的TTL移位寄存器(用作并行輸入或輸出口)至復雜的LCD顯示驅動器或A/D轉換器等。 SPI系統(tǒng)可直接與各個廠家生產(chǎn)的多種標準外圍器件直接接口,它只需4條線:

2、 串行時鐘線(SCK)、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOSI和低電平有效的從機選擇線CS(SS)。 在SPI接口中,數(shù)據(jù)的傳輸只需要1個時鐘信號和2條數(shù)據(jù)線。 由于SPI系統(tǒng)總線只需34位數(shù)據(jù)線和控制線即可擴展具有SPI的各種I/O器件,而并行總線擴展方法需8根數(shù)據(jù)線、816位地址線、23位控制線,因而SPI總線的使用可以簡化電路設計,省掉了很多常規(guī)電路中的接口器件,提高了設計的可靠性。1. SPI總線系統(tǒng)的組成 圖8-1是SPI總線系統(tǒng)典型結構示意圖。圖8-1 SPI外圍擴展示意圖 單片機與外圍擴展器件在時鐘線SCK、數(shù)據(jù)線MOSI和MISO上都是同名端相連。帶

3、SPI接口的外圍器件都有片選端CS。 在擴展多個SPI外圍器件(如圖8-1所示)時,單片機應分別通過I/O口線來分時選通外圍器件。 當SPI接口上有多個SPI接口的單片機時,應區(qū)別其主從地位,在某一時刻只能由一個單片機為主器件。 圖8-1中MCU(主)為主器件,MCU(從)為從器件。 SPI有較高的數(shù)據(jù)傳送速度,主機方式最高速率可達1.05 Mb/s,目前不少外圍器件都帶有SPI接口。 在大多數(shù)應用場合中,使用1個MCU作為主機,控制數(shù)據(jù)向1個或多個從外圍器件的傳送。 從器件只能在主機發(fā)命令時,才能接收或向主機傳送數(shù)據(jù)。 其數(shù)據(jù)的傳輸格式大多是高位(MSB)在前,低位(LSB)在后。 當SPI

4、工作時,在移位寄存器中的數(shù)據(jù)逐位從輸出引腳(MOSI)輸出(高位在前),同時從輸入引腳(MISO)接收的數(shù)據(jù)逐位移到移位寄存器(高位在前)。 發(fā)送一字節(jié)后,從另一個外圍器件接收的字節(jié)數(shù)據(jù)進入移位寄存器中。 主SPI的時鐘信號(SCK)使傳輸同步。 SPI總線有以下主要特性: 全雙工、3線同步傳輸;主機或從機工作;提供頻率可編程時鐘;發(fā)送結束中斷標志;寫沖突保護;總線競爭保護等。其典型時序圖如圖8-2所示。圖8-2 SPI串行總線典型時序圖單片機管腳模擬SPI接口的方法以便深入理解SPI時序1) 用一般I/O口線模擬SPI操作 對于沒有SPI接口的單片機來說,可使用軟件來模擬SPI的操作,包括串

5、行時鐘、數(shù)據(jù)輸入和輸出。 對于不同的串行接口外圍芯片,它們的時鐘時序是不同的。 對于在SCK的上升沿輸入(接收)數(shù)據(jù)和在下降沿輸出(發(fā)送)數(shù)據(jù)的器件(slave) 圖8-3為MCU與MCM2814(E2PROM)的硬件連接圖。圖8-3 SPI總線接口原理圖PTBD2PTBD0PTBD3PTBD1QG8管腳模擬SPI輸入一字節(jié)-C語言#define PTBD0 SCK;定義輸出#define PTBD1MISO;定義輸入#define PTBD2MOSI;定義輸出unsigned char SPI_IN(void)unsigned char i, data; data = 0;SCK = 1;時

6、鐘輸出為1for(i=0;i8;i+)SCK = 0 /時鐘輸出為0,產(chǎn)生下降沿下降沿輸入數(shù)據(jù)下降沿輸入數(shù)據(jù)_asm nop;等待數(shù)據(jù)穩(wěn)定等待數(shù)據(jù)穩(wěn)定_asm nop;SCK = 1 /使時鐘輸出為1if(MISO) data += (1(7-i);/實際編程時需注意?時間不能超過1.05Mbps或更低return data;第2節(jié) SPI管腳及相關寄存器很多單片機都有專門的SPI控制器,以及專門的管腳,不過這些管腳一般是功能復用,需要進行設置。有了專用的控制器后,不需要進行時序的模擬,數(shù)據(jù)的通信變得相對簡單很多,剩下的只是操作相應的配置、狀態(tài)、控制、數(shù)據(jù)寄存器而已。編程就是玩寄存器。QG8的

7、SPI管腳 一種同步串行通信模式,3線或4線系統(tǒng)連接QG8的SPI特點1、主從模式可選2、全雙工或單線模式可選3、可編程波特率4、收發(fā)雙緩沖5、時鐘相位與極性可選6、從機片選輸出7、高或低位在前傳送模式可選。波特率計算速度由Master決定,但要了解Slave的性能:支持的模式與速度寄存器 SPI Control Register 1 (SPIC1)7-SPIESPI中斷(針對SPRF和MODF標志)允許該位為“1”允許中斷。SPRFSPI receive buffer full,接收滿標志;MODFmode fault events,模式故障標志;6-SPESPI模塊允許模塊允許 如果該位設

8、置為“0”,將禁止SPI模塊,導致正在進行中的數(shù)據(jù)傳輸終止、清除數(shù)據(jù)緩沖區(qū)、復位內(nèi)部狀態(tài)機、清除SPRF標志、置位SPTEF標志以指示發(fā)送緩沖區(qū)空。5-SPTIESPI發(fā)送中斷允許發(fā)送中斷允許針對”發(fā)送緩沖區(qū)空標志” SPTEF,“1”允許中斷。4-MSTR主從模式選擇主從模式選擇Master/Slave Mode Select,“0”選擇slave。3-CPOLClock Polarity 時鐘極性時鐘極性“0” 選擇時鐘空閑時為低電平;“1”時鐘空閑高。2-CPHAClock Phase時鐘相位時鐘相位 “0”時,時鐘的第一個“沿”位于第一數(shù)據(jù)位的中間,第一個沿就采樣數(shù)據(jù);“1”時,時鐘的

9、第一個“沿”位于第一數(shù)據(jù)位的開頭,第二個沿才采樣數(shù)據(jù);1-SSOESlave Select Output Enable 該位與MSTR以及SPIC2寄存器的 (MODFEN) 位共同決定SS管腳的行為;0-LSBFELSB First (Shifter Direction)“1”時低位在前;“0”時高位在前;時鐘模式時鐘模式SS的用法總線沖突檢測功能:總線沖突檢測功能:當管腳 SS 作為總線沖突指示用時(此時MSTR = 1, MODFEN = 1且SSOE = 0).當一個主器件的SS管腳變?yōu)榈蜁r,意味著還有其它Master器件試圖將該主器件作為Slave來控制,此時產(chǎn)生總線沖突事件, 標志

10、位MODF被置“1”(讀SPIS然后寫然后寫SPIC1清除該位),且被控制器件將更改模式為Slave(MSTR位被清除),用戶程序必須保證總線沖突解除才能重新恢復器件為主模式。對于Slave模式,SS管腳一定作為片選輸入用;對于Master模式,SS管腳是否被SPI控制,取決于MODFEN,當該位為“1”表示SS被SPI使用,但其功能由SSOE決定,SSOE為“1”時,SS作為片選輸出;SSOE為“0”時SS作為總線沖突指示輸入。寄存器 SPI Control Register 2 (SPIC2)4-MODFENMaster Mode-Fault Function Enable,總線沖突檢測使

11、能,對于Slave模式該位無意義,只有在Master模式下,該位決定SS管腳是否起作用;參見前面。3-BIDIROEBidirectional Mode Output Enable 只有單線雙向傳輸模式啟用只有單線雙向傳輸模式啟用SPC0 = 1時,時,該位才有意義。在單線模式下該位才有意義。在單線模式下BIDIROE位決定模塊的輸出驅動是否啟用。 0-輸出驅動禁止,對應管腳作為輸入使用。1-對應管腳作為輸出。“對應管腳” 是指主模式的MOSI (MOMI)或者從模式的MISO(SISO)管腳。1-SPISWAISPI Stop in Wait Mode:0-wait模式下時鐘繼續(xù)運行,1-當

12、MCU進入等待模式時時鐘停止。0-SPC0SPI Pin Control 0 SPC0位選擇單線雙向傳輸模式。對于從模式(位選擇單線雙向傳輸模式。對于從模式(MSTR = 0),),模塊使用模塊使用MISO (SISO)用于單線傳輸.對于主模式,模塊使用MOSI (MOMI)進行單線傳輸。當SPC0 = 1時,BIDIROE 用于啟動單線模式的輸出驅動。0-模塊使用獨立的管腳進行數(shù)據(jù)傳輸;1-啟用單線模式。寄存器SPI Baud Rate Register (SPIBR)寄存器SPI Status Register (SPIS)7-SPRFSPI Read Buffer Full FlagSP

13、RF用于指示一次數(shù)據(jù)傳輸完成,可以從用于指示一次數(shù)據(jù)傳輸完成,可以從SPID讀取輸入的數(shù)據(jù)了。讀SPIS然后讀取SPID可清除該標志位。0-接收緩存區(qū)無可用數(shù)據(jù);1-接收緩沖區(qū)收到新的數(shù)據(jù)。5-SPTEFSPI Transmit Buffer Empty Flag發(fā)送數(shù)據(jù)緩沖區(qū)空標志,讀發(fā)送數(shù)據(jù)緩沖區(qū)空標志,讀SPIS然后寫然后寫SPID可可清除該標志位。清除該標志位。SPTEF=1之后必須先讀SPIS,然后采用寫SPID,否則寫入失敗。在SPTIE允許時,該位可以產(chǎn)生中斷。在SPI空閑時,對SPID寫入的數(shù)據(jù)會很快(2個bus cycles)倒入移位寄存器,允許立刻寫入第二個要發(fā)送的數(shù)據(jù)給SPID.0- SPI發(fā)送緩沖區(qū)不空;1- SPI發(fā)送緩沖區(qū)空。4-MODFMaster Mode Fault Flag 當當SPI被配置成主模式時,從模式選擇(被配置成主模式時,從模式選擇(slave select input)管腳變低,導致)管腳變低,導致MODF被置位。該位作為總線沖突指示,只有在被置位。該位作為總線沖突指示,只有在MSTR = 1, MODFEN = 1, a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論