7、I3C Protocol
本文講解 I3C 協(xié)議規(guī)范的詳細(xì)內(nèi)容,從規(guī)范中可以看出,I3C 比 I2C 復(fù)雜很多,硬件簡(jiǎn)單帶來(lái)的是軟件的復(fù)雜。
對(duì)于 Linux 常用版本,kernel-4.14 和 kernel-4.19 并沒(méi)有提供 I3C 驅(qū)動(dòng),kernel-5.10 有提供 I3C 驅(qū)動(dòng)(從 kernel-5.0開(kāi)始提供的)
如下可以在線查看 Linux 源碼,目錄/drivers/i3c/...
https://elixir.bootlin.com/linux/latest/source
Bus configuration
I3C 不僅支持多個(gè)從設(shè)備,還支持多個(gè)主設(shè)備。I3C 總線上可以支持的設(shè)備有:
- Main Master(當(dāng)前主設(shè)備)
- Secondary master(輔助主設(shè)備)
- i3c Slave(i3c從設(shè)備)
- i2c Slave(i2c從設(shè)備)
I3C 特性寄存器描述并定義了 I3C 兼容設(shè)備在 I3C 總線上的 capabilities 和 functions,沒(méi)有 I3C 特性寄存器的設(shè)備不得連接到公共I3C總線。
有三種特征寄存器類型:
- Bus Characteristics Register (BCR)
- Device Characteristics Register (DCR)
- Legacy Virtual Register (LVR)
Bus Communicaton
SDR 協(xié)議基于 I2C 標(biāo)準(zhǔn)協(xié)議,有幾個(gè)顯著的變化:
SDR Message
- 地址頭中的地址是7'h7E(I3C廣播地址)。所有 I3C 從設(shè)備應(yīng)與地址值 7'h7E 匹配。地址頭中的地址與從機(jī)的動(dòng)態(tài)地址匹配。所有 I3C 從機(jī)應(yīng)匹配其自己的動(dòng)態(tài)地址。
Role of I3C Slave
- 在分配動(dòng)態(tài)地址之前,I3C從設(shè)備應(yīng)作為I2C設(shè)備運(yùn)行I3C START 和 STOP 在信號(hào)方面與 I2C START 和 STOP 相同,但在時(shí)序上可能不同。
I3C Address Header
- 支持帶內(nèi)中斷支持輔助主設(shè)備支持熱拔插 (熱插拔特性可以讓i3c從設(shè)備在不工作時(shí)處理睡眠或者關(guān)閉狀態(tài),需使用時(shí)才掛載到總線上使用,進(jìn)一步達(dá)到降低功耗的目的)
I3C Address Arbitration
- 主設(shè)備和一個(gè)或多個(gè)從設(shè)備following a START (but not a Repeated START)Open Drain(whether Master or Slave)lower Addresses having higher Priority
Hot-Join Mechanism
- After a START, 7’b0000_010 + RnW(1’b0)允許從設(shè)備在I3C總線配置完成后加入熱拔插設(shè)備可以是任何有效的從設(shè)備類型,包括輔助主設(shè)備
In-Band Interrupt
- After a START (but not a Repeated START) + Dynamic Address + RnW(1’b1)I3C 主設(shè)備提供 ack bits
Secondary Master Functions
- After a START (but not a Repeated START)+Dynamic Address +RnW(1’b0)輔助主機(jī)保持控制總線,直到另一個(gè)主機(jī)被授予總線控制。defer some actions to a more capable Master(GETACCMST)
I3C Bus conditions
I3C總線應(yīng)被視為不活動(dòng)的三種不同情況:
- Bus Free ConditionBus Available Condition(tAVAL)Bus Idle Condition(tIDLE)
I3C 為主設(shè)備提供了一種機(jī)制,用于通知從屬設(shè)備I3C總線上預(yù)期即將到來(lái)的活動(dòng)級(jí)別:
總線初始化和動(dòng)態(tài)地址分配模式
頭地址是 7h7E(I3C 廣播地址),所有的 I3C 從機(jī)將匹配 7h7E,任何的 I2C 從機(jī)設(shè)備將不會(huì)匹配此地址,因?yàn)檫@個(gè)地址在 I2C 中是保留的并且未使用。
Common Command Codes (CCC)
通用命令代碼(CCC)是全球支持的命令,可以直接傳輸?shù)教囟ǖ腎3C從設(shè)備,也可以同時(shí)傳輸?shù)剿蠭3C從設(shè)備。
CCC 命令分為四類:
- Broadcast WriteDirect Read/WriteDirect WriteDirect Read
支持動(dòng)態(tài)地址
i3c支持動(dòng)態(tài)地址,同時(shí)可以分配 7bit 靜態(tài)地址以適配傳統(tǒng) i2c 從設(shè)備。i3c從設(shè)備地址由主設(shè)備仲裁,但并不是所有設(shè)備地址都可用,部分地址是 i3c 標(biāo)準(zhǔn)所保留的,用于后期拓展或者錯(cuò)誤仲裁。
支持多種通信模式
i3c支持4種通信模式,分別是 SDR、HDR-DDR、HDR-TSL、HDR-TSP,不同模式通信速率有差異。
SDR 很多 I3C 主控和設(shè)備支持,HDR 很多設(shè)備不支持,所以最常用的是 12.5MHz。
- SDR 模式:12.5Mbit/sHDR-DDR模式:25Mbit/sHDR-TSL模式:30 Mbit/sHDR-TSP模式:37.5 Mbit/s
I3C 應(yīng)用場(chǎng)景
- 多傳感器領(lǐng)域,節(jié)約總線 IO。物聯(lián)網(wǎng)領(lǐng)域,功耗低。傳統(tǒng) i2c、spi、uart 設(shè)備接口中。camera、touch panel。i3c 向下兼容 i2c,可與傳統(tǒng) i2c 接口器件一起使用。