I3C 協議¶
免責宣告¶
本章將側重於對軟體開發人員重要的方面。對於所有與硬體相關的內容(例如,總線上如何傳輸資料,如何防止衝突等),請檢視 I3C 規範。
本文件只是對 I3C 協議及其概念的簡要介紹。如果您需要更多資訊,請參閱 MIPI I3C 規範(可在此處下載 https://resources.mipi.org/mipi-i3c-v1-download)。
簡介¶
I3C(發音為 “eye-three-see”)是 MIPI 標準化協議,旨在克服 I2C 的侷限性(速度有限、中斷需要外部訊號、無法自動檢測連線到匯流排的裝置等),同時保持節能。
I3C 匯流排¶
I3C 匯流排由多個 I3C 裝置以及可能的一些 I2C 裝置組成,但現在讓我們關注 I3C 裝置。
I3C 總線上的 I3C 裝置可以具有以下角色之一
主裝置:該裝置正在驅動匯流排。它負責發起事務或決定誰可以訪問匯流排(I3C 中可能發生從裝置生成的事件,請參見下文)。
從裝置:該裝置充當從裝置,無法將幀傳送到總線上的另一個從裝置。如果主裝置允許,該裝置仍然可以主動向主裝置傳送事件。
I3C 是一種多主裝置協議,因此總線上可能有多個主裝置,儘管一次只能有一個裝置充當主裝置。為了獲得匯流排所有權,主裝置必須遵循特定的過程。
I3C 總線上的每個裝置都必須分配一個動態地址才能進行通訊。在此完成之前,該裝置應僅響應有限的一組命令。如果它具有靜態地址(也稱為舊式 I2C 地址),則該裝置可以回覆 I2C 傳輸。
除了這些按裝置地址外,該協議還定義了一個廣播地址,以便定址總線上的所有裝置。
一旦將動態地址分配給裝置,該地址將用於與該裝置的任何直接通訊。請注意,即使在分配了動態地址之後,該裝置仍應處理廣播訊息。
I3C 裝置發現¶
I3C 協議定義了一種機制,可以自動發現總線上存在的裝置、它們的功能以及它們提供的功能。在這方面,I3C 更接近於像 USB 這樣的可發現匯流排,而不是 I2C 或 SPI。
發現機制稱為 DAA(動態地址分配),因為它不僅發現裝置,還為它們分配動態地址。
在 DAA 期間,每個 I3C 裝置報告 3 個重要事項
BCR:匯流排特性暫存器。此 8 位暫存器描述了裝置匯流排相關的能力
DCR:裝置特性暫存器。此 8 位暫存器描述了裝置提供的功能
預置 ID:一個 48 位唯一識別符號。在給定的總線上,不應存在預置 ID 衝突,否則發現機制可能會失敗。
I3C 從裝置事件¶
I3C 協議允許從裝置自行生成事件,因此允許它們臨時控制匯流排。
此機制稱為 IBI,用於帶內中斷,顧名思義,它允許裝置生成中斷而無需外部訊號。
在 DAA 期間,總線上的每個裝置都已被分配一個地址,如果 2 個不同的裝置同時在總線上生成中斷,則此地址將用作優先順序識別符號,以確定誰獲勝(動態地址越低,優先順序越高)。
如果主裝置願意,可以禁止中斷。此禁止請求可以廣播(適用於所有裝置)或傳送到特定裝置。
I3C 熱插拔¶
熱插拔機制類似於 USB 熱插拔。此機制允許從裝置在匯流排由主裝置初始化後加入匯流排。
這涵蓋了以下用例
在探測匯流排時,裝置未通電
透過擴充套件板將裝置熱插拔到總線上
此機制依賴於從裝置事件來通知主裝置,新裝置已加入匯流排並正在等待動態地址。
然後,主裝置可以隨意處理該請求:忽略它或為從裝置分配一個動態地址。
I3C 傳輸型別¶
如果您忽略 SMBus(這只是對如何訪問 I2C 裝置公開的暫存器的一種標準化),則 I2C 只有一種傳輸型別。
除了 I2C 傳輸(此處用於與 I2C 裝置向後相容)之外,I3C 還定義了 3 種不同的傳輸類別。
I3C CCC 命令¶
CCC(公共命令程式碼)命令旨在用於與匯流排管理相關的所有內容以及一組裝置共有的所有功能。
CCC 命令包含一個 8 位 CCC ID,用於描述執行的命令。此 ID 的 MSB 指定這是一個廣播命令(bit7 = 0)還是一個單播命令(bit7 = 1)。
命令 ID 之後可以跟一個有效負載。根據命令的不同,此有效負載要麼由傳送命令的主裝置傳送(寫入 CCC 命令),要麼由接收命令的從裝置傳送(讀取 CCC 命令)。當然,讀取訪問僅適用於單播命令。請注意,當向特定裝置傳送 CCC 命令時,裝置地址將以有效負載的第一個位元組傳遞。
有效負載長度未在總線上顯式傳遞,應從 CCC ID 中提取。
請注意,供應商可以使用 CCC ID 的專用範圍來執行自己的命令 (0x61-0x7f 和 0xe0-0xef)。
I3C 專用 SDR 傳輸¶
專用 SDR(單資料速率)傳輸應僅用於任何特定於裝置且不需要高傳輸速度的內容。
它等效於 I3C 世界中的 I2C 傳輸。每個傳輸都傳遞裝置地址(DAA 期間分配的動態地址)、有效負載和方向。
與 I2C 的唯一區別是傳輸速度快得多(典型時鐘頻率為 12.5MHz)。
I3C HDR 命令¶
HDR 命令應僅用於任何特定於裝置且需要高傳輸速度的內容。
附加到 HDR 命令的第一件事是 HDR 模式。目前 I3C 規範定義了 3 種不同的模式(有關更多詳細資訊,請參閱規範)
HDR-DDR:雙倍資料速率模式
HDR-TSP:三元符號純。僅適用於沒有 I2C 裝置的匯流排
HDR-TSL:三元符號傳統。適用於帶有 I2C 裝置的匯流排
傳送 HDR 命令時,整個匯流排都必須進入 HDR 模式,這可以使用廣播 CCC 命令來完成。一旦匯流排進入特定的 HDR 模式,主裝置就會發送 HDR 命令。HDR 命令由以下內容組成
一個大端序 16 位命令字
N 個大端序 16 位資料字
這些字可以用特定的前導碼/後導碼包裝,這些前導碼/後導碼取決於選擇的 HDR 模式,並在此處詳細說明(有關更多詳細資訊,請參閱規範)。
16 位命令字由以下內容組成
bit[15]:方向位,讀取為 1,寫入為 0
bit[14:8]:命令程式碼。標識正在執行的命令、資料字的數量及其含義
bit[7:1]:此命令定址到的裝置的 I3C 地址
bit[0]:保留/奇偶校驗位
與 I2C 裝置的向後相容性¶
I3C 協議旨在與 I2C 裝置向後相容。這種向後相容性允許您在同一總線上連線 I2C 和 I3C 裝置,但是,為了真正有效,I2C 裝置應配備 50 ns 尖峰濾波器。
I2C 裝置無法像 I3C 裝置那樣被發現,必須靜態宣告。為了讓主裝置知道這些裝置的功能(在匯流排相關的限制和功能方面),軟體必須提供一些資訊,這些資訊透過 LVR(舊式 I2C 虛擬暫存器)來完成。