嵌入式系統(tǒng)可使用一個(gè)或多個(gè)處理器或微控制器,在更復(fù)雜的系統(tǒng)中執(zhí)行專用操作。這些嵌入式控制器需要與其他系統(tǒng)元件、傳感器甚至其他控制器進(jìn)行通信。雖然復(fù)雜的串行接口和協(xié)議很常見,但可能很難進(jìn)行編程和故障排除,特別是在與之通信的設(shè)備數(shù)量較少時(shí)尤其如此。
設(shè)計(jì)人員需要具有簡單的設(shè)備到設(shè)備數(shù)字接口的微控制器、外設(shè)和傳感器,以便可以高速處理任意長度的數(shù)據(jù),并且省去與協(xié)議相關(guān)的復(fù)雜編程任務(wù)。
簡單的解決方案是選擇帶有串行外設(shè)接口 (SPI) 的控制器,這樣可將控制器連接到一些本地的外設(shè) IC 或傳感器。這種接口是一種簡單的同步接口,使用硬件尋址并以高達(dá) 50 兆赫茲 (MHz) 的時(shí)鐘速率運(yùn)行。SPI 不使用需要尋址和狀態(tài)檢查的復(fù)雜協(xié)議,相反,它是適用于快速數(shù)據(jù)傳輸?shù)幕窘涌冢瑹o需復(fù)雜接口總線的編程開銷。
本文將介紹 SPI 接口的基礎(chǔ)知識(包括多種工作模式),然后介紹具有 SPI 接口的微控制器和其他設(shè)備,并且說明如何使用 SPI 接口。
什么是 SPI?
SPI 是由摩托羅拉(現(xiàn)為 NXP Semiconductors 公司的一部分)于 1985 年前后開發(fā),是一種適用于短距離、設(shè)備到設(shè)備通信的同步串行接口。從那時(shí)起,這種接口就已成為許多半導(dǎo)體制造商,特別是微處理器和微控制器采用的事實(shí)標(biāo)準(zhǔn)。
SPI 之所以廣受歡迎,是因?yàn)樗泻芏鄡?yōu)點(diǎn)。首先,SPI 是一種簡單的硬件尋址接口,在傳輸?shù)奈粩?shù)方面具有全面的靈活性。該接口采用具有單個(gè)主設(shè)備的主從模型,可使用以高達(dá) 50 MHz 時(shí)鐘速率運(yùn)行的全雙工通信來處理多個(gè)從設(shè)備。它不使用標(biāo)準(zhǔn)協(xié)議,僅傳輸數(shù)據(jù)包,因此非常適合傳輸長數(shù)據(jù)流。
SPI 最多可使用四條信號線(圖 1)。主設(shè)備(通常是處理器或控制器)為時(shí)鐘 (SCK) 和片選 (CS) 信號線供電并進(jìn)行控制。全多工操作由數(shù)據(jù)線“主出從入 (MOSI)”和“主入從出 (MISO)”進(jìn)行處理。在簡單的單主單從配置中,可以省去片選信號線,并將從設(shè)備的 CS 輸入強(qiáng)制作為啟用的邏輯條件。如果從設(shè)備只能發(fā)送數(shù)據(jù)(半雙工通信),那么還可以省去 MOSI 線,進(jìn)一步減少信號計(jì)數(shù)。數(shù)據(jù)按時(shí)鐘信號輸出,這樣數(shù)據(jù)傳輸類似于移位寄存器,每個(gè)時(shí)鐘移出一位。
?
?
圖 1:基本 SPI 全雙工連接使用兩條數(shù)據(jù)線(MOSI、MISO)、一條時(shí)鐘線 (SCK) 和一條片選線 (CS)。從設(shè)備上的 MOSI 有時(shí)標(biāo)記為從設(shè)備數(shù)據(jù)輸入 (SDI)。MISO 可標(biāo)記為從設(shè)備數(shù)據(jù)輸出 (SDO)。(圖片來源:Digi-Key Electronics)
目前有兩種方法可以處理多個(gè)從設(shè)備(圖 2)。
??
圖 2:兩種處理多個(gè)從設(shè)備連接的配置。直接連接方式下每個(gè)從設(shè)備需要一個(gè)片選信號。菊花鏈連接方式僅使用一個(gè)片選信號,并將所有數(shù)據(jù)集中在一條線上。(圖片來源:Digi-Key Electronics)
直接連接方式下每個(gè)從設(shè)備使用一條片選信號線。大多數(shù)微處理器都有三到四條片選線,這就將從設(shè)備的最大數(shù)量限制為片選線的數(shù)量。這在多數(shù)情況下不會出現(xiàn)問題,但如果某個(gè)設(shè)計(jì)需要總線上有更多的設(shè)備,這時(shí)可以使用菊花鏈方法配置一些設(shè)備。通過菊花鏈,多個(gè)從設(shè)備可使用一個(gè)共用的片選信號,而數(shù)據(jù)則通過共用數(shù)據(jù)線流出。這里再次將 SPI 從設(shè)備用作移位寄存器,來自從設(shè)備的數(shù)據(jù)可以在串行多路復(fù)用流中傳播。
SPI 時(shí)鐘模式
由主設(shè)備控制并生成時(shí)鐘。時(shí)鐘的兩個(gè)屬性分別是時(shí)鐘極性 (CPOL) 和時(shí)鐘相位 (CPHA)。這些屬性控制從設(shè)備相對數(shù)據(jù)進(jìn)行計(jì)時(shí)的有效時(shí)鐘邊沿。CPOL = 0 時(shí),將時(shí)鐘設(shè)為在邏輯 0 位置空閑。CPOL = 1 時(shí),時(shí)鐘在邏輯 1 位置空閑。CPHA = 0 時(shí),數(shù)據(jù)在上升沿計(jì)時(shí),CPHA = 1 時(shí),數(shù)據(jù)在下降沿計(jì)時(shí)(圖 3)。
?
?
圖 3:SPI 時(shí)鐘模式選擇確定了進(jìn)行數(shù)據(jù)采樣的有效時(shí)鐘邊沿。(圖片來源:Digi-Key Electronics)
主設(shè)備中的 CPOL 和 CPHA 線路設(shè)置決定了時(shí)鐘極性以及進(jìn)行數(shù)據(jù)計(jì)時(shí)的有效邊沿。模式 1 是最常用的模式,但設(shè)計(jì)人員同樣可以使用其他三種模式。
在示波器上可以觀察 SPI 傳輸?shù)娜齻€(gè)信號分量(圖 4)。在此示例中,傳輸?shù)氖?8 位數(shù)據(jù)包。用于觀察數(shù)據(jù)傳輸?shù)氖?Teledyne LeCroy 的 HDO4104A 示波器及其 SPI 串行解碼選件。
??
圖 4:在 Teledyne LeCroy 的 HDO4104A 示波器(配有串行解碼選件)上查看的 SPI 互換示例。波形如下:上面的軌跡是數(shù)據(jù)線,中間的軌跡是時(shí)鐘,底部的軌跡是片選信號。數(shù)據(jù)軌跡上的藍(lán)色覆蓋區(qū)顯示的是十六進(jìn)制解碼內(nèi)容。(圖片來源:Digi-Key Electronics)
模式 1 時(shí)鐘由八脈沖組組成,其中空閑設(shè)置為 0 位 (CPOL = 0),數(shù)據(jù)在后沿或下降沿 (CPHA = 1) 計(jì)時(shí)。本示例中使用的示波器配有串行解碼選件,用于對數(shù)據(jù)內(nèi)容進(jìn)行解碼。在數(shù)據(jù)軌跡上的藍(lán)色覆蓋區(qū)讀出十六進(jìn)制的數(shù)據(jù)內(nèi)容。解碼僅與片選信號線被斷言(0 電平)時(shí)發(fā)生的數(shù)據(jù)有關(guān)。總共有 17 個(gè)時(shí)鐘猝發(fā),但只有其中 5 個(gè)猝發(fā)對應(yīng)有效片選狀態(tài)。
波形顯示柵格下方的表格中列出了有效數(shù)據(jù)內(nèi)容,還有每個(gè)數(shù)據(jù)包相對于示波器觸發(fā)器的時(shí)間以及測量的時(shí)鐘速率(本例中的速率為 100 kb/s)。每個(gè)猝發(fā)中的時(shí)鐘周期數(shù)可設(shè)定從設(shè)備按時(shí)鐘輸出的數(shù)據(jù)位數(shù)。
微處理器 I/O 選擇
Microchip Technology 的 ATtiny816-MNR 是多種微控制器的典型代表,因?yàn)樗С侄鄠€(gè) I/O 接口(圖 5)。這款特別的控制器采用高性能、低功耗的 AVR?RISC 架構(gòu),運(yùn)行頻率高達(dá) 200 MHz。該控制器可由 4 或 8 KB 閃存、256 或 512 字節(jié)的 SRAM 以及 128 字節(jié)的 EEPROM 進(jìn)行支持,所有這些存儲器均集成在一個(gè) 20 引腳封裝內(nèi)。
??
圖 5:Microchip Technology 的 ATtiny816 微控制器框圖突出顯示了 I/O 端口。該控制器配有一個(gè) SPI 端口和一個(gè) USART 端口,其中 USART 端口可配置為第二個(gè) SPI。(圖片來源:Microchip Technology)
此微控制器的接口側(cè)配有一個(gè)通用同步和異步收發(fā)器 (USART)、一個(gè) I2C 兼容型雙線接口 (TWI) 和 SPI。USART 可配置為第二個(gè) SPI 端口。
SPI 可使 AVR 設(shè)備和外圍設(shè)備之間,或幾個(gè)微控制器之間實(shí)現(xiàn)全雙工通信。SPI 外設(shè)可以配置為主設(shè)備或從設(shè)備,從而實(shí)現(xiàn)微控制器之間的通信。
基于 SPI 的傳感器
各種通過 SPI 提供數(shù)字?jǐn)?shù)據(jù)的傳感器可以與集成了 SPI 的大量微處理器和微控制器配套使用。例如,Microchip Technology 的 TC77-3.3MCTTR 數(shù)字溫度傳感器是一種可串行訪問的數(shù)字溫度傳感器,適用于小外形尺寸、低成本的應(yīng)用。TC77 的溫度范圍為 -55°C 至 +125°C。該傳感器采用 2.7 V 至 5.5 V 電源,運(yùn)行時(shí)消耗 250 微安 (μA) 電流,并具有僅消耗 1μA 電流的低功耗關(guān)斷模式。
在典型應(yīng)用中,此傳感器可通過標(biāo)準(zhǔn) SPI 連接與處理器相連,其溫度數(shù)據(jù)可格式化為 13 位數(shù)字值,如圖 6 所示。
??
圖 6:Microchip Technology 的 TC77 是一款易于使用的溫度傳感器,不僅外形小巧,而且成本低廉。此溫度傳感器可以快速連接到控制器或處理器,將溫度讀數(shù)轉(zhuǎn)換為 13 位數(shù)字值。如時(shí)序圖所示,通過將 CS 信號線斷言為邏輯 0 可啟動通信。(圖片來源:Microchip Technology)
該圖顯示了 T77 溫度寄存器讀取操作的時(shí)序圖。通過斷言 CS 信號線并將其置于邏輯 0,可以啟動通信。然后,傳感器會發(fā)送第一位數(shù)據(jù)。微控制器在 SCK 的上升沿讀取數(shù)據(jù)。隨后使用 SCK 的下降沿輸出傳感器的其余數(shù)據(jù)。與前面的示例一樣,此圖也是模式 1 傳輸,只不過數(shù)據(jù)字較長。
擴(kuò)大 SPI 的使用范圍
除了在許多微處理器和微控制器中包含 SPI 之外,一些 IC 制造商還增強(qiáng)了該總線的功能。Analog Devices 的 LTC6820 isoSPI 隔離式通信接口就是個(gè)很好的例子。該 IC 為使用差分信號并通過一條雙絞線連接進(jìn)行通信的兩個(gè) SPI 設(shè)備提供電流隔離(圖 7)。盡管時(shí)鐘速率比 10 米距離時(shí)的 1 Mb/s 標(biāo)稱速率有所降低,但這種信號模式將 LTC6820 SPI 接口的可用范圍延長到遠(yuǎn)達(dá) 100 米 (m)。
??
圖 7:一對 LTC6820 隔離器在兩個(gè) SPI 設(shè)備之間提供電流隔離。該 IC 在 10 米距離支持高達(dá) 1 Mb/s 的數(shù)據(jù)傳輸速率,在最遠(yuǎn) 100 米的距離內(nèi),時(shí)鐘速率有所降低。(圖片來源:Analog Devices)
隔離由脈沖變壓器提供,這種技術(shù)通常用于工業(yè)網(wǎng)絡(luò)應(yīng)用以及讀取遠(yuǎn)程傳感器。
結(jié)語
SPI 解決了一些應(yīng)用中對簡單、低成本、低開銷接口的需求。在這些應(yīng)用中,可將源描述為數(shù)據(jù)流,而不是將數(shù)據(jù)讀寫到地址位置。這一特性使之成為處理微控制器和傳感器、數(shù)字化儀、數(shù)字信號處理設(shè)備以及其他處理器之間的設(shè)備到設(shè)備通信的理想選擇。
評論
查看更多