由于SPI(setial peripheralinterface)總線占用的接口線少,通信效率高,并且支持大部分處理器芯片,因而是一種理想的選擇。SPI是利用4根信號(hào)線進(jìn)行通信的串行接口協(xié)議,包括主/從兩種模式。4個(gè)接口信號(hào)為:串行數(shù)據(jù)輸入(MISO,主設(shè)備輸入、從設(shè)備輸出)、串行數(shù)據(jù)輸出(MOSI,主設(shè)備輸出、從設(shè)備輸入)、移位時(shí)鐘(SCK)、低電平有效的從設(shè)備使能信號(hào)(cs)。SPI的特點(diǎn)是由主設(shè)備時(shí)鐘信號(hào)的出現(xiàn)與否來(lái)確定主/從設(shè)備間的通信。一旦檢測(cè)到主設(shè)備的時(shí)鐘信號(hào),數(shù)據(jù)開(kāi)始傳輸。
SPI是由美國(guó)摩托羅拉公司推出的一種同步串行傳輸規(guī)范,也是一種單片機(jī)外設(shè)芯片串行擴(kuò)展接口。
SPI模式可以允許同時(shí)同步發(fā)送和接收8位數(shù)據(jù),并支持4種工作方式:
1. 串行數(shù)據(jù)輸出,對(duì)應(yīng)RC5/SDO引腳;
2. 串行數(shù)據(jù)輸入,對(duì)應(yīng)RC4/SDI/SDA引腳;
3. 串行時(shí)鐘,對(duì)應(yīng)RC3/SCK/SCL引腳;
4. 從動(dòng)方式選擇,對(duì)應(yīng)RA5/SS/AN4引腳。
SPI模式下與之相關(guān)的寄存器有10個(gè),其中4個(gè)是與I2C模式共用的。
圖1所示是由一個(gè)主機(jī)對(duì)接一個(gè)從機(jī)進(jìn)行全雙工通信的系統(tǒng)構(gòu)成的方式。在該系統(tǒng)中,由于主機(jī)和從機(jī)的角色是固定不變的,并且只有一個(gè)從機(jī),因此,可以將主機(jī)的麗端接高電平,將從機(jī)的SS端固定接地。
圖1 全雙工主機(jī)/從機(jī)連接方法
若干個(gè)具備SPI接口的單片機(jī)和若干片兼容SPI接口的外圍芯片,可以在軟件的控制下,構(gòu)成多種簡(jiǎn)單或者復(fù)雜的應(yīng)用系統(tǒng),例如以下3種。
(1)一個(gè)主機(jī)和多個(gè)從器件的通信系統(tǒng)。
如圖2所示,各個(gè)從器件是單片機(jī)的外圍擴(kuò)展芯片,它們的片選端SS分別獨(dú)占單片機(jī)的一條通用I/O引腳,由單片機(jī)分時(shí)選通它們建立通信。這樣省去了單片機(jī)在通信線路上發(fā)送地址碼的麻煩,但是占用了單片機(jī)的引腳資源。當(dāng)外設(shè)器件只有一個(gè)時(shí),可以不必選通而直接將SS端接地即可。
圖2 一個(gè)主機(jī)擴(kuò)展多個(gè)外圍器件
�。�2)幾個(gè)單片機(jī)互相連接構(gòu)成多主機(jī)通信系統(tǒng)。
圖3所示為3個(gè)既可以當(dāng)做主機(jī)也可以當(dāng)做從機(jī)的單片機(jī)組成的系統(tǒng)。
圖3 多主機(jī)通信系統(tǒng)連接方法
�。�3)主機(jī)、從機(jī)和從器件共同組成的應(yīng)用系統(tǒng)。
圖4所示為一個(gè)主機(jī)、一個(gè)從機(jī)和多片外設(shè)芯片組成的應(yīng)用系統(tǒng)。這些外設(shè)芯片有的只接收來(lái)自單片機(jī)信息,有的只向單片機(jī)提供信息,還有的既接收也發(fā)送信息。
圖4主機(jī)、從機(jī)和從器件互連
SPI主設(shè)各負(fù)責(zé)產(chǎn)生系統(tǒng)時(shí)鐘,并決定整個(gè)SPI網(wǎng)絡(luò)的通信速率。所有的SPI設(shè)各都采用相同的接口方式,可以通過(guò)調(diào)整處理器內(nèi)部寄存器改變時(shí)鐘的極性和相位。由于SPI器件并不一定遵循同一標(biāo)準(zhǔn),比如EEPROM、DAC、ADC、實(shí)時(shí)時(shí)鐘及溫度傳感器等器件的SPI接口的時(shí)序都有所不同,為了能夠滿足不同的接口需要,采用時(shí)鐘的極性和相位可配就能夠調(diào)整SPi的通信時(shí)序。
SPI設(shè)各傳輸數(shù)據(jù)過(guò)程中總是先發(fā)送或接收高字節(jié)數(shù)據(jù),每個(gè)時(shí)鐘周期接收器或收發(fā)器左移1位數(shù)據(jù)。對(duì)于小于16位的數(shù)據(jù)在發(fā)送之前必須左對(duì)齊,如果接收的數(shù)據(jù)小于16位則采用軟件將無(wú)效的數(shù)據(jù)位屏蔽,如圖1所示。
SPI接口有主和從兩種操作模式,通過(guò)MASTER/SLAVE位(SPICTL.2)選擇操作模式以及SPICLK信號(hào)的來(lái)源,如圖2所示。
圖1 SPI通信數(shù)據(jù)格式
圖2 SPI主控制器/從控制器的連接
該模塊針對(duì)用戶不同的應(yīng)用來(lái)設(shè)計(jì),本質(zhì)上就是用戶的具體業(yè)務(wù)應(yīng)用,與SPI-4接口沒(méi)有直接關(guān)系。當(dāng)應(yīng)用支持多個(gè)端口時(shí),這部分就顯得至關(guān)重要。下面以支持兩個(gè)端口的應(yīng)用來(lái)說(shuō)明用戶邏輯的設(shè)計(jì)技巧。
(1)Sink Core的用戶邏輯
端口為兩個(gè)時(shí),用戶邏輯就需要用兩個(gè)不同的FIFO根據(jù)端口的地址等來(lái)分別緩存用戶的兩個(gè)業(yè)務(wù)數(shù)據(jù).同時(shí)根據(jù)FIFO的情況來(lái)發(fā)出流控信息給SP14數(shù)據(jù)接口,如圖1所示。
圖1 Sink Ceore 兩個(gè)端口的用戶邏輯
(2) Source Core的用戶邏輯
當(dāng)端口為兩個(gè)時(shí),用戶邏輯就需要根據(jù)流控信息和兩個(gè)不同的FffiOffJ情況來(lái)做仲裁,諛定哪個(gè)用戶邏輯FIFO需要發(fā)送給SPI4數(shù)據(jù)接口,如圖2所示。
圖2 Source Core2個(gè)端口的用戶邏輯
串行外圍設(shè)備接口(SPI)是由Motorola公司開(kāi)發(fā)的、用來(lái)在微控制器和外圍設(shè)備芯片之間實(shí)現(xiàn)數(shù)據(jù)交換的低成本、易使用接口。與標(biāo)準(zhǔn)的串行接口不同,SPI是一個(gè)同步協(xié)議接口,全雙工通信,所有的傳輸都參照一個(gè)共同的時(shí)鐘,這個(gè)同步時(shí)鐘信號(hào)由主機(jī)產(chǎn)生。接收數(shù)據(jù)的外設(shè)使用時(shí)鐘對(duì)串行比特流的接收進(jìn)行同步化。其傳輸速度可達(dá)幾Mb/s。
SPI主要使用4個(gè)信號(hào):MISO(主機(jī)輸入/從機(jī)輸出)、MOSI(主機(jī)輸出/從機(jī)輸入)、 SCLK(串行時(shí)鐘)、或
(外設(shè)片選或從機(jī)選擇)。
MISO信號(hào)由從機(jī)在主機(jī)的控制下產(chǎn)生。信號(hào)用于禁止或使能外設(shè)的收發(fā)功能。
為高電平時(shí),禁止外設(shè)接收和發(fā)送數(shù)據(jù);
為低電平時(shí),允許外設(shè)接收和發(fā)送數(shù)據(jù)。圖1所示是微處理器通過(guò)SPI與外設(shè)連接的示意圖。
主機(jī)和從機(jī)都有一個(gè)串行移位寄存器,主機(jī)通過(guò)向它的SPI串行寄存器寫(xiě)入一個(gè)字節(jié)來(lái)發(fā)起一次傳輸。寄存器通過(guò)MOSI信號(hào)線將字節(jié)傳送給從機(jī),從機(jī)也將自己的移位寄存器中的內(nèi)容通過(guò)MISO信號(hào)線返回給主機(jī)(如圖2所示)。這樣,兩個(gè)移位寄存器中的內(nèi)容就被交換。外設(shè)的寫(xiě)操作和讀操作是同步完成的。
如果只進(jìn)行寫(xiě)操作,主機(jī)只需忽略接收到的字節(jié);反之,若主機(jī)要讀取從機(jī)的一個(gè)字節(jié),就必須發(fā)送一個(gè)空字節(jié)來(lái)引發(fā)從機(jī)的傳輸。
當(dāng)主機(jī)發(fā)送一個(gè)連續(xù)的數(shù)據(jù)流時(shí),有些外設(shè)能夠進(jìn)行多字節(jié)傳輸。多數(shù)具有SPI接口的存儲(chǔ)芯片就以這種方式工作。在這種傳輸方式下,從機(jī)的片選端必須在整個(gè)傳輸過(guò)程中保持低電平。此時(shí),一次傳輸可能會(huì)涉及到成千上萬(wàn)字節(jié)的信息,而不必在每個(gè)字節(jié)的數(shù)據(jù)發(fā)送的前后都去檢測(cè)其起始位和結(jié)束位,這正是同步傳輸方式優(yōu)于異步傳輸方式的原因所在。
雖然SPI有以上優(yōu)點(diǎn),然而在圖像傳輸中卻很少用到,原因主要是其抗干擾能力差。SPI采用的是單端非平衡的傳輸方式,即傳輸?shù)臄?shù)據(jù)位的電壓電平是以公共地作為參考的。在這種傳輸方式中,對(duì)于已進(jìn)入信號(hào)中的干擾是無(wú)法消除和減弱的。而信號(hào)在傳輸過(guò)程中總會(huì)受到干擾,而且距離越長(zhǎng)干擾越嚴(yán)重,以致于信號(hào)傳輸產(chǎn)生錯(cuò)誤。在這種條件下,信號(hào)傳輸就變得毫無(wú)意義了。另外,由于單端非平衡傳輸方式以公共地作為參考點(diǎn),地線作為信號(hào)回流線,因此也存在信號(hào)電流。當(dāng)傳輸線兩端的系統(tǒng)之間存在交流電位差時(shí),這個(gè)電位差將直接竄到信號(hào)中,形成噪聲干擾。所以,為了解決抗干擾問(wèn)題,通常采用平衡傳輸(balanced transmission)方式,這里采用比較常見(jiàn)的RS-422。
維庫(kù)電子通,電子知識(shí),一查百通!
已收錄詞條51532個(gè)