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