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

下載本文檔

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

文檔簡介

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

2、數(shù)據(jù)傳輸,節(jié)約了芯片的pin數(shù)目,同時(shí)為PCB在布局上節(jié)省了空間.正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片上都集成了SPI技術(shù).二、特點(diǎn)1.采用主-從模式(Master-Slave)的控制方式SPI規(guī)定了兩個(gè)SPI設(shè)備之間通信必須由主設(shè)備(Master)來控制次設(shè)備(Slave).一個(gè)Master設(shè)備可以通過提供Clock以與對(duì)Slave設(shè)備進(jìn)行片選(SlaveSelect)來控制多個(gè)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è)備會(huì)根據(jù)將要交換的數(shù)據(jù)來產(chǎn)生相應(yīng)的時(shí)鐘脈沖(ClockPulse),時(shí)鐘脈沖組成了時(shí)鐘信號(hào)(ClockSignal),時(shí)鐘信號(hào)通過時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)控制著兩個(gè)SPI設(shè)備間何時(shí)數(shù)據(jù)交換以與何時(shí)對(duì)接收到的數(shù)據(jù)進(jìn)行采樣,來保證數(shù)據(jù)在兩個(gè)設(shè)備之間是同步傳輸?shù)?3.數(shù)據(jù)交換(DataExchanges)SPI設(shè)備間的數(shù)據(jù)傳輸之所以又被稱為數(shù)據(jù)交換,是因?yàn)镾PI協(xié)議規(guī)定一個(gè)SPI設(shè)備不能在數(shù)據(jù)通信過程中僅僅只充當(dāng)一個(gè)發(fā)送者(Transmitter)或者接收者(Receiver).在每個(gè)Clock周期內(nèi),SPI設(shè)備都會(huì)發(fā)送并接

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

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

6、)把數(shù)據(jù)移入或者移出SSPBUF;Controller,泛指SPI設(shè)備里面的控制寄存器,可以通過配置它們來設(shè)置SPI總線的傳輸模式.通常情況下,我們只需要對(duì)上圖所描述白四個(gè)管腳(pin)進(jìn)行編程即可控制整個(gè)SPI設(shè)備之間的數(shù)據(jù)通彳t:SCK,SerialClock,主要的作用是Master設(shè)備往Slave設(shè)備傳輸時(shí)鐘信號(hào),控制數(shù)據(jù)交換的時(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è)備在進(jìn)行通信的過程中,Master設(shè)備和Slave設(shè)備之間會(huì)產(chǎn)生一個(gè)數(shù)據(jù)鏈路回環(huán)(DataLoop),就像上圖所畫的那樣,通過SDO和SDI管腳,SSPSR控制數(shù)據(jù)移入移出SSPBUF,Controller確定SPI總線的通信模式,SCK傳輸時(shí)鐘信號(hào)2.SCKSDOSDI01D?010ExampleofSPiMode1,1Timin

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

9、則SPI 設(shè)備在時(shí)鐘信號(hào)變?yōu)橄陆笛貢r(shí)觸發(fā)數(shù)據(jù)采樣,在上升沿時(shí)發(fā)送數(shù)據(jù).當(dāng)CPHA被設(shè)為0時(shí)也正好相反.上圖里的 Mode 1,1說明了本例所使用的SPI數(shù)據(jù)傳輸模式被設(shè)置成CPOL=1,CPHA=1.這樣,在一個(gè)Clock周期內(nèi),每的方式,同時(shí)發(fā)送和接收1 bit個(gè)單獨(dú)的SPI設(shè)備都能以全雙工(Full-Duplex)被設(shè)置據(jù),即相當(dāng)于交換了1bit大小的數(shù)據(jù).如果SPI總線的Channel-Width成Byte,表示SPI總線上每次數(shù)據(jù)傳輸?shù)淖钚挝粸锽yte,那么掛載在該SPI總線的設(shè)備每次數(shù)據(jù)傳輸?shù)倪^程至少需要8個(gè)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時(shí)鐘信號(hào)狀態(tài),往SSPBUF里移入或者移出數(shù)據(jù),每次移動(dòng)的數(shù)據(jù)大小由Bus-Width 以與 Channel-Width所決定. Bus-Width的作用是指定地址總線到Maste

11、r設(shè)備之間數(shù)據(jù)傳輸?shù)膯挝焕纾覀兿胍鵐aster 設(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移位寄存器會(huì)自動(dòng)把從地址總線傳來的Byte 數(shù)據(jù)移入 SSPBUF 里;上述動(dòng)作一共需要重復(fù)執(zhí)行 16次. Channel-Width的作用是指定Master 設(shè)備與Slave設(shè)備之間數(shù)據(jù)傳輸 的單位. 與 Bus-W

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

13、應(yīng)的寄存器(Tx-Data/Rx-Dataregister)里讀寫數(shù)據(jù),間接地操控SPI設(shè)備內(nèi)部的SSPBUF.例如,在發(fā)送數(shù)據(jù)之前,我們應(yīng)該先往Master的Tx-Data寄存器寫入將要發(fā)送出去的數(shù)據(jù),這些數(shù)據(jù)會(huì)被Master-SSPSR移位寄存器根據(jù)Bus-Width自動(dòng)移入Master-SSPBUF里,然后這些數(shù)據(jù)又會(huì)被Master-SSPSR根據(jù)Channel-Width從Master-SSPBUF中移出,通過Master-SDO管腳傳給Slave-SDI管腳,Slave-SSPSR則把從Slave-SDI接收到的數(shù)據(jù)移入Slave-SSPBUF里.與此同時(shí),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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論