top of page

【技術文章】深入了解 SPI 協定與 SPI 通訊除錯

SPI 協定概述


SPI 協定是在1980年代中期由Motorola開發的,用於提供電子裝置之間的通訊協定;通常,這種通訊是在電路板、或小型電子裝置上進行的短距離通訊。SPI 是一種簡單的協定,用於在資料傳輸量相對較低的應用中,通常,該協定用於微控制器和感測器之間的通訊,舉個例子:一個運動感應燈當感測器被激活時,它會與處理器進行通訊,然後處理器打開燈,這種通訊很可能是透過 SPI 匯流排進行的,以幾乎即時執行命令;而在資料傳輸速率較高的應用中,需要更快的協定(如乙太網路)來應付更大的資料量。


SPI協定運作原理


SPI 是一種串行協定,需要以下四條線路才能運作:

  1. SCLK(串行時脈):串行時脈訊號從主機裝置傳輸到串行匯流排上的其他裝置。

  2. MOSI(主機輸出,從機輸入):MOSI 線路將資料從主機裝置輸出到串行匯流排上的從機裝置。

  3. MISO(主機輸入,從機輸出):MISO 線路將選定的從機裝置的資料輸出到主機裝置或微控制器上的串行匯流排。

  4. SS(從機選擇):在 SPI 匯流排上,必須有一個主機裝置,但可以有多個從機裝置;主機裝置可以與所有從機裝置進行資料交換,但從機裝置只能將資料發送給主機裝置,而不能相互之間發送。主機裝置使用從機選擇線路,在發送資料傳輸之前,選擇與匯流排上的哪個從機裝置進行通訊。

這些線路中,SCLK、MOSI 和 MISO 是 SPI 匯流排上所有裝置共用的;SCLK 是由主機裝置產生,用於同步;MOSI 和 MISO 線路則是資料傳輸線路;根據它們的名稱,可以判斷傳輸的方向。SPI 是一種全雙工協定,因此在 SPI 中資料始終是雙向傳輸的,但對於只希望傳輸資料的 SPI 裝置來說,可以選擇忽略接收的位元組;同樣地,只對傳入的位元組感興趣的裝置可以傳送虛擬位元組(dummy bytes)。


每個裝置都有自己的 SS 線路,主機裝置將某個從機的 SS 線路拉低,以選擇要進行通訊的裝置,在同一時間,資料傳輸只能在一個從機裝置和主機之間進行。


在單一的 SPI 匯流排上有三個從機裝置,每個從機裝置都需要一個單獨的從機選擇訊號(SS)
在單一的 SPI 匯流排上有三個從機裝置,每個從機裝置都需要一個單獨的從機選擇訊號(SS)


資料本身的交換沒有預先定義的協定,這使得它非常適合於資料串流應用,資料可以以高速進行傳輸,通常在數十兆赫茲 (MHz) 的範圍內;主機只需將某個從機選擇訊號(SS)拉低,表示主機希望與該特定從機裝置進行資料的發送或接收,拉低 SS 線會喚醒從機,並啟動資料的傳輸;然而,SPI 協定中並不存在確認或流量控制,主機甚至可能不知道從機的存在。


對於需要多個從機與主機同時互動的應用來說,SPI 協定並不適合,由於每個從機都有自己與主機相連的線路,通訊速度可以比其他基本協定(如 I2C)更快,但在非同步傳輸 (asynchronous transmission) 資料方面,該協定仍存在不足之處。


SPI被應用在LED燈、顯示器、滑鼠和鍵盤等裝置中
SPI被應用在LED燈、顯示器、滑鼠和鍵盤等裝置中

SPI協定的應用與裝置


使用SPI協定的裝置包括:感測器、記憶體裝置、時鐘、和液晶顯示器等,其他常見的裝置包括:家用和汽車溫度計、車輪胎壓感測器、和影音遊戲控制器。那些能夠快速產生多種不同回應的裝置,通常在SPI匯流排上運作。

