使用序列周邊介面簡化多個元件連接作業的原因及方法
資料提供者:DigiKey 北美編輯群
2019-02-14
嵌入式系統可使用一個或多個處理器或者微控制器,在更複雜的系統中執行專門的操作。這些嵌入式控制器需要與其他系統元件、感測器,甚至其他控制器通訊。常見的複雜型序列介面和協定可能在編程和故障排除上相當困難,特別是在進行通訊之元件數量很少的情況下。
設計人員需要使用配有簡易型「元件對元件」數位介面的微控制器、周邊裝置以及感測器,以便高速處理任意長度的數據,並省去與協定相關的複雜編程任務。
有個簡單的解決方案是選擇配有序列周邊介面 (SPI) 的控制器,如此即可將控制器介接幾個本地的周邊裝置 IC 或感測器。SPI 是採用硬體定址的簡易型同步介面,工作時脈率高達 50 MHz。此介面不使用需要定址和狀態檢查的複雜協定。相反地,這是一種基本型介面,可快速進行數據傳輸,無需複雜的介面匯流排編程作業。
本文將介紹 SPI 介面的基礎知識,包括多種操作模式。然後介紹配有 SPI 介面的微控制器及其他元件,並展示其應用方式。
SPI 是什麼?
SPI 是 Motorola (現隸屬於 NXP Semiconductors) 於 1985 年左右制訂的標準。此同步序列介面的預定用途是進行短距離的元件對元件通訊。從那時候開始,SPI 已成為許多半導體製造商採用的既定標準,特別是微處理器和微控制器產品。
SPI 廣受歡迎的原因在於擁有很多優點。首先,這簡單的硬體定址介面,在可傳輸的位元數上提供極大靈活性。此介面採用具有單一主控元件的主從模式,能在高達 50 MHz 的工作時脈速度下,以全雙工通訊來處理多個從屬元件。SPI 不使用標準協定且只傳輸數據封包,因此非常適合傳輸長數據串流。
SPI 最多使用四條訊號線 (圖 1)。主控元件通常是處理器或控制器,可針對時脈 (SCK) 和晶片選擇 (CS) 線路進行供電與控制。全多工作業則由數據線進行處理,包括主控輸出從屬輸入 (MOSI) 和主控輸入從屬輸出 (MISO)。在簡單的單一主控、單一從屬配置中,無需使用晶片選擇線路,並將從屬元件的 CS 輸入強制變成賦能邏輯狀態。如果從屬元件僅能發送數據 (半雙工通訊),則亦可省去 MOSI 線,進一步減少訊號數。數據按時脈訊號輸出,此數據傳輸方式類似移位暫存器,每個時脈移出一個位元。
圖 1:基本 SPI 全雙工連接採用兩條數據線 (MOSI、MISO)、一條時脈線 (SCK) 和一條晶片選擇線 (CS)。從屬元件上的 MOSI 有時會標示為從屬數據輸入 (SDI)。MISO 可能會標示為從屬數據輸出 (SDO)。(圖片來源:DigiKey)
目前有兩種作法可處理多個從屬元件 (圖 2)。
圖 2:處理多重從屬元件連接的兩種配置。直接連接要求每個從屬元件都有晶片選擇。而菊鏈連接採用單一晶片選擇,並將所有數據都合併在單一條線路上。(圖片來源:DigiKey)
直接連接作法在每個從屬元件上使用晶片選擇線,絕大多數微處理器都有三到四條晶片選擇線。這會將從屬元件的最大數量限制為晶片選擇線的數量。在多數情況下,這不會構成問題,但如果設計要求匯流排上有更多元件,則可以透過菊鏈方式配置一些元件。若採用菊鏈方式,則多個從屬元件會共用一條晶片選擇線,而數據則會在共用的數據線上流出。這裡會再次使用 SPI 從屬元件作為移位暫存器,將來自從屬元件的數據以序列多工串流進行傳遞。
SPI 時脈模式
主控元件會控制並產生時脈。兩個時脈屬性分別是時脈極性 (CPOL) 以及時脈相位 (CPHA),會控制作用時脈緣,從屬元件會藉此進行與數據相對的時脈處理。CPOL = 0 將時脈設定為在邏輯 0 時閒置;CPOL = 1 將時脈設定為在邏輯 1 時閒置;CPHA = 0 讓數據在前緣進行時脈處理,而 CPHA = 1 讓數據在後緣進行時脈處理 (圖 3)。
圖 3:SPI 時脈模式的選擇將會確定執行數據採樣的作用時脈緣。(圖片來源:DigiKey)
主控元件的 CPOL 和 CPHA 線路設定會決定時脈極性,以及進行數據時脈處理的作用緣。最常使用的是模式 1,但設計人員同樣也可使用其他三種模式。
SPI 傳輸的三個訊號組成可在示波器上觀察 (圖 4)。在本例中,傳輸的是八位元數據封包,並採用 Teledyne LeCroy 的 HDO4104A 示波器搭配 SPI 序列解碼選配項目來觀察傳輸作業。
圖 4:在配有序列解碼選配項目的 Teledyne LeCroy HDO4104A 示波器上查看 SPI 互換的例子。相關波形如下:上方跡線是數據線,中間跡線是時脈,下方跡線是晶片選擇。數據跡線的藍色重疊處顯示十六進位的解碼內容。(圖片來源:DigiKey)
模式 1 時脈由多個八脈衝群組組成,其閒置設定為 0 (CPOL = 0),數據在後緣或下降緣 (CPHA = 1) 進行時脈處理。本例使用的示波器配有序列解碼選配項目,可將數據內容解碼。數據內容是在數據跡線的藍色重疊處以 16 進位讀出。僅限晶片選擇線確立 (位準 0) 時所產生的數據才會進行解碼。總共有 17 個時脈突發,但當中僅有 5 個與作用的晶片選擇狀態相對應。
波形顯示網格下的表格列出作用數據內容,還有每個封包相對於示波器觸發的時間,以及測得的時脈率 (在此例中為 100 kbit/s)。每個突發的時脈週期數,可決定從屬元件按時脈輸出的數據位元數。
微處理器 I/O 選擇
Microchip Technology 的 ATtiny816-MNR 支援多種 I/O 介面,是此類微控制器的典型代表 (圖 5)。這種特殊的控制器採用高效能、低功率的 AVR® RISC 架構,而且能以高達 20 MHz 的頻率運行。具有多達 4 或 8 KB 快閃記憶體、256 或 512 位元組 SRAM 和 128 位元組的 EEPROM 支援,皆裝進一個 20 引腳封裝內。
圖 5:Microchip Technology 的 ATtiny816 微控制器方塊圖醒目標示出 I/O 連接埠。此控制器包含一個 SPI 連接埠及一個 USART 連接埠,且後者可設定成第二個 SPI。(圖片來源:Microchip Technology)
從介面的角度來看,此微控制器包含一個通用的同步和非同步接收器發射器 (USART)、一個 I2C 相容的雙線介面 (TWI) 以及 SPI。USART 可設定成第二個 SPI 連接埠。
SPI 可在 AVR 元件與週邊元件之間,或在幾個微控制器之間達到全雙工通訊。SPI 週邊裝置可設定為主控或從屬元件,即可促成微處理器之間的通訊。
基於 SPI 的感測器
有多種感測器可透過 SPI 提供數位數據,能讓採用 SPI 的眾多微處理器和微控制器更臻完備。舉例來說,Microchip Technology 的 TC77-3.3MCTTR 數位溫度感測器,是可進行序列存取的數位溫度感測器,主要適用於小尺寸、低成本的應用。TC77 涵蓋的溫度範圍介於 -55°C 至 +125°C。此感測器採用 2.7 V 至 5.5 V 的電源,於運作時消耗 250 µA,而且可提供僅消耗 1 µA 的低功耗關閉模式。
在典型應用中,溫度感測器會透過標準 SPI 連接方式接至處理器。其溫度數據會以 13 位元的數位字組格式顯示,如圖 6 所示。
圖 6:Microchip Technology 的 TC77 是成本低、使用簡便的小型溫度感測器。此感測器可迅速連接到控制器或處理器,並以 13 位元的數位字組格式傳送溫度讀數。如時序圖所示,將 CS 線確立為邏輯 0 時,便能啟動通訊。(圖片來源:Microchip Technology)
該圖提供 T77 溫度暫存器的讀取作業時序圖。將 CS 線標示成邏輯 0 時,即可啟動通訊。感測器接著會傳送數據的第一個位元。微控制器在 SCK 上升緣讀取數據輸入。然後使用 SCK 的下降緣按時脈輸出感測器的其餘數據。這個模式 1 傳輸與上個例子相似,但具有更長的數據字組。
延伸 SPI 的範圍
除了在眾多微處理器和微控制器中加入 SPI,多家 IC 製造商也加強了匯流排的功能,Analog Devices 的 LTC6820 isoSPI 隔離式通訊介面就是一個良好的例子。此 IC 在兩個 SPI 元件間提供電流隔離,這兩個 SPI 元件使用差動訊號透過一個雙絞線連接進行通訊 (圖 7)。此訊號模式可將 LTC6820 的 SPI 介面可用範圍延長達 100 m,不過時脈率會比 10 m 距離下的 1 Mbit/s 標稱時脈率還要低。
圖 7:一對 LTC6820 隔離器在兩個 SPI 元件之間提供電流隔離。此 IC 能在 10 m 的距離下支援高達 1 Mbit/s 的數據傳輸,當距離拉長至 100 m 時,時脈率會降低。(圖片來源:Analog Devices)
脈衝變壓器可提供隔離作用,這是工業網路應用以及讀取遠端感測器時常用的技巧。
結論
在數據來源可描述為數據串流,而不是為了將位置定址而進行數據讀寫的應用中,SPI 可滿足人們對簡單、低成本以及低開銷介面的需求,因此非常適合在微控制器和感測器、數化器、數位訊號處理元件,以及其他處理器之間處理「元件對元件」通訊。

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。