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