DigiKey SPI應用清單中,列出所有Digi-Key上的SPI各種應用
DigiKey SPI應用清單中,列出所有Digi-Key上的SPI各種應用

另一個常見的SPI應用是遊戲控制器,當使用者在控制器上按下按鈕時,預期在遊戲中產生相應的反應,在這裡通常使用的協定是SPI,SPI使開發人員能夠創造一個對玩家來說感覺即時的環境。


快閃記憶體是另一種常見的SPI裝置,SPI協定的速度和主從匯流排設計,使得該協定非常適合用於將資料流式傳輸到快閃記憶體裝置;寫入、讀取和抹除記憶體可以以簡單而快速的方式執行,使得SPI成為快閃記憶體編程的首選協定。

PS4 Dual-Shock控制器 - 這款控制器很可能使用SPI協定來傳遞按鈕的按下訊息
PS4 Dual-Shock控制器 - 這款控制器很可能使用SPI協定來傳遞按鈕的按下訊息

SPI 協定的使用


常見的SPI協定的錯誤和開發問題


SPI是一個很好的協定,用於需要快速、可靠且易於使用的通訊;儘管是最受歡迎的串行協定之一,但它確實存在一些缺點,如上所述。


其中一個最大的問題出現在,需要將多個從機裝置連接到主機時,由於每個單獨的從機裝置在匯流排上都需要有一個從機選擇(SS)線,所以電路板設計可能變得非常複雜;開發人員在設計實施過程中常常遇到這個問題,他們發現原始設計對他們的應用不起作用,因此需要添加其他從機裝置來完成工作,但添加多個新的從機裝置可能會讓事情變得複雜。


在使用SPI時另一個問題是,匯流排上的串音 (cross talk) 或雜訊 (noise),由於匯流排上有多條線路,線路之間存在干擾的可能性很高,這個問題可以透過適當的電路板設計來緩解,但在使用SPI協定時仍然是一個需要注意的常見問題。


SPI協定相對於其他協定的優勢


與其他協定相比,SPI具有許多優勢。其中一些主要優點包括:

  • 比I2C更低的功耗

  • 全雙工通訊

  • 支援多個從裝置

  • 比I2C更快的傳輸速度

  • 實現簡單,協定開銷低

  • 能夠跨越比I2C更長的距離


SPI協定的限制和缺點


SPI的一些主要缺點包括:

  • 沒有流量控制或確認機制

  • 需要比I2C更多的訊號線路

  • 主機必須控制所有通訊,從裝置之間無法互相通訊

  • 當需要多個從裝置時,電路板複雜度增加

  • 由於需要多條線路,可能會有串音的問題


SPI協定除錯工具


在使用SPI時,擁有合適的工具對於確保設計的正確實施非常重要,除了示波器和邏輯分析儀等較昂貴的選擇外,還有一些價格較低的工具可供選擇,其中包括以軟體或硬體為基礎的解決方案。

Photo by Markus Spiske from Pexels
Photo by Markus Spiske from Pexels

在實施和設計SPI匯流排時,示波器是一個很好的輔助工具,示波器能提供對設計的電氣和訊號特性的廣泛洞察;然而,對於一些開發人員來說,示波器可能價格昂貴且難以取得;幸運的是,有一些很好的替代方案,無論是在硬體還是軟體領域。


可用的工具包括主機適配器、燒錄器、協定分析儀(硬體和軟體版本)以及邏輯分析儀等,每個裝置的功能面差異很大。有些工具具備廣泛的功能,而有些則專注於特定任務,例如僅限於燒錄或探測 (sniffing)。


另一點需要注意的是這些工具可支援的作業系統,大多數開發工具需要Windows作業系統;而Total Phase系列工具是真正的跨平台解決方案,包括Aardvark和Cheetah適配器、Beagle分析儀和Promira平台,可在Windows、Linux和Mac OS等主要作業系統上運行;示波器通常不需要電腦系統才能運作,因為它們只是在內建軟體以及在圖形使用者介面上運作與操作。


