感謝《新通訊》媒體平台邀稿:
前言
PCB 印刷電路板上的晶片通訊,常使用兩種協定:SPI(串行週邊介面)和 I2C(內部積體電路);此外,還有 I2C 協定經過改良,衍伸出 I3C 協定,彌補 I2C 單一主機、不支援 IBI 等特性。
這三種協定雖然傳輸速率、距離都不比 USB、SATA 等表現,但優勢是相對操作容易,需要的組件和程式碼少,適合在簡單嵌入式系統中使用。本篇文章,將討論 I3C、I2C、SPI 三種協定的特性比較,以及各自適合的應用場景。
快速比較:I3C、I2C、SPI 協定
I3C | I2C | SPI | |
傳輸速率 | 最高達 33.4 Mbps | 標準模式: 100 kbps 快速模式: 400 kbps 高速模式: 3.4 Mbps 超高速模式: 5 Mbps | 最高達 100 Mbps |
線數 | 2 線:SDA、SCL | 2 線:SDA、SCL | 4 線:MISO、MOSI、SCLK、SS |
功耗 | 低 | 中 | 高 |
帶內中斷IBI | 支援 | 不支援 | 不支援 |
結束數據讀取方式 | Master 發出 STOP 信號 | Master 發出 STOP 信號 | 透過 Slave Select (SS) |
熱插拔 | 支援 | 支援,但需要特定硬體 | 不支援 |
故障檢測 | 有先進的故障檢測功能 | 基本的應答檢測 | 不支援 |
內置集成命令 | 有更複雜的內置命令集 | 基本命令 | 無 |
Master/Slave | 多 Master 多 Slave | 單 Master 多 Slave | 多 Master 多 Slave |
從機地址 | 48 位唯一標識符 | 7 位或 10 位地址 | 無限制 |
流量控制 | 先進的流量控制功能 | 由主控器控制 | 由硬體控制 |
I3C、I2C、SPI 的優勢和劣勢
綜合以上,簡單來說:SPI 優點在於其高傳輸速率和靈活性,I2C 注重簡化電路和功耗;I3C 則結合了兩者的優點,提供更高的傳輸速率、加上多樣化的功能。三種通訊協定特性不同,應該根據場合,選擇最佳應用:
I3C | I2C | SPI | |
優點 | 結合 I2C 的簡單性和 SPI 的高效性,傳輸速率更高。 支援 IBI 和先進的流量控制。 向後兼容 I2C 設備,支援熱插拔和更高的功率效率。 | 雙線通訊,節省 PCB 空間和引腳數量。 1 Master、多 Slave 架構,低功耗。 | 高傳輸速率,全雙工通訊,不需地址編碼。 多 Master、多 Slave 支援。 |
缺點 | 複雜性增加,市場普及度低,但逐漸增加中。 | 傳輸速率有限,半雙工通訊。 若 Slaves 使用同樣地址可能發生衝突。 | 線數較多,無標準化規範。 缺少流量控制和錯誤檢測標準。 |
應用場景 | 適合需要高性能和多功能的應用。如高功能傳感器網絡、智慧型手機和其他需要高效能和低功耗的設備。 | 溫度感測器、即時時鐘(RTC)、EEPROM、LCD 顯示器 和其他需要低速率和簡單連接的應用。 | 廣泛應用於傳感器數據收集、高速 ADC/DAC、顯示模組、記憶體卡和其他需要高頻寬和低延遲的設備。 |
I3C 特性和用途
I3C(Improved Inter Integrated Circuit)基本上可視為改良版本的 I2C,其與 I2C 的差異比較,可參考本文前述的表格。
I3C 的介面使用類似 I2C,一樣使用 2 條線:SDL 和 SCL 時脈線。I3C 可向下兼容 I2C 匯流排協定,也就是說:I3C 的 Master 可以架接 I2C 接口的 Slave(但是不兼容 10 bit 的 I2C 擴展位址)。
I3C 大部份的 Message 都是由 Master 所發動的,但也允許 Slave 對Master 的提出 Request,稱之為 START Request。
I3C 的應用電路類型如下圖所示:
I3C 最初是為行動應用設計的,隨著物聯網感測器的興起,對傳輸功耗、性能和速率的要求變得更嚴格,I3C 被設計出來解決 I2C 的功耗問題;成為可用於任何感測器的單一介面。現在的 I3C 協定,已成功被應用於汽車、消費品和其他智慧手機以外的領域。在物聯網應用中,I3C 因其高速資料傳輸和極低功耗的優勢,成為理想選擇,特別適合有嚴格功耗限制的嵌入式系統。
I3C 的一個重要改良,是沒有 I2C 的時脈展延,讓 Slave 回傳資料的速度加快;在單一資料速率(SDR)模式下,I3C 的時脈僅由 Master 驅動。不過,Slaves 也可以在匯流排初始化過程中指示速度限制,確保工作頻率、讀寫週轉時間和其他時序參數在可運作範圍內。
I3C 的改良優勢:多元傳輸方式與不同速度
I3C 有多種不同的 資料傳輸模式,基本時脈速率最高可達 12.5 MHz:
標準資料傳輸率(SDR)模式:
與 I2C 相同,SDA 由 SCL 時脈控制
高資料傳輸率(HDR);這其中又有四種不同的模式,速度均快於 SDR 模式:
雙倍數據率(HDR-DDR)模式: SDA在每個SCL邊緣轉換時(而不是每個時脈周期)被時脈控制,有效地使資料傳輸速率翻倍,而時脈速率本身並未增加。
三元符號純匯流排(HDR-TSP)模式(不包括在 I3C 基本規範中): 在此模式下,SDA 和 SCL 失去了一般的功能,資料以三元符號的形式傳送,有效資料傳輸速率大致增加了三倍,但是,在 TSP 模式下,無法在 I3C 匯流排上使用 I2C 裝置。
三元符號傳統(HDR-TSL)模式(不包括在 I3C 基本規範中): 類似於 TSP 模式,但與 I2C 相容,並且僅具有 2.5 倍的速度增益(略有降低)。
批量傳輸(HDR-BT)模式: 類似於 SDR 模式,但以區塊為導向(block-oriented),使用第 9 個位元(在 SDR 模式中為奇偶校驗位元或 T 位元)作為資料,相對於 SDR 模式,可實現20%的資料傳輸速率增益,資料完整性透過 CRC 進行檢查。
I3C 獨有的通用指令代碼(CCC)
通用指令代碼(Common Command Code, CCC)是 I3C 中的一個新概念。Master 使用 CCC 來初始化、或開始/結束匯流排。Master 使用 CCC 時,可以廣播給每個 Slave,也可以針對特定一個 Slave。
CCC 的好處在於:
簡化操作:CCC 使多個設備之間的數據傳輸更為簡便,減少複雜的通訊協定設計。
節省功耗:通過統一的指令集,降低了不必要的功耗。
提高兼容性:不同廠商的設備能更容易互相操作,增強系統的靈活性。
使用 CCC,首先 Master 要發送 Broadcast Address:7'h7E(W),所有 Slaves 都必須確認此位址;接下來,Master 發送 CCC,將資料寫入目標 Slave 的 CCC,繼續傳送資料直到完成。
I2C 特性和用途
I2C(Inter-Integrated Circuit 內部整合電路),是一種使用於主機板、嵌入式系統等的串列通訊匯流排;使用 2 條線:SDA 資料線、SCL 時脈線進行通訊(不包括電源線和地線)節省 PCB 空間和引腳數量。
I2C 的參考設計使用一個 7 位元長度的位址空間,但保留了 16 個位址,所以在一組匯流排最多可和 112 個節點通訊;如此一來能支援多個 Master/Slave 架構,靈活、兼容性高、且成本低,適合各種嵌入式應用。
由於 I2C 支援同一匯流排上的有多個 Master,如果有兩個 Master 同時發出信號,其中一方會在稱為「仲裁」的過程中退出,等另一個 Master 傳輸完畢在發出訊號。
理論上,任意數量的 Master/Slave 可以連接到同一個匯流排。 SDA 和 SCL 線都是 Open-drain 輸出。Master/Slave 需將每條線電位拉低,並利用電阻將電位上拉。I2C 允許相對大的工作電壓範圍, 但典型的電壓準位為 +3.3V 或 +5V。
通訊傳輸時,Master 將發出 START 指令,這時 SDA 電位被拉低,而 SCL 線仍為高電位。然後,主機在匯流排上發出預期接收者的 7 位元位址,後面跟著寫入位元 (0) 或讀取位元 (1)。如果匯流排上的裝置具有該特定位址,它將透過拉低 SDA 線(ACK 位元)來回應。
然後,主設備或週邊設備可以一次以 1 個位元組的資料包的形式發送資料;每個位元組都應由接收方使用 ACK 位元進行確認。一旦通訊完成,主機將在 SCL 為高電位時釋放 SDA 線,以發出停止條件。
數據速率最初限制為 100 kbps(標準模式)。 1992 年,飛利浦將速度上限提高到 400 kbps(快速模式)。 6年後增加了特殊的3.4Mbps模式(高速模式)。必須在主設備和周邊裝置之間以較低的速度發出一組特殊的命令,以建立高速連接。
雖然任意數量的設備可以實際連接到 I2C 匯流排,但 7 位元位址限制了設備的實際數量。某些位址被保留,因此在同一匯流排上只能存在 112 個不同的設備。如有必要,可以啟用特殊的 10 位元尋址模式以允許更多裝置。
I2C 使用「時脈展延」來控制流量,週邊設備可以將 SCL 時脈線保持在低電平,這告訴主設備降低傳輸速率。該技術允許外設在回應之前有一些時間來處理資料。
由於 I2C 所需的引腳數較少,許多感測器製造商在其晶片中使用此協定。例如,溫度感測器、加速度計、類比數位轉換器等都可以用 I2C 來實現。
SPI 特性和用途
SPI 使用 4 條主動訊號線(不包括電源線和接地線)在零件之間進行通訊,4 條線分別是:
SCLK:串列時脈(Master 控制)
MOSI:主機輸出從機輸入(Master 控制)
MISO:Master In Slave Out(Slave 控制)
SS:從機選擇(Master 控制)
透過這 4 條線,主機(Master)可以與另一個從機(Slave)進行通訊。:
Master 可以在 MOSI 線上發送數據,同時對 MISO 線進行取樣,因此,資料可以在 Master 和 Slave 之間同時發送(全雙工)。
每新增的一個 Slave,就必須新增一條 SS 線。例如下圖範例中,共 3 個 Slave,因此需要 SS1、SS2、SS3;一次只能有一個 Slave 與 Master 通訊。
SPI 有 4 種不同的模式可以設置,這將決定時脈的運作方式:
模式 0:在時脈上升沿取樣數據,時脈空閒為低電平
模式 1:在時脈下降沿取樣數據,時脈空閒為低電平
模式 2:在時脈下降沿取樣數據,時脈空閒為高電平
模式 3:在時脈上升沿取樣數據,時脈空閒為高電平
※Master 和 Slave 必須使用相同的模式通訊
另外,SPI 沒有指定任何特定的電壓位準、最大速率或地址,由使用者決定。SPI 對於傳輸大量資料非常有用。 SPI 通常用於需要快速更新速率的感測器,例如加速計、顯示裝置、LCD 和快閃記憶體裝置。
結論
總結來說,這三種協定各有其適用場景;I3C 的高效能低功耗,特別適合物聯網裝置和智慧型手機等應用。I2C 由於其簡單性、低功耗和成熟技術帶來的低成本,適合溫度感測器、即時時鐘和顯示器等低速率應用或有成本考量的設計。SPI 則因其高傳輸速率和全雙工通訊,廣泛應用於顯示模組、存儲設備等高速數據需求的場景。
I3C、I2C 和 SPI 彼此之間並無高低之分,重點在於選擇合適的協定,根據需求和研發設計時的操作能力範疇,綜合考量最佳使用的方式。
本文由《翔宇科技》提供,感謝《新通訊》媒體平台邀稿
《翔宇科技 EagleTek》將於〈10月30日台北〉、〈10月31日新竹〉舉辦科技產業知識講座,歡迎追蹤翔宇官網的活動公告,免費報名參加!
延伸閱讀:
參考資料: