SPI協(xié)議及工作原理分析_第1頁
SPI協(xié)議及工作原理分析_第2頁
SPI協(xié)議及工作原理分析_第3頁
SPI協(xié)議及工作原理分析_第4頁
SPI協(xié)議及工作原理分析_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、SPI協(xié)議與工作原理分析一、概述.SPI,SerialPerripheralInterface,串行外圍設(shè)備接口,是Motorola公司推出的一種同步串行接口技術(shù).SPI總線在物理上是通過接在外圍設(shè)備微控制器(PlCmicro)上面的微處理控制單元(MCU)上叫作同步串行端口(SynchronousSerialPort)的模塊(Module)來實現(xiàn)的,它允許MCU以全雙工的同步串行方式,與各種外圍設(shè)備進行高速數(shù)據(jù)通信.SPI主要應用在EEPROM,Flash,實時時鐘(RTC),數(shù)模轉(zhuǎn)換器(ADC),數(shù)字信號處理器(DSP)以與數(shù)字信號解碼器之間.它在芯片中只占用四根管腳(Pin)用來控制以與

2、數(shù)據(jù)傳輸,節(jié)約了芯片的pin數(shù)目,同時為PCB在布局上節(jié)省了空間.正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片上都集成了SPI技術(shù).二、特點1.采用主-從模式(Master-Slave)的控制方式SPI規(guī)定了兩個SPI設(shè)備之間通信必須由主設(shè)備(Master)來控制次設(shè)備(Slave).一個Master設(shè)備可以通過提供Clock以與對Slave設(shè)備進行片選(SlaveSelect)來控制多個Slave設(shè)備,SPI協(xié)議還規(guī)定Slave設(shè)備的Clock由Master設(shè)備通過SCK管腳提供給Slave設(shè)備,Slave設(shè)備本身不能產(chǎn)生或控制Clock,沒有Clock則Slave設(shè)備不能正常工作.2.采

3、用同步方式(Synchronous)傳輸數(shù)據(jù)Master設(shè)備會根據(jù)將要交換的數(shù)據(jù)來產(chǎn)生相應的時鐘脈沖(ClockPulse),時鐘脈沖組成了時鐘信號(ClockSignal),時鐘信號通過時鐘極性(CPOL)和時鐘相位(CPHA)控制著兩個SPI設(shè)備間何時數(shù)據(jù)交換以與何時對接收到的數(shù)據(jù)進行采樣,來保證數(shù)據(jù)在兩個設(shè)備之間是同步傳輸?shù)?3.數(shù)據(jù)交換(DataExchanges)SPI設(shè)備間的數(shù)據(jù)傳輸之所以又被稱為數(shù)據(jù)交換,是因為SPI協(xié)議規(guī)定一個SPI設(shè)備不能在數(shù)據(jù)通信過程中僅僅只充當一個發(fā)送者(Transmitter)或者接收者(Receiver).在每個Clock周期內(nèi),SPI設(shè)備都會發(fā)送并接

4、收一個bit大小的數(shù)據(jù),相當于該設(shè)備有一個bit大小的數(shù)據(jù)被交換了.一個Slave設(shè)備要想能夠接收到Master發(fā)過來的控制信號,必須在此之前能夠被Master設(shè)備進行訪問(Access).所以,Master設(shè)備必須首先通過SS/CSpin對Slave設(shè)備進行片選,把想要訪問的Slave設(shè)備選上.在數(shù)據(jù)傳輸?shù)倪^程中,每次接收到的數(shù)據(jù)必須在下一次數(shù)據(jù)傳輸之前被采樣.如果之前接收到的數(shù)據(jù)沒有被讀取,那么這些已經(jīng)接收完成的數(shù)據(jù)將有可能會被丟棄,導致SPI物理模塊最終失效.因此,在程序中一般都會在SPI傳輸完數(shù)據(jù)后,去讀取SPI設(shè)備里的數(shù)據(jù),即使這些數(shù)據(jù)(DummyData)在我們的程序里是無用的.三