最新的SPI協定發展


SPI在多年來已經演變出不同的形式並進行了調整,SPI協定最大的進步來自於速度,它超越了I2C所能達到的速度;現在SPI被應用於速度超過100 MHz的應用中,這是因為SPI在技術上並沒有一個明確的速度限制。


目前,該協定可以配置成以幾種不同的格式傳輸資料,包括單線、雙線、和四線SPI;使用更多的I/O進行資料的傳送和接收,資料傳輸速度就越快;雙線和四線SPI是協定的擴充,引入了更多的資料通道,而更多的資料通道代表更快的通訊和資料傳輸速率。


單線SPI (Single SPI)


單線SPI適用於大多數案例,例如快速原型開發、裝置編程和自動化測試;在單線SPI中,SPI以全雙工模式透過MOSI和MISO線雙向傳輸資料。


多線SPI可以透過增加資料線的數量來提高傳輸量。在單線SPI模式下,可以透過發送一個指令位元組來切換到雙線或四線SPI模式,指令位元組將要求以雙線或四線模式回應。

雙線SPI (Dual SPI)


雙線SPI使傳輸速率相比單線SPI提高一倍;MISO和MOSI資料腳位變成單向線路,以半雙工模式每個時脈週期傳輸兩位元;MOSI線變為IO0,MISO線變為IO1。


四線SPI (Quad SPI)


四線SPI與雙線SPI類似,但再次將傳輸量提高一倍;新增了兩條額外的資料線,每個時脈週期傳輸4位元;資料線現在是IO0、IO1、IO2和IO3。


協定持續透過引入八線SPI進行調整,八線SPI可以透過八個I/O進行傳輸,這將使可用通道數量從四線SPI翻倍,表示八線SPI將在SPI匯流排上實現前所未有的速度;在未來的幾年內,我們將看到八線SPI在應用領域中的進一步普及和使用。

八線SPI匯流排配置的示意圖
八線SPI匯流排配置的示意圖

Total Phase SPI 工具


Total Phase 提供了多種與 SPI 協定互連的工具。Total Phase 提供的所有 SPI 工具可分為兩個不同的類別:主機介面適配器和協定分析儀。主機介面適配器允許使用者直接與 SPI 系統進行互連,並編程 SPI 裝置。這些工具允許與 SPI 協定進行互動。而協定分析儀則不像主機介面適配器那樣直接與資料進行互動,而是監控匯流排上正在發生的流量。主機介面適配器允許使用者與資料進行互動,而協定分析儀則允許使用者即時非侵入式監視資料。


Total Phase 主機適配器


Total Phase 提供了多種主機介面適配器,包括 Promira I2C/SPI/eSPI 多用協定分析平台Aardvark I2C&SPI 封包產生器、和 Cheetah SPI 封包產生器;這三種工具都與 SPI 協定互連,主要的區別在於速度和擴展性。


這些工具的主要區別在於速度;Aardvark I2C/SPI 主機適配器可以在最高8 MHz的速度下作為 SPI 主機端,而作為從機端時最高速度可達4 MHz;若需要更高的速度,Promira 平台和 Cheetah 適配器提供了更多選擇;Cheetah SPI 主機適配器可以作為 SPI 主機端,在最高40 MHz的速度下運作,但不支援從機端功能,Cheetah 適配器非常適合 SPI 程式編程應用,因為它具有高速 USB 連接和階段化處理的系統架構 (流水線架構, pipelined architecture),可實現最大傳輸量。而對於最大化的主機端和從機端速度,Promira Serial 平台可以作為 SPI 主機端,在最高80 MHz的速度下運作,並作為從機端在最高20 MHz的速度下運作。

Promira 應用比較圖表
Promira 應用比較圖表

這些工具之間的另一個區別在於它們的功能,這三種工具都可以模擬 SPI 主機端,速度從8 MHz到80 MHz不等;然而,只有 Aardvark 適配器和 Promira 平台能以最高速度分別模擬從機端,速度為4 MHz和20 MHz;Cheetah 適配器僅限於作為 SPI 主機端,不具備任何 SPI 從機端功能。


