SPI規范(Serial Peripheral interface)
SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便,正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議,比如P89LPC900。
SPI,是一種高速的,全雙工,同步的通信總線,其工作模式有兩種:主模式和從模式,無論那種模式,都支持?3Mbit/s的速率,并且還具有傳輸完成標志和寫沖突保護標志。SPI接口主要由4個引腳構成:SPICLK、MOSI、MISO及/SS,其中SPICLK是整個SPI總線的公用時鐘,MOSI、MISO作為主機,從機的輸入輸出的標志,MOSI是主機的輸出,從機的輸入,MISO是主機的輸入,從機的輸出。/SS?是從機的標志管腳,在互相通信的兩個SPI總線的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。在一個SPI通信系統中,必須有主機。
SPI總線可以配置成單主單從,單主多從,互為主從。今以互為主從模式作為講解:
要進行SPI互為主從操作,必須遵照以下步驟:
1 對A、B進行初始化,均設為主機(需要進行以下操作)。
- SPI端口初始化為準雙向。
- SPCTL配置為0x50,SSIG=0,SPEN=1,MSTR=1。
- 清除SPSTAT中的SPIF及WCOL標志位為0。
- 如果需要使用SPI中斷,可使能相應中斷位。
2 將A上一個引腳連接到B的/SS引腳上,然后拉低/SS,可將B強行置為從機模式,同時B機會發生以下變化:
- B機的MSTR位自動清0。
- B機的MOSI及SPICLK強行變為輸入模式,MISO則變為輸出模式。
- B機SPIF位置位。
- 如果SPI中斷使能,B機將執行SPI中斷服務程序。
3 B機可設置為查詢接收或中斷接收方式,以時刻準備接收由A機發送過來的數據,要使B機恢復為主機,必須完整執行步驟1。 本示例中,通過兩塊DP932 實驗板構成了SPI互為主從測試系統。
程序中應注意的問題:
1 程序中應注意對首次拉低SS引腳進行處理:當A機首次通過B_SS將B機設置為從機后,從機的SBIF位會置位(會被認為完成一次傳輸),如果這之前,使能了SPI中斷,則從機則會執行相應的中斷服務程序(本示例程序中,當B機的SS引腳被拉為低電平,B機的SBIF首次置位進行處理)。
2 關于從機恢復為主機的問題:互為主從模式中,當B機被A機設置為從機后,CPCTL寄存器中MSTR位被清除為0,且SPIF被置1,MOSI和SPICLK強制變為輸入模式,MISO強制變為輸出模式。要想恢復為主機,必須執行以下操作:
- 將MSTR位置1,SPIF位清0。
- 將MOSI,SPICLK,MISO及SS重新恢復為準雙向口。
- 在a)、b)之前,需要注意將B_SS拉高,如果其一直為低電平,即使完成a)、b)操作,也會將B機重新設置為從機。
3 在SPI總線的使用過程中,可以通過DORD(SPI數據順序選擇位),CPOL(SPI時鐘極性選擇位),CPHA( SPI時鐘相位選擇位)控制主/從機傳輸格式。對于本實驗,可以忽略這些位的影響,但是在使用一些其他SPI器件時,必須根據從器件數據手冊的要求,對SPI數據的傳輸順序,SPI的時鐘極性,及SPI的時鐘相位進行正確的設置。
4 一些SPI的應用系統,由于硬件的設計并不是很合理,所以有時SPI通信不正常(傳輸數據出錯,或其他情況),你可以試著降低SPI總線的傳輸速率,或者調節一些SPI時鐘極性及相位,以使傳輸穩定。
相關閱讀:
- 通訊協議
- RS-422與RS-485串行接口標準
- PS/2 協議 中英文對照版
- 國際智能卡標準ISO7816-1234中文
- Lin 規范
- TCP/IP 協議族
- P87LPC76X 的編程規范
- I2S 規范及其介紹
聲明:本站部分內容根據互聯網資料整理而成,若侵犯您的權益,請聯系我們,我們會盡快處理。








