SPI規(guī)范(Serial Peripheral interface)
SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設(shè)備接口。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議,比如P89LPC900。
SPI,是一種高速的,全雙工,同步的通信總線,其工作模式有兩種:主模式和從模式,無論那種模式,都支持?3Mbit/s的速率,并且還具有傳輸完成標(biāo)志和寫沖突保護(hù)標(biāo)志。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 對A、B進(jìn)行初始化,均設(shè)為主機(jī)(需要進(jìn)行以下操作)。
- SPI端口初始化為準(zhǔn)雙向。
- SPCTL配置為0x50,SSIG=0,SPEN=1,MSTR=1。
- 清除SPSTAT中的SPIF及WCOL標(biāo)志位為0。
- 如果需要使用SPI中斷,可使能相應(yīng)中斷位。
2 將A上一個(gè)引腳連接到B的/SS引腳上,然后拉低/SS,可將B強(qiáng)行置為從機(jī)模式,同時(shí)B機(jī)會(huì)發(fā)生以下變化:
- B機(jī)的MSTR位自動(dòng)清0。
- B機(jī)的MOSI及SPICLK強(qiáng)行變?yōu)檩斎肽J?,MISO則變?yōu)檩敵瞿J健?/li>
- B機(jī)SPIF位置位。
- 如果SPI中斷使能,B機(jī)將執(zhí)行SPI中斷服務(wù)程序。
3 B機(jī)可設(shè)置為查詢接收或中斷接收方式,以時(shí)刻準(zhǔn)備接收由A機(jī)發(fā)送過來的數(shù)據(jù),要使B機(jī)恢復(fù)為主機(jī),必須完整執(zhí)行步驟1。 本示例中,通過兩塊DP932 實(shí)驗(yàn)板構(gòu)成了SPI互為主從測試系統(tǒng)。
程序中應(yīng)注意的問題:
1 程序中應(yīng)注意對首次拉低SS引腳進(jìn)行處理:當(dāng)A機(jī)首次通過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ī)的問題:互為主從模式中,當(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健R牖謴?fù)為主機(jī),必須執(zhí)行以下操作:
- 將MSTR位置1,SPIF位清0。
- 將MOSI,SPICLK,MISO及SS重新恢復(fù)為準(zhǔn)雙向口。
- 在a)、b)之前,需要注意將B_SS拉高,如果其一直為低電平,即使完成a)、b)操作,也會(huì)將B機(jī)重新設(shè)置為從機(jī)。
3 在SPI總線的使用過程中,可以通過DORD(SPI數(shù)據(jù)順序選擇位),CPOL(SPI時(shí)鐘極性選擇位),CPHA( SPI時(shí)鐘相位選擇位)控制主/從機(jī)傳輸格式。對于本實(shí)驗(yàn),可以忽略這些位的影響,但是在使用一些其他SPI器件時(shí),必須根據(jù)從器件數(shù)據(jù)手冊的要求,對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)定。
相關(guān)閱讀:
- 通訊協(xié)議
- RS-422與RS-485串行接口標(biāo)準(zhǔn)
- PS/2 協(xié)議 中英文對照版
- 國際智能卡標(biāo)準(zhǔn)ISO7816-1234中文
- Lin 規(guī)范
- TCP/IP 協(xié)議族
- P87LPC76X 的編程規(guī)范
- I2S 規(guī)范及其介紹
聲明:本站部分內(nèi)容根據(jù)互聯(lián)網(wǎng)資料整理而成,若侵犯您的權(quán)益,請聯(lián)系我們,我們會(huì)盡快處理。