Promira 平台還提供了整合的Level Shifter功能,可通過軟體控制改變輸出訊號電壓水平。它還提供最多8個從屬選擇線和最多16個通用 GPIO。Aardvark 適配器僅支援一個從屬選擇線,而 Cheetah 適配器則支援三個從屬選擇線。Aardvark 適配器最多可啟用6個 GPIO,而 Cheetah 適配器則不具備任何 GPIO 功能。Aardvark 還具有與 I2C 接口的能力,而 Promira 和 Cheetah 則不支援原生的 I2C。Promira 需要額外的應用程序,而 Cheetah 硬體上並不具備該功能。


Promira 串列平台的優勢


Promira 串列平台是 Total Phase 迄今研發的最多功能工具,作為一個平台工具,它的能力永遠不受限制,如果需要更多功能,只需安裝正確的應用程式,即可獲得完成所需任務的功能集,這是一個最靈活的開發工具,Promira 平台擁有一些額外的功能,包括:


  • 整合式Level Shifter - 可在不使用外接電壓轉換製具、或外部接線的情況下,處理範圍從 0.9V 到 5.0V 的訊號電壓。

  • 遠端控制 - 使用者可以遠程連接到目標裝置,而無需實際接觸或將裝置移至使用者所在的位置,無論是原型機或大規模生產,都能夠透過遠端連接、控制和通訊,從而提高開發和生產過程的效率。

  • 更多目標電源 - 提供高達 200 mA 的電源給目標裝置,在許多情況下,這消除了對外部電源的需求。

Aardvark I2C/SPI 主機適配器的優點


Aardvark I2C/SPI 主機適配器是最受歡迎的 Total Phase 開發工具,在與 SPI 介面交互時,Aardvark 適配器提供了廣泛的功能。以下是一些額外的 SPI 特點:

  • 支援主控端或從機端模式

  • 最高8 MHz 的主機訊號傳輸速率

  • 最高4 MHz 的從機訊號傳輸速率

  • 提供最多 6 個通用 GPIO

  • 支援 I2C 功能

Cheetah SPI 主機適配器的優點


Cheetah SPI 主機適配器是一款高速 SPI 適配器,可在最高40+ MHz 的速度下進行 SPI 通訊,Cheetah 適配器專為高速 SPI快閃記憶體通訊的應用而設計,它是SPI 系統開發、除錯和編程的理想工具。

  • 最高40+ MHz 的高速 SPI 主機端訊號傳輸速率

  • 傳輸佇列 (Transaction Queuing) 功能,實現最大傳輸量

  • 支援最多3個從機裝置

Total Phase 協議分析儀


Total Phase 還提供了一種協議分析儀,可提供關於 SPI 匯流排的詳細訊息,Beagle I2C/SPI 協議分析儀 透過連接到 SPI 線路來分析 SPI 匯流排;該分析儀將即時捕捉系統中發生的所有流量,當匯流排上有通訊發生時,資料將立即顯示在 Data Center 軟體中。

Beagle I2C/SPI 協定分析儀

能夠即時分析 SPI 匯流排提供了時間的優勢,與其他需要長緩衝區、和下載時間的匯流排探測器 (sniffer) 不同,Beagle 分析儀將資料在匯流排上進行傳輸時即時呈現給使用者。


Beagle I2C/SPI 協定分析儀的優點


Beagle I2C/SPI 協定分析儀是一個非侵入式裝置,可監控高達 24 MHz 的 SPI 匯流排。捕捉的資料透過高速 USB 直接串流到電腦上,捕捉的資料量僅受電腦可用的 RAM 容量的限制;這款多功能的 Beagle 分析儀是開發 SPI 嵌入式產品的工程師首選。

1,178 次查看
歡迎 訂閱翔宇科技主題式電子報 >,您將可同步掌握最新的產業新訊以及技術文章。
bottom of page