5、、工作機制1.概述SPIDataTransfersnSDCSSPBUFSSPBUFSCKMasterContrcliecSCKSSControllerSlave上圖只是對SPI設(shè)備間通信的一個簡單的描述,下面就來解釋一下圖中所示的幾個組件(Module):SSPBUF,SynchronousSerialPortBuffer,泛指SPI設(shè)備里面的內(nèi)部緩沖區(qū),一般在物理上是以FIFO的形式,保存?zhèn)鬏斶^程中的臨時數(shù)據(jù);SSPSR,SynchronousSerialPortRegister,泛指SPI設(shè)備里面的移位寄存器(ShiftRegitser),它的作用是根據(jù)設(shè)置好的數(shù)據(jù)位寬(bit-width

6、)把數(shù)據(jù)移入或者移出SSPBUF;Controller,泛指SPI設(shè)備里面的控制寄存器,可以通過配置它們來設(shè)置SPI總線的傳輸模式.通常情況下,我們只需要對上圖所描述白四個管腳(pin)進行編程即可控制整個SPI設(shè)備之間的數(shù)據(jù)通彳t:SCK,SerialClock,主要的作用是Master設(shè)備往Slave設(shè)備傳輸時鐘信號,控制數(shù)據(jù)交換的時機以與速率;SS/CS,SlaveSelect/ChipSelect,用于Master設(shè)備片選Slave設(shè)備,使被選中的Slave設(shè)備能夠被Master設(shè)備所訪問;SDO/MOSI,SerialDataOutput/MasterOutSlaveIn,在Mast

7、er上面也被稱為Tx-Channel,作為數(shù)據(jù)的出口,主要用于SPI設(shè)備發(fā)送數(shù)據(jù);SDI/MISO,SerialDataInput/MasterInSlaveOut,在Master上面也被稱為Rx-Channel,作為數(shù)據(jù)的入口,主要用于SPI設(shè)備接收數(shù)據(jù);SPI設(shè)備在進行通信的過程中,Master設(shè)備和Slave設(shè)備之間會產(chǎn)生一個數(shù)據(jù)鏈路回環(huán)(DataLoop),就像上圖所畫的那樣,通過SDO和SDI管腳,SSPSR控制數(shù)據(jù)移入移出SSPBUF,Controller確定SPI總線的通信模式,SCK傳輸時鐘信號2.SCKSDOSDI01D?010ExampleofSPiMode1,1Timin

8、g.NotethatthedataonlychangesonthefallingedgeofSCKandisonlyreadonraisingedgeofSCK.上圖通過Master設(shè)備與Slave設(shè)備之間交換1Byte數(shù)據(jù)來說明SPI協(xié)議的工作機制.首先,在這里解釋一下兩個概念CPOL:時鐘極性,表不SPI在空I時,時鐘信號是高電平還是低電平.若CPOL被設(shè)為1,那么該設(shè)備在空閑時SCK管腳下的時鐘信號為高電平.當CPOL被設(shè)為0時則正好相反. CPHA:時鐘相位,表示SPI設(shè)備是在SCK管腳上的時鐘信號變?yōu)樯仙貢r觸發(fā)數(shù)據(jù)采樣,還是在時鐘信號變?yōu)橄陆笛貢r觸發(fā)數(shù)據(jù)采樣.若CPHA被設(shè)置為1,

9、則SPI 設(shè)備在時鐘信號變?yōu)橄陆笛貢r觸發(fā)數(shù)據(jù)采樣,在上升沿時發(fā)送數(shù)據(jù).當CPHA被設(shè)為0時也正好相反.上圖里的 Mode 1,1說明了本例所使用的SPI數(shù)據(jù)傳輸模式被設(shè)置成CPOL=1,CPHA=1.這樣,在一個Clock周期內(nèi),每的方式,同時發(fā)送和接收1 bit個單獨的SPI設(shè)備都能以全雙工(Full-Duplex)被設(shè)置據(jù),即相當于交換了1bit大小的數(shù)據(jù).如果SPI總線的Channel-Width成Byte,表示SPI總線上每次數(shù)據(jù)傳輸?shù)淖钚挝粸锽yte,那么掛載在該SPI總線的設(shè)備每次數(shù)據(jù)傳輸?shù)倪^程至少需要8個Clock周期(忽略設(shè)備的物理延遲).因此,SPI總線的頻率越快,Cloc

