幾十年來(lái)使用的三種最常見的多線串行數(shù)據(jù)傳輸格式是I2C,UART和SPI。本文著眼于串行外設(shè)接口(SPI)總線,該總線已擺脫了顯式的標(biāo)準(zhǔn)化,因此在實(shí)現(xiàn)協(xié)議之前,請(qǐng)始終檢查要使用的集成電路的數(shù)據(jù)表。
能力和特點(diǎn)
串行外圍設(shè)備接口總線使用四個(gè)數(shù)據(jù)線在主設(shè)備和從設(shè)備之間提供全雙工同步通信。
基本主從配置
串行外設(shè)接口允許將數(shù)據(jù)位從主設(shè)備移出到從設(shè)備中,同時(shí),還可以將位從從設(shè)備移出到主設(shè)備中。
動(dòng)畫1顯示了數(shù)據(jù)從Microchip A移入Microchip B,又從Microchip B移入MicrochipA。
動(dòng)畫2顯示了兩個(gè)微芯片之間SPI事務(wù)的虛擬4通道示波器軌跡。由馬克·休斯(Mark Hughes)用Mathematica創(chuàng)建
由于SPI尚未標(biāo)準(zhǔn)化,因此可能會(huì)遇到先傳輸最高有效位(MSb)或最低有效位(LSb)的情況。檢查設(shè)備的數(shù)據(jù)表并相應(yīng)地設(shè)置數(shù)據(jù)處理例程。如果您使用的是Arduino,則可以參考此頁(yè)面以獲取有關(guān)配置SPI端口的信息。
時(shí)鐘極性和相位
時(shí)鐘轉(zhuǎn)換控制數(shù)據(jù)的移位和采樣。SPI具有四種模式(0、1、2、3),分別對(duì)應(yīng)四種可能的時(shí)鐘配置。
在時(shí)鐘周期的上升沿采樣的位在時(shí)鐘周期的下降沿移出,反之亦然。
當(dāng)從選擇線被驅(qū)動(dòng)至邏輯低電平(從選擇通常為低電平有效信號(hào))時(shí),每個(gè)事務(wù)開始。從選擇線,數(shù)據(jù)線和時(shí)鐘線之間的確切關(guān)系取決于如何配置時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)。
在時(shí)鐘極性不變的情況下(即,當(dāng)從器件選擇轉(zhuǎn)換為邏輯低電平時(shí),時(shí)鐘處于邏輯低電平):
模式0:配置時(shí)鐘相位,以便在時(shí)鐘脈沖的上升沿采樣數(shù)據(jù),并在時(shí)鐘脈沖的下降沿移出數(shù)據(jù)。這對(duì)應(yīng)于上圖中的第一個(gè)藍(lán)色時(shí)鐘軌跡。注意,數(shù)據(jù)必須在時(shí)鐘的第一個(gè)上升沿之前可用。
模式1:配置時(shí)鐘相位,以便在時(shí)鐘脈沖的下降沿采樣數(shù)據(jù),并在時(shí)鐘脈沖的上升沿移出數(shù)據(jù)。這對(duì)應(yīng)于上圖中的第二條藍(lán)色時(shí)鐘軌跡。
在時(shí)鐘極性反轉(zhuǎn)的情況下(即,當(dāng)從器件選擇轉(zhuǎn)換為邏輯低電平時(shí),時(shí)鐘處于邏輯高電平):
模式2:配置時(shí)鐘相位,以便在時(shí)鐘脈沖的下降沿采樣數(shù)據(jù),并在時(shí)鐘脈沖的上升沿移出數(shù)據(jù)。這對(duì)應(yīng)于上圖中的第一個(gè)橙色時(shí)鐘軌跡。注意,數(shù)據(jù)必須在時(shí)鐘的第一個(gè)下降沿之前可用。
模式3:配置時(shí)鐘相位,以便在時(shí)鐘脈沖的上升沿采樣數(shù)據(jù),并在時(shí)鐘脈沖的下降沿移出數(shù)據(jù)。這對(duì)應(yīng)于上圖中的第二個(gè)橙色時(shí)鐘軌跡。
關(guān)鍵參數(shù)
CLK:串行時(shí)鐘。由主設(shè)備控制。每個(gè)時(shí)鐘周期都會(huì)移出一個(gè)新的數(shù)據(jù)位。
SSN:從機(jī)選擇(“ N”將其標(biāo)識(shí)為低電平有效信號(hào))。由主設(shè)備控制。激活的從設(shè)備選擇線指示主機(jī)正在向相應(yīng)的從設(shè)備發(fā)送數(shù)據(jù)或從其請(qǐng)求數(shù)據(jù)。
MOSI:主輸出?從輸入。數(shù)據(jù)離開主設(shè)備并進(jìn)入從設(shè)備。芯片A上的MOSI線連接到芯片B上的MOSI線。
MISO:主機(jī)輸入?從機(jī)輸出。數(shù)據(jù)離開從設(shè)備并進(jìn)入主設(shè)備(或以菊花鏈配置的另一個(gè)從設(shè)備;請(qǐng)參閱下一節(jié))。芯片A上的MISO線連接到芯片B上的MISO線。
CPOL:時(shí)鐘極性。這支配時(shí)鐘信號(hào)的初始邏輯狀態(tài)。有關(guān)更多信息,請(qǐng)參考上一節(jié)。
CPHA:時(shí)鐘相位。這支配了數(shù)據(jù)轉(zhuǎn)換和時(shí)鐘轉(zhuǎn)換之間的關(guān)系。有關(guān)更多信息,請(qǐng)參考上一節(jié)。
從選擇和菊花鏈
多從選擇配置
在標(biāo)準(zhǔn)的SPI安排中,主設(shè)備可以通過(guò)啟用設(shè)備(即,將相應(yīng)設(shè)備的從選擇線設(shè)置為邏輯低電平)向共享公共數(shù)據(jù)線的單個(gè)設(shè)備寫入數(shù)據(jù)或向其請(qǐng)求數(shù)據(jù)。注意不要同時(shí)啟用多個(gè)從站,因?yàn)榉祷氐街髡镜臄?shù)據(jù)將由于MISO線之間的驅(qū)動(dòng)程序爭(zhēng)用而損壞。某些應(yīng)用程序不需要將數(shù)據(jù)返回給主服務(wù)器;在這種情況下,如果主機(jī)希望將相同的數(shù)據(jù)發(fā)送到多個(gè)從機(jī),則可以同時(shí)尋址多個(gè)從機(jī)。
在多從站選擇配置中,每個(gè)從站都需要來(lái)自主站的唯一從站選擇線。如果主站沒(méi)有足夠的I / O引腳來(lái)滿足所需數(shù)量的從站,則可以通過(guò)合并解碼器/多路分解器來(lái)實(shí)現(xiàn)I / O擴(kuò)展,例如74HC(T)238(PDF)(3至8行)解碼器/解復(fù)用器)。
菊花鏈配置
在此配置中,數(shù)據(jù)從一臺(tái)設(shè)備移動(dòng)到另一臺(tái)設(shè)備。最終的從設(shè)備可以將數(shù)據(jù)返回給主設(shè)備。
在菊花鏈配置中,所有從機(jī)共享一條公共的從機(jī)選擇線。數(shù)據(jù)從主機(jī)轉(zhuǎn)移到第一個(gè)從機(jī),然后從第一個(gè)從機(jī)轉(zhuǎn)移到第二個(gè),依此類推。數(shù)據(jù)沿線級(jí)聯(lián)直至該系列中的最后一個(gè)從機(jī),然后可以使用其MISO線將數(shù)據(jù)發(fā)送到主設(shè)備。
這種配置非常適合節(jié)日期間流行的可單獨(dú)尋址的LED燈串。
結(jié)論
串行外設(shè)接口已經(jīng)存在了數(shù)十年,沒(méi)有理由期望它會(huì)很快消失。雖然I2C和UART可能會(huì)更受歡迎,但SPI是一種通用且直接的串行通信接口,非常適合某些應(yīng)用。
fqj
-
SPI
+關(guān)注
關(guān)注
17文章
1688瀏覽量
91215 -
串行數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
0文章
4瀏覽量
6814
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論