串行外設(shè)接口 (spi) 總線是一個工作在全雙工模式下的同步串行數(shù)據(jù)鏈路。它可用于在單個主控制器和一個或多個從設(shè)備之間交換數(shù)據(jù)。其簡單的實施方案只使用四條支持?jǐn)?shù)據(jù)與控制的信號線(圖 1):
雖然表1中的引腳名稱來自摩托羅拉開發(fā)的spi標(biāo)準(zhǔn),但具體的spi端口名稱往往與圖1中所示的不同。

圖 1:基本 spi 總線
表 1:spi 引腳名稱分配

spi 數(shù)據(jù)速率一般在1到70mhz的范圍內(nèi),字長為從8位及12位到這兩個值的倍數(shù)。
數(shù)據(jù)傳輸一般由數(shù)據(jù)交換構(gòu)成。在主控制器向從設(shè)備發(fā)送數(shù)據(jù)時,從設(shè)備也向主控制器發(fā)送數(shù)據(jù)。因此主控制器的內(nèi)部移位寄存器和從設(shè)備都采用環(huán)形設(shè)置(圖 2)。

圖2:雙移位寄存器形成一個芯片間的環(huán)形緩存器
在數(shù)據(jù)交換之前,主控制器和從設(shè)備會將存儲器數(shù)據(jù)加載至它們的內(nèi)部移位寄存器。收到時鐘信號后,主控制器先通過mosi線路時鐘輸出其移位寄存器的msb。同時從設(shè)備會讀取位于simo的主控器第一位元,將其存儲在存儲器中,然后通過somi時鐘輸出其msb。主控制器可讀取位于miso的從設(shè)備第一位元,并將其存儲在存儲器中,以便后續(xù)處理。整個過程將一直持續(xù)到所有位元完成交換,而主控器則可讓時鐘空閑并通過/ss 禁用從設(shè)備。
除設(shè)置時鐘頻率外,主控制器還可根據(jù)數(shù)據(jù)配置時鐘極性和相位。這兩個分別稱為cpol與cpha的選項可實現(xiàn)時鐘信號180度的相移以及半個時鐘周期的數(shù)據(jù)延遲。圖3是相應(yīng)的定時圖。

圖3:時鐘極性與相位的定時圖
cpol = 0 時,時鐘空閑在邏輯 0 位置上:
如果cpha = 0,數(shù)據(jù)在sck的上升沿讀取,在下降沿變化。
如果cpha=1,數(shù)據(jù)在sck的下降沿讀取,在上升沿變化。
cpol= 1 時,時鐘在邏輯為高時空閑:
如果cpha =0,數(shù)據(jù)在sck的下降沿讀取,在上升沿變化。
如果cpha= 1,數(shù)據(jù)在sck的上升沿讀取,在下降沿變化。
在spi中,主控制器可與單個或多個從設(shè)備通信。如果是一個單從設(shè)備,從設(shè)備選擇信號可連接至從設(shè)備的本地接地電位,實現(xiàn)永久接入。對使用多個從設(shè)備的應(yīng)用,可使用兩種配置:獨立從設(shè)備與菊花鏈從設(shè)備(圖4)。

圖4:主控制器與獨立從設(shè)備(左)及菊花鏈從設(shè)備通信(右)
要與從設(shè)備單獨通信,主控制器必須提供多重從設(shè)備選擇信號。該配置通常用于必須單獨訪問多個模數(shù)轉(zhuǎn)換器(adc)及數(shù)模轉(zhuǎn)換器(dac)的數(shù)據(jù)采集系統(tǒng)中。
菊花鏈從設(shè)備只需要主控制器提供一個從設(shè)備選擇信號,因為這種配置要求所有從設(shè)備同時啟用,以確保數(shù)據(jù)不間斷地流經(jīng)該鏈路中的所有移位寄存器。典型應(yīng)用是工業(yè)i/o 模塊中的級聯(lián)多通道輸入串行器與輸出驅(qū)動器。










