2012 SPI,是英語(yǔ)Serial Peripheralinterface的縮寫(xiě),顧名思義就是串行外圍設(shè)備接口。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議,比如P89LPC900.
SPI,是一種高速的,全雙工,同步的通信總線,其工作模式有兩種:主模式和從模式,無(wú)論那種模式,都支持
3Mbit/s的速率,并且還具有傳輸完成標(biāo)志和寫(xiě)沖突保護(hù)標(biāo)志。到目前為止,我使用過(guò)的具有SPI總線的器件,就是存儲(chǔ)芯片Eprom:at25128,在使用過(guò)程中,發(fā)現(xiàn)的確是有這種總線的優(yōu)點(diǎn)。下面以P89LPC900單片機(jī)的SPI總線來(lái)解釋SPI總線的通用使用規(guī)則。
LPC900單片機(jī)的SPI接口主要由4個(gè)引腳構(gòu)成:SPICLK、MOSI、MISO及/SS,其中SPICLK是整個(gè)SPI總線的公用時(shí)鐘,MOSI、MISO作為主機(jī),從機(jī)的輸入輸出的標(biāo)志,MOSI是主機(jī)的輸出,從機(jī)的輸入,MISO是主機(jī)的輸入,從機(jī)的輸出。/SS
是從機(jī)的標(biāo)志管腳,在互相通信的兩個(gè)SPI總線的器件,/SS管腳的電平低的是從機(jī),相反/SS管腳的電平高的是主機(jī)。在一個(gè)SPI通信系統(tǒng)中,必須有主機(jī)。
SPI總線可以配置成單主單從,單主多從,互為主從。今以互為主從模式作為講解:
要進(jìn)行SPI互為主從操作,必須遵照以下步驟: 1對(duì)A、B進(jìn)行初始化,均設(shè)為主機(jī)(需要進(jìn)行以下操作)。
a)SPI端口初始化為準(zhǔn)雙向。
b)SPCTL配置為0x50,SSIG=0,SPEN=1,MSTR=1。
c)清除SPSTAT中的SPIF及WCOL標(biāo)志位為0。
d)如果需要使用SPI中斷,可使能相應(yīng)中斷位。
2將A上一個(gè)引腳連接到B的/SS引腳上,然后拉低/SS,可將B強(qiáng)行置為從機(jī)模式,同時(shí)B機(jī)會(huì)發(fā)生以下變化:
a)B機(jī)的MSTR位自動(dòng)清0。
b)B機(jī)的MOSI及SPICLK強(qiáng)行變?yōu)檩斎肽J?,MISO則變?yōu)檩敵瞿J健?nbsp;
c) B機(jī)SPIF位置位。
d)如果SPI中斷使能,B機(jī)將執(zhí)行SPI中斷服務(wù)程序。
3B機(jī)可設(shè)置為查詢接收或中斷接收方式,以時(shí)刻準(zhǔn)備接收由A機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù),要使B機(jī)恢復(fù)為主機(jī),必須完整執(zhí)行步驟1。本示例中,通過(guò)兩塊DP932實(shí)驗(yàn)板構(gòu)成了SPI互為主從測(cè)試系統(tǒng)。
程序中應(yīng)注意的問(wèn)題:
1程序中應(yīng)注意對(duì)首次拉低SS引腳進(jìn)行處理:當(dāng)A機(jī)首次通過(guò)B_SS將B機(jī)設(shè)置為從機(jī)后,從機(jī)的SBIF位會(huì)置位(會(huì)被認(rèn)為完成一次傳輸),如果這之前,使能了SPI中斷,則從機(jī)則會(huì)執(zhí)行相應(yīng)的中斷服務(wù)程序(本示例程序中,當(dāng)B機(jī)的SS引腳被拉為低電平,B機(jī)的SBIF首次置位進(jìn)行處理)。
2關(guān)于從機(jī)恢復(fù)為主機(jī)的問(wèn)題:互為主從模式中,當(dāng)B機(jī)被A機(jī)設(shè)置為從機(jī)后,CPCTL寄存器中MSTR位被清除為0,且SPIF被置1,MOSI和SPICLK強(qiáng)制變?yōu)檩斎肽J?,MISO強(qiáng)制變?yōu)檩敵瞿J?。要想恢?fù)為主機(jī),必須執(zhí)行以下操作:
a)將MSTR位置1,SPIF位清0。
b)將MOSI,SPICLK,MISO及SS重新恢復(fù)為準(zhǔn)雙向口。
c)在a)、b)之前,需要注意將B_SS拉高,如果其一直為低電平,即使完成a)、b)操作,也會(huì)將B機(jī)重新設(shè)置為從機(jī)。
3在SPI總線的使用過(guò)程中,可以通過(guò)DORD(SPI數(shù)據(jù)順序選擇位),CPOL(SPI時(shí)鐘極性選擇位),CPHA(SPI時(shí)鐘相位選擇位)控制主/從機(jī)傳輸格式。對(duì)于本實(shí)驗(yàn),可以忽略這些位的影響,但是在使用一些其他SPI器件時(shí),必須根據(jù)從器件數(shù)據(jù)手冊(cè)的要求,對(duì)SPI數(shù)據(jù)的傳輸順序,SPI的時(shí)鐘極性,及SPI的時(shí)鐘相位進(jìn)行正確的設(shè)置。
4一些SPI的應(yīng)用系統(tǒng),由于硬件的設(shè)計(jì)并不是很合理,所以有時(shí)SPI通信不正常(傳輸數(shù)據(jù)出錯(cuò),或其他情況),你可以試著降低SPI總線的傳輸速率,或者調(diào)節(jié)一些SPI時(shí)鐘極性及相位,以使傳輸穩(wěn)定。