10、k周期越短,則SPI設(shè)備間數(shù)據(jù)交換的速率就越3.SSPSR.SPI Data TransferSDOSD*SDtSDQ5SPBUFSCKControllerControllerMasterssShifter Register1oGdec by SPI da:a bv data -Terr SSPBUF.SSPSRSlaveSSPSR是SPI設(shè)備內(nèi)部的移位寄存器(Shift Register).它的主要作用是根據(jù)SPI時鐘信號狀態(tài),往SSPBUF里移入或者移出數(shù)據(jù),每次移動的數(shù)據(jù)大小由Bus-Width 以與 Channel-Width所決定. Bus-Width的作用是指定地址總線到Maste

11、r設(shè)備之間數(shù)據(jù)傳輸?shù)膯挝焕?,我們想要往Master 設(shè)備里面的SSPBUF 寫入16 Byte 大小的數(shù)據(jù):首先,給Master設(shè)備的配置寄存器設(shè)置 Bus-Width為Byte; 然后往Master 設(shè)備的Tx-Data移位寄存器在地址總線的入口寫入數(shù)據(jù),每次寫入1 Byte 大小的數(shù)據(jù)(使用writeb函數(shù));寫完1 Byte數(shù)據(jù)之后,Master設(shè)備里面的 Tx-Data移位寄存器會自動把從地址總線傳來的Byte 數(shù)據(jù)移入 SSPBUF 里;上述動作一共需要重復執(zhí)行 16次. Channel-Width的作用是指定Master 設(shè)備與Slave設(shè)備之間數(shù)據(jù)傳輸 的單位. 與 Bus-W

12、idth 相 似,Master設(shè)備內(nèi)部的移位寄存器會依據(jù)Channel-Width自動地把數(shù)據(jù)從Master-SSPBUF 里通過Master-SDO 管腳搬運到Slave設(shè)備里的 Slave-SDI引腳,Slave - SSPSR再把每次接收的數(shù)據(jù)移入Slave-SSPBUF 里.通常情況下,Bus-Width總是會大于或等于Channel-Width,這樣能保證不會出現(xiàn)因Master與Slave之間數(shù)據(jù)交換的頻率比地址總線與Master之間的數(shù)據(jù)交換頻率要快,導致SSPBUF里面存放的數(shù)據(jù)為無效4.SSPBUF.都是SPI內(nèi)部移位寄存器從SSPBUF里面拷貝的.我們可以通過往SSPBUF對

13、應的寄存器(Tx-Data/Rx-Dataregister)里讀寫數(shù)據(jù),間接地操控SPI設(shè)備內(nèi)部的SSPBUF.例如,在發(fā)送數(shù)據(jù)之前,我們應該先往Master的Tx-Data寄存器寫入將要發(fā)送出去的數(shù)據(jù),這些數(shù)據(jù)會被Master-SSPSR移位寄存器根據(jù)Bus-Width自動移入Master-SSPBUF里,然后這些數(shù)據(jù)又會被Master-SSPSR根據(jù)Channel-Width從Master-SSPBUF中移出,通過Master-SDO管腳傳給Slave-SDI管腳,Slave-SSPSR則把從Slave-SDI接收到的數(shù)據(jù)移入Slave-SSPBUF里.與此同時,Slave-SSPBUF里面的數(shù)據(jù)根據(jù)每次接收數(shù)據(jù)的大小(Channel-Width),通過Slave-SDO發(fā)往Master-SDI,Master-SSPSR再把從Master-SDI接收的數(shù)據(jù)移入Master-SSPBUF.在單次數(shù)據(jù)傳輸完成之后,用戶程序可以通過從Master設(shè)備的Rx-Data寄存器讀取Master設(shè)備數(shù)據(jù)交換得到的數(shù)據(jù).5.Controller.Master設(shè)備里面的

溫馨提示

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

評論

0/150

提交評論