I3C 是一種用于嵌入式系統(tǒng)的新型串行通信協(xié)議,可提供比 I 2 C高得多的數(shù)據(jù)吞吐量和更多功能。借助 I3C,工程師和設(shè)計(jì)人員可以提高其設(shè)計(jì)的性能,同時(shí)還可以添加熱連接等新功能,在帶中斷 (IBI) 和高數(shù)據(jù)速率 (HDR) 模式。此外,I3C 向后兼容并且可以與傳統(tǒng) I 2 C 目標(biāo)進(jìn)行通信。表 1總結(jié)了 I3C 和 I 2 C之間的差異。
![wKgZomYjJoGAXqEFAAKq4gOYr5s244.png](https://file1.elecfans.com/web2/M00/D1/78/wKgZomYjJoGAXqEFAAKq4gOYr5s244.png)
表 1上述數(shù)據(jù)展示了 I3C 如何提供比 I 2 C 高得多的數(shù)據(jù)吞吐量和更的功能。資料
筆記:
標(biāo)稱值。不允許使用其他值。
時(shí)鐘延展可由活動(dòng)控制器(而非目標(biāo))執(zhí)行,但對(duì)時(shí)序和總線狀態(tài)有限制。
基本 I3C 通信不需要 HDR。即使連接了不支持的設(shè)備,I3C 總線也支持 HDR 通信。有關(guān)詳細(xì)信息,請(qǐng)參閱高數(shù)據(jù)速率 (HDR) 模式。
總線速度
I 2 C 和 I3C之間顯著的變化是時(shí)鐘速度。I 2 C 通常為 100 kHz、400 kHz 或 1 MHz,而 I3C 可以達(dá)到高達(dá) 12.5 MHz 的速度。這種增長(zhǎng)的主要因素之一是在 I3C 中使用推挽輸出。I3C 根據(jù)總線狀態(tài)在漏極開路和推挽驅(qū)動(dòng)器之間切換。開漏在初始尋址或仲裁期間使用,其中多個(gè)目標(biāo)可能同時(shí)控制線路。相比之下,當(dāng)通信是單向的時(shí)使用推拉,并且沒有其他設(shè)備同時(shí)通信的機(jī)會(huì)。
電氣特性
與 I 2 C 不同,I3C 不需要外部上拉電阻,因?yàn)榭偩€上的主控制器提供這些功能。I 2 C 具有很寬的工作范圍,常見的是 3.3 V 和 5 V。I3C 具有三個(gè)標(biāo)稱電平:1.2 V、1.8 V 和 3.3 V。但是,允許使用其他工作范圍。
設(shè)備尋址
I 2 C 支持目標(biāo)設(shè)備的 7 位和 10 位尋址。使用 I3C,僅支持 7 位尋址。但是,I3C 使用動(dòng)態(tài)尋址,主動(dòng)控制器為每個(gè)目標(biāo)分配一個(gè)地址以防止地址沖突。這與 I 2 C 形成對(duì)比,在 I 2 C 中,開發(fā)人員必須跟蹤當(dāng)前使用的地址以防止兩個(gè)設(shè)備共享同一地址。目標(biāo)的動(dòng)態(tài)尋址發(fā)生在總線初始化期間。
帶內(nèi)中斷和熱連接
在 I 2 C 中,沒有一種機(jī)制可以讓目標(biāo)在不使用額外 I/O 線的情況下向控制器指示數(shù)據(jù)已準(zhǔn)備就緒。但在 I3C 中,目標(biāo)設(shè)備可以使用串行數(shù)據(jù) (SDA) 和串行時(shí)鐘 (SCL) 線發(fā)出中斷信號(hào),從而使其成為真正的雙線協(xié)議。同樣,這種帶內(nèi)信令也用于在 I3C 中實(shí)現(xiàn)熱加入功能,因此設(shè)備可以在初始地址分配后加入。帶內(nèi)中斷 (IBI) 和地址仲裁部分將對(duì)此進(jìn)行更詳細(xì)的討論。
主動(dòng)和輔助控制器
I 2 C 支持多控制器總線,其中多個(gè)設(shè)備作為控制器運(yùn)行,但只有一個(gè)主動(dòng)通信。但是,在 I3C 中,只有一個(gè)設(shè)備可以成為主動(dòng)控制器;其他有能力的設(shè)備可能會(huì)請(qǐng)求成為總線上的活動(dòng)控制器。這種設(shè)備稱為輔助控制器。當(dāng)輔助控制器不充當(dāng)主動(dòng)控制器時(shí),它充當(dāng) I3C 目標(biāo)。
我2 C 支持
I3C 支持與 I 2 C 目標(biāo)設(shè)備的通信。為了能夠進(jìn)行通信,I 2 C 目標(biāo)必須:
有一個(gè)7位地址
不延長(zhǎng)時(shí)鐘
還強(qiáng)烈建議 I 2 C 目標(biāo)在其輸入端包含 50-ns 濾波器。如果滿足這些要求,則 I 2 C 目標(biāo)與 I3C 總線兼容。此外,一些 I3C 設(shè)備可以作為 I 2 C 目標(biāo)運(yùn)行,直到分配了一個(gè)動(dòng)態(tài)地址。在 I 2 C 模式下,I3C 設(shè)備有一個(gè)用于通信的靜態(tài)地址。該靜態(tài)地址不一定與動(dòng)態(tài)地址相同,但如果需要,可以分配相同的地址。I3C 總線的示例如下所示。
![wKgZomYjJouAdmJiAAC1kzbRhA8385.png](https://file1.elecfans.com/web2/M00/D1/78/wKgZomYjJouAdmJiAAC1kzbRhA8385.png)
圖 1該圖突出顯示了 I3C 總線。資料
I3C通信基礎(chǔ)
在 I3C 總線上開始任何通信之前,必須配置總線,并且必須將動(dòng)態(tài)地址分配給目標(biāo)。
然后,像 I 2 C 一樣開始通信。生成 START 條件,然后發(fā)送 7 位動(dòng)態(tài)地址,R/nW 位后跟來自目標(biāo)的 ACK 或 NACK。接下來,I3C 和 I 2 C一樣使用 9 位串行傳輸,但是第 9位的功能位已從 ACK/NACK 更改為轉(zhuǎn)換位或 T 位。T位有兩個(gè)功能;當(dāng)控制器寫入目標(biāo)時(shí),T 位是發(fā)送數(shù)據(jù)字節(jié)的奇校驗(yàn)位。當(dāng)控制器從目標(biāo)讀取時(shí),T 位用作數(shù)據(jù)結(jié)束標(biāo)志。此標(biāo)志可以由控制器斷言,以表示它已完成讀取數(shù)據(jù),或由目標(biāo)來斷言,以表示它沒有更多數(shù)據(jù)可返回。為完成數(shù)據(jù)傳輸,控制器在總線上生成停止或重啟條件。請(qǐng)注意,如果使用 RESTART,則報(bào)頭將以推挽方式傳輸,因?yàn)闆]有仲裁。
![wKgZomYjJpOAJvpcAAEkBEkIXYE264.png](https://file1.elecfans.com/web2/M00/D1/78/wKgZomYjJpOAJvpcAAEkBEkIXYE264.png)
圖 2顯示了 I3C 中數(shù)據(jù)傳輸?shù)暮?jiǎn)化圖,其中包含 1 個(gè)數(shù)據(jù)字節(jié)。資料
I3C 的一個(gè)重要變化是沒有時(shí)鐘延展。I 2 C 使用時(shí)鐘延展給目標(biāo)設(shè)備更多的時(shí)間來處理返回?cái)?shù)據(jù)之前。使用 I3C,時(shí)鐘僅由活動(dòng)控制器驅(qū)動(dòng)——在單數(shù)據(jù)速率 (SDR) 模式下。因此,時(shí)鐘延展只能由控制器在有限的情況下執(zhí)行。
然而,目標(biāo)設(shè)備可以在總線初始化過程中指示速度限制,以指示工作頻率、讀寫周轉(zhuǎn)時(shí)間和其他時(shí)序參數(shù)。
通用命令代碼 (CCC)
通用命令代碼 (CCC) 是 I3C 中的一個(gè)新概念。主動(dòng)控制器使用 CCC 來初始化和/或配置 I3C 總線。CCC 可以廣播給每個(gè)目標(biāo),也可以私下針對(duì)特定目標(biāo)。要發(fā)送 CCC,首先發(fā)送地址 7‘h7E/W。所有 I3C 設(shè)備都必須確認(rèn)并偵聽此地址。I 2 C 設(shè)備無(wú)法匹配此地址,因?yàn)楦鶕?jù) I 2 C 規(guī)范保留 7’h7E 。接下來,發(fā)送 CCC 代碼。對(duì)于將數(shù)據(jù)寫入目標(biāo)的 CCC,繼續(xù)發(fā)送數(shù)據(jù)直到完成。對(duì)于讀取值的 CCC,發(fā)送任何參數(shù)(根據(jù)需要),重新啟動(dòng)總線,然后開始讀取數(shù)據(jù)。
有太多的 CCC 需要討論,但這里有一些重要的選擇:
輸入動(dòng)態(tài)地址分配 (ENTDAA)
Enter Dynamic Address Assignment 通知所有目標(biāo),活動(dòng)控制器正在分配動(dòng)態(tài)地址。如果一個(gè)目標(biāo)已經(jīng)被分配了一個(gè)地址,它將 NACK 這個(gè)命令。
設(shè)置新的動(dòng)態(tài)地址分配 (SETNEWDA)
Set New Dynamic Address Assignment 用于更改設(shè)備的動(dòng)態(tài)地址。
啟用事件 (ENEC)/禁用事件 (DISEC)
啟用或禁用事件命令指示總線上當(dāng)前是否允許熱加入或帶內(nèi)中斷等事件。
重置動(dòng)態(tài)地址分配 (RSTDAA)
Reset Dynamic Address 清除當(dāng)前分配的地址但不重新分配地址。在 I3C 規(guī)范的 v1.1 中,重置動(dòng)態(tài)地址分配的直接形式已被棄用。
設(shè)置讀取長(zhǎng)度 (SETMRL)/獲取讀取長(zhǎng)度 (GETMRL)
設(shè)置或獲取讀取長(zhǎng)度指定可以讀取的字節(jié)數(shù)。
設(shè)置寫入長(zhǎng)度 (SETMWL)/獲取寫入長(zhǎng)度 (GETMWL)
設(shè)置或獲取寫入長(zhǎng)度設(shè)置可以讀取或?qū)懭氲淖止?jié)數(shù)。
設(shè)備特性寄存器或 DCR 是指定目標(biāo)設(shè)備類型的寄存器。這方面的一個(gè)例子是代碼 0xC6,微控制器的代碼。I3C 規(guī)范定義了 DCR 值。MIPI 聯(lián)盟提供了這些代碼的列表。
獲取總線特性寄存器 (GETBCR)
總線特性寄存器或 BCR 是定義目標(biāo)上存在哪些 I3C 功能的寄存器。該寄存器還用于確定目標(biāo)是否需要速度限制。
目標(biāo)休息動(dòng)作 (RSTACT)
CCC 中的目標(biāo)重置操作定義了當(dāng)檢測(cè)到帶內(nèi)重置模式時(shí)目標(biāo)會(huì)發(fā)生什么。為產(chǎn)生復(fù)位,SDA 保持低電平,同時(shí) SCL 計(jì)時(shí) 14 次,然后是重啟,然后是停止。目標(biāo)檢測(cè)帶內(nèi)重置模式并根據(jù)分配給它們的內(nèi)容進(jìn)行操作。此 CCC 不會(huì)觸發(fā)重置,但會(huì)分配目標(biāo)行為。如果未按照此命令復(fù)位,則下一個(gè)啟動(dòng)條件將清除分配的操作。
進(jìn)入高數(shù)據(jù)速率模式 (ENTHDRx)
,還有高數(shù)據(jù)速率,或 HDR,Entry CCC。此 CCC 表示活動(dòng)控制器正在進(jìn)入四種 HDR 模式(0、1、2 或 3)之一。
高數(shù)據(jù)速率 (HDR) 模式
I3C 規(guī)范目前定義了四種 HDR 模式。
HDR 雙倍數(shù)據(jù)速率 (HDR-DDR) [模式 0]
HDR 三元符號(hào)純總線 (HDR-TSP) [模式 1]
HDR 三元符號(hào)傳統(tǒng)包含總線 (HDR-TSL) [模式 2]
HDR 批量傳輸 (HDR-BT) [模式 3]
在 HDR 中,時(shí)鐘速率不會(huì)改變數(shù)據(jù)編碼方式的變化。I3C 基本通信不需要 HDR。不支持 HDR 的設(shè)備會(huì)忽略通信,直到它們檢測(cè)到 HDR 退出模式。
硬盤驅(qū)動(dòng)器
HDR-DDR 是一種使用時(shí)鐘的兩個(gè)邊沿來傳輸數(shù)據(jù)的模式。這顯著增加了總線的數(shù)據(jù)速率(但由于協(xié)議中的額外開銷而不會(huì)加倍)。
HDR-TSP 和 HDR-TSL
在 HDR-TSP 和 HDR-TSL 中,數(shù)據(jù)以三進(jìn)制傳輸,三個(gè)定義的符號(hào)從 SDA 和 SCL 線創(chuàng)建。根據(jù)規(guī)范,符號(hào)的電氣定義如下:
只有 SCL 變化
只有 SDA 變化
SCL 和 SDA 都改變
HDR-TSP 和 TDR-TSL 之間的選擇基于是否存在I 2 C 目標(biāo)。HDR-TSP 只能在存在 I3C 目標(biāo)時(shí)使用,而 HDR-TSL 則在存在傳統(tǒng) I 2 C 目標(biāo)時(shí)使用。
高動(dòng)態(tài)范圍藍(lán)牙
HDR-BT 允許同時(shí)使用多個(gè)數(shù)據(jù)通道以實(shí)現(xiàn)更高的并行性。為了兼容性,只有 SDA 線的有效位或 LSB 用于單數(shù)據(jù)速率 (SDR) 通信。HDR-BT 支持雙線和四線配置。圖 3顯示了一個(gè)示例配置。
![wKgZomYjJpqAVDMvAAC1yQ8icBw289.png](https://file1.elecfans.com/web2/M00/D1/78/wKgZomYjJpqAVDMvAAC1yQ8icBw289.png)
圖 3該圖提供了支持 HDR-BT 的混合 I3C 總線示例。資料
帶內(nèi)中斷 (IBI) 和地址仲裁
與 I 2 C 不同,目標(biāo)可以在總線空閑(或空閑)時(shí)為 IBI 生成啟動(dòng)條件。如果在一定時(shí)間內(nèi)沒有交易發(fā)生,就會(huì)發(fā)生這種情況。當(dāng)活動(dòng)控制器檢測(cè)到來自目標(biāo)的啟動(dòng)條件時(shí),它提供時(shí)鐘信號(hào)以完成事務(wù)。如果兩個(gè)目標(biāo)試圖同時(shí)通信,尋址仲裁就會(huì)發(fā)生。
仲裁是確定允許哪個(gè)設(shè)備與控制器通信的過程。例如,假設(shè)兩個(gè)設(shè)備 A 和 B 想同時(shí)與活動(dòng)控制器通信。設(shè)備 A 的地址為 7‘h10,而設(shè)備 B 的地址為 7’h14。當(dāng)帶內(nèi)中斷產(chǎn)生時(shí),兩個(gè)設(shè)備都會(huì)嘗試將它們的地址傳輸?shù)交顒?dòng)控制器。在這種總線狀態(tài)下,數(shù)據(jù)線是漏極開路的。在開漏通信期間,線路通過上拉電阻被動(dòng)返回“1”,并可以主動(dòng)斷言為“0”。這可以防止同時(shí)傳輸 1 和 0 的兩個(gè)設(shè)備發(fā)生短路。
![wKgaomYjJqCAXwsyAABBuDkhc0Y232.png](https://file1.elecfans.com/web2/M00/D2/58/wKgaomYjJqCAXwsyAABBuDkhc0Y232.png)
圖 4 SDA 線的簡(jiǎn)化視圖顯示了上拉電阻是如何內(nèi)置在主控制器中的。資料
仲裁中的獲勝地址是控制器收到的地址。跟隨圖5,首先,從每個(gè)設(shè)備地址發(fā)送兩個(gè)零。接下來,兩者都將釋放其地址中“1”的數(shù)據(jù)線。然后,另一個(gè) 0 將由雙方傳輸。此時(shí),兩個(gè)設(shè)備都沒有贏得仲裁,因?yàn)榇藭r(shí)接收到的地址與兩者匹配。但是,對(duì)于下一位,其中一個(gè)目標(biāo)將釋放數(shù)據(jù)線以發(fā)送“1”,而另一個(gè)目標(biāo)將嘗試發(fā)送“0”。
![wKgZomYjJqaAMOtzAAFQ4pOUur4897.png](https://file1.elecfans.com/web2/M00/D1/78/wKgZomYjJqaAMOtzAAFQ4pOUur4897.png)
圖 5該示例顯示地址為 7‘h10 和 7’h14 的 I3C 仲裁。資料
“1”的發(fā)送器將失去仲裁,因?yàn)椤?”由開漏配置被動(dòng)驅(qū)動(dòng),而另一個(gè)目標(biāo)主動(dòng)斷言“0”。完成剩余的傳輸序列后,您可以看到控制器接收到地址 7‘h10,而不是 7’h14。因此,設(shè)備 B 仲裁失敗并停止通信。在 I3C 仲裁中,高地址設(shè)備總是輸給低地址設(shè)備。
I3C:一系列新功能
I3C 帶來了串行總線帶寬的顯著增加,以及一系列新功能。本文觸及了總線的特性和功能,但它并不是可能的特性和命令的詳盡列表。MIPI 聯(lián)盟提供了有關(guān)I3C 規(guī)范的更多詳細(xì)信息。
評(píng)論