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)** 提供相關的訊息。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up