I3C (pronounced 'eye-three-see')

I3C Bus

  • multi-master protocol
  • 所有 I3C 裝置必須被指派一個 Dynamic address 才能溝通,如果裝置有 Static address (legacy I2C address),才 I2C protocol 也能使用。
  • I3C 還有定義 Boradcast address,用來搜尋 I3C bus 上的裝置

I3C Device discovery

I3C 定義一個機制去偵測在 Bus 上的所有裝置,此機制稱為 DAA (Dynamic Address Assignment)

DAA 運行中,I3C 裝置會回傳三個重要的東西。

  • BCR: Bus Characteristic Register. 這 8-bit 的暫存器描述 the device bus related capabilities
  • DCR: Device Characteristic Register.這 8-bit 的暫存器描述此裝置提供的功能
  • Provisioned ID: 一個 48-bit 的識別碼。 I3C bus 上不能有識別碼衝突,會導致 DAA 失敗

I3C slave events

I3C 允許 slave 裝置生成自己的 event,因此他們被允許暫時的擁有 bus 的控制權
此機制稱作 IBI (In Band Interrupts)

當同時有兩個裝置發起 IBI ,此時 Dynmaic address 越小的裝置擁有會高的優先度。

I3C master 被允許抑制任何 IBI 產生。抑制的命令可以透過 Bordcast 或是特定裝置的形式發送。

I3C Hot-Join

Hot-Join 的機制類似於 USB 熱插拔。允許 slave 裝置在 I3C bus 初始化後加入。

涵蓋下面兩個例子:

  • 在 DAA 期間,裝置尚未被供電
  • 裝置在其他板子上進行熱插拔的行為

此機制需依靠 slave 裝置發起 event 通知 master 有新裝置加入。
Master 可以選擇分配或不分配 Dynmaic address 給 slave

I3C transfer types

I3C 除了兼容 I2C 的傳輸,還有另外三種傳輸類型

I3C CCC commands

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

I3C Private SDR transfers

Private SDR (Single Data Rate) transfer 應用該裝置特定且不須高速傳輸的命令
類似於 I2C transfer,但在 I3C 中,每次傳輸必須加上 Dynamic address.
且較 I2C transfer 快 (通常為 12.5MHz)

I3C HDR commands

HDR commands 應用於該裝置特定且須高速傳輸的命令。

第一個需要加在 HDR command 後的就是 HDR mode,目前 I3C 定義了三種模式。

  • HDR-DDR: Double Data Rate mode
  • HDR-TSP: Ternary Symbol Pure. 用在 bus 上沒有 I2C 裝置的時候。
  • HDR-TSL: Ternary Symbol Legacy 用在 bus 上有 I2C 裝置的時候。

想傳輸 HDR command,必須先透過 CCC command boradcast Bus 進入 HDR mode。

HDR command 組成如下:

  • 1 個 16-bits command word (big-endian)
  • N 個 16-bits data words (big-endian

根據選擇的 HDR mode,這些 words 可能會加入前綴或後綴,詳見 Spec.

16-bits command word 組成如下:

  • bit[15]: 方向位元,read = 1,write = 0
  • bit[14:8]: command code. 用來識別執行什麼指令,有多少 data words,和他們的意義。
  • bit[7:1]: I3C address。 命令要送往的位址
  • bit[0]: reserved/parity-bit

兼容 I2C 裝置

I3C 允許 bus 上有 I2C 及 I3C 的裝置並存。但 I2C 裝置最好是搭配 50 ns spike filters

由於 I2C 裝置必須靜態設置完成,軟體的設計必須透過 LVR (Legacy I2C Virtual Register) 提供相關的訊息。