I3C (pronounced 'eye-three-see')
I3C 定義一個機制去偵測在 Bus 上的所有裝置,此機制稱為 DAA (Dynamic Address Assignment)
在 DAA 運行中,I3C 裝置會回傳三個重要的東西。
I3C 允許 slave 裝置生成自己的 event,因此他們被允許暫時的擁有 bus 的控制權
此機制稱作 IBI (In Band Interrupts)
當同時有兩個裝置發起 IBI ,此時 Dynmaic address 越小的裝置擁有會高的優先度。
I3C master 被允許抑制任何 IBI 產生。抑制的命令可以透過 Bordcast 或是特定裝置的形式發送。
Hot-Join 的機制類似於 USB 熱插拔。允許 slave 裝置在 I3C bus 初始化後加入。
涵蓋下面兩個例子:
此機制需依靠 slave 裝置發起 event 通知 master 有新裝置加入。
Master 可以選擇分配或不分配 Dynmaic address 給 slave
I3C 除了兼容 I2C 的傳輸,還有另外三種傳輸類型
CCC (Common Command Code) 有關 I3C 管理或是 I3C 裝置常見的功能
CCC 包含一組 8-bit CCC ID,表示哪個命令被執行,此外 MSB 用來表示此命令是 boradcast (bit7 = 0) 或指定裝置 (bit7 = 1)。
根據 Command 需要,可以在 CCC ID 後加上 payload
Payload 的長度並不會在傳輸的提及,需要從 CCC ID 去解析。
供應商可以使用 0x61-0x7f 和 0xe0-0xef 的 CCC ID,去定義自己的 command
Private SDR (Single Data Rate) transfer 應用該裝置特定且不須高速傳輸的命令
類似於 I2C transfer,但在 I3C 中,每次傳輸必須加上 Dynamic address.
且較 I2C transfer 快 (通常為 12.5MHz)
HDR commands 應用於該裝置特定且須高速傳輸的命令。
第一個需要加在 HDR command 後的就是 HDR mode,目前 I3C 定義了三種模式。
想傳輸 HDR command,必須先透過 CCC command boradcast Bus 進入 HDR mode。
HDR command 組成如下:
根據選擇的 HDR mode,這些 words 可能會加入前綴或後綴,詳見 Spec.
16-bits command word 組成如下:
I3C 允許 bus 上有 I2C 及 I3C 的裝置並存。但 I2C 裝置最好是搭配 50 ns spike filters
由於 I2C 裝置必須靜態設置完成,軟體的設計必須透過 LVR (Legacy I2C Virtual Register) 提供相關的訊息。