I2C 數(shù)據(jù)傳輸通過物理雙線接口進(jìn)行,該接口由單向串行時鐘 (SCL) 和雙向數(shù)據(jù) (SDA) 線路組成。這些傳輸可以在標(biāo)準(zhǔn)模式下以 100kbits/s 的速度進(jìn)行,在快速模式下以 400kbits/s 的速度進(jìn)行,在快速模式 Plus 下以 1Mbits/s 的速度進(jìn)行,在高速模式下可以以高達(dá) 3.4Mbits/s 的速度進(jìn)行。每個數(shù)據(jù)速率都有自己的時序規(guī)范,主站和從站必須遵守該規(guī)范才能正確傳輸數(shù)據(jù)。I2C 兼容設(shè)備必須能夠以自己的最大比特率跟蹤傳輸,方法是能夠以選定的數(shù)據(jù)速率傳輸或接收數(shù)據(jù)。有一些細(xì)微差別,例如在給定數(shù)據(jù)速率下正確傳輸數(shù)據(jù)的設(shè)置和保持時間。
圖1,取自恩智浦“I2C-Bus規(guī)范和用戶手冊“,描述了一個時序圖,該時序圖提供了I上快速模式器件的各種時序規(guī)格的定義2C總線。我們將僅使用快速模式時序圖進(jìn)行討論,因為LTC I的大多數(shù)2C 部分支持此模式。但是,所討論的定義也適用于其他速度模式。我們還將僅討論這些規(guī)范如何應(yīng)用于從屬設(shè)備,因為凌力爾特 I2C 兼容設(shè)備通常是從設(shè)備。
圖1:I2C 快速模式時序定義
上升 (tr) 和秋天 (tf) 次
tr定義為上升沿從 SDA 和 SCL 的 30% 幅度達(dá)到 70% 幅度所花費的時間,而f定義為下降沿從 70% 的幅度達(dá)到 30% 幅度所花費的時間。
圖 2:上升和下降時間
設(shè)置和保持時間
設(shè)置時間定義為數(shù)據(jù)在采樣之前必須保持穩(wěn)定的時間量。此間隔通常在上升 SCL 邊沿和 SDA 更改狀態(tài)之間。另一方面,保持時間定義為開始采樣后的時間間隔。此間隔通常在 SCL 邊沿下降和 SDA 更改狀態(tài)之間。在這些時間間隔內(nèi)保持?jǐn)?shù)據(jù)穩(wěn)定非常重要,因為如果不這樣做,將導(dǎo)致數(shù)據(jù)采樣不正確。
在我2C 標(biāo)準(zhǔn) 這些間隔中所需的最短時間量(隨運行速度模式而異)針對 START 和 STOP 條件以及數(shù)據(jù)位指定。我2在這些參數(shù)中指定了與C兼容的從設(shè)備以識別傳入數(shù)據(jù)。
啟動條件的設(shè)置和保持時間
回想一下,起始條件定義為在 SCL 轉(zhuǎn)換為低之前 SDA 線變?yōu)榈碗娖綍r,即當(dāng) SCL 線變?yōu)楦唠娖綍r,SDA 轉(zhuǎn)換到低狀態(tài)。
圖 3:啟動和停止條件
啟動條件的保持時間 (t硬盤;斯塔):是 SCL 變?yōu)榈碗娖街皵?shù)據(jù)應(yīng)為低的最短時間。它被測量為從 SDA 的 30% 振幅從高到低過渡到 SCL 振幅的 70% 從高到低過渡所花費的時間。
圖4:(重復(fù))啟動條件的建立和保持時間
啟動條件的設(shè)置時間 (t蘇;斯塔):是僅在重復(fù)啟動條件下考慮的時序規(guī)范。這是SDA線在開始重復(fù)啟動之前保持高電平所需的最短時間。這是作為 SCL 從低到高轉(zhuǎn)換的 70% 振幅和 SDA 從高到低躍遷的 70% 振幅之間的時間間隔來測量的。
停止條件設(shè)置
在停止條件下,SDA 在 SCL 轉(zhuǎn)換為高后轉(zhuǎn)換為高狀態(tài)。參見圖 3。停止條件沒有保持時間要求,但仍需要最短設(shè)置時間。
停止條件的設(shè)置時間 (t蘇;STO) 測量為 SCL 上升沿的 70% 幅度與停止條件下 SDA 信號上升沿 30% 幅度之間的時間。
圖 5:停止條件的設(shè)置時間
數(shù)據(jù)的設(shè)置時間 (t蘇達(dá)特)
同樣,數(shù)據(jù)也有一個設(shè)置時間,它被定義為在SCL轉(zhuǎn)換發(fā)生之前SDA達(dá)到穩(wěn)定水平所需的最短時間。這是在下降沿期間 SDA 的 30% 振幅或上升沿期間 70% 的 SDA 振幅和上升沿期間 30% 的 SCL 振幅之間測量的。
圖 6:數(shù)據(jù)的設(shè)置時間
數(shù)據(jù)有效時間 (tDV;DAT)
數(shù)據(jù)的有效性在每個數(shù)據(jù)和時鐘轉(zhuǎn)換時進(jìn)行測量。我2C 規(guī)范規(guī)定了不同速度下允許的最大數(shù)據(jù)有效時間。數(shù)據(jù)有效時間 tDV;DAT在 SDA 的下降沿為 30% 或 SDA 的上升沿以 70% 幅度之間測量,參考 SCL 下降沿的 30%。還有一個單獨的確認(rèn)有效時間規(guī)范 tDV;ACK其測量類似于數(shù)據(jù)有效時間,只是僅在第八個時鐘位的下降沿處測量。參見圖1。
緩沖時間(t迷)
緩沖時間指定停止和啟動條件之間的總線空閑時間。此時間段允許總線上的其他設(shè)備檢測到空閑總線并嘗試傳輸數(shù)據(jù)。從設(shè)備通常將此指定為所需的最小總線空閑時間。如果主設(shè)備(先前與另一臺設(shè)備通信)嘗試尋址從設(shè)備,而不讓經(jīng)過的緩沖時間在其停止和啟動條件之間經(jīng)過,則從設(shè)備可能無法將新的啟動條件區(qū)分為單獨的事務(wù),并且可能不會響應(yīng)。
圖7:公交車空閑時間
現(xiàn)在我們已經(jīng)定義了各種時序規(guī)范,讓我們看看它們是如何由 I 指定的2C 規(guī)范。參見圖8,該圖取自恩智浦I2C 用戶手冊。
圖8:恩智浦I2C 時序規(guī)格
I2C 規(guī)格表定義了其參數(shù),以允許 IC 設(shè)計人員設(shè)計其 IC 以兼容總線要求。例如,與快速模式I兼容的IC2C語言設(shè)計用于識別至少0.6μs的啟動條件保持時間。它可以設(shè)計為識別更快的保持時間,但至少應(yīng)該識別高達(dá)0.6μs的時序。
根據(jù)此規(guī)范,制造商定義 I2其IC的C兼容性有兩種方式。下面提供了其中的示例。
奴隸 I2C 時序規(guī)格:兩個視角
LTC?2493 是一款 24 位三角積分 ADC,其指定其 I2C 時序如下:
圖 9:LTC2493 I2C 時序規(guī)格表
而 LTC4261 是一款 48V 熱插拔控制器,其指定時序如下所示:
圖 10:LTC4261 時序規(guī)格表
注意到差異了嗎?兩種設(shè)備具有相同的規(guī)格,但以不同的方式呈現(xiàn),雖然這可能是混淆的根源,但很容易解釋。
LTC2493 時序規(guī)格表表示固件設(shè)計人員的數(shù)據(jù),告訴設(shè)計人員該怎么做。例如,重復(fù)啟動條件的設(shè)置時間指定為最小600ns,這意味著主機需要提供至少600ns建立時間的脈沖。這是 I 的副本2C 規(guī)范,并指示固件工程師信號的時序應(yīng)該是什么。
另一方面,LTC4261 從 IC 本身的角度表示數(shù)據(jù),告訴固件設(shè)計人員 IC 本身的功能。例如,重復(fù)啟動條件的最短建立時間定義為典型數(shù) 30ns,最大值為 600n,這意味著 LTC4261 保證最短建立時間不超過 600ns (因此它滿足規(guī)格要求的最小 600ns),事實上,它可以識別低至 30ns 的建立時間間隔, 允許更大的時間余量。
因此,即使時序規(guī)格描述相同的數(shù)據(jù),也可以以不同的方式呈現(xiàn)。在上述兩個示例的情況下,兩個部分都與 I 一致2C標(biāo)準(zhǔn)并遵守I2C 時序要求。
審核編輯:郭婷
-
恩智浦
+關(guān)注
關(guān)注
14文章
5945瀏覽量
113034 -
總線
+關(guān)注
關(guān)注
10文章
2948瀏覽量
89341 -
I2C
+關(guān)注
關(guān)注
28文章
1534瀏覽量
127004
發(fā)布評論請先 登錄
I2C讀寫時序分析和實現(xiàn)思路

i2c總線規(guī)范
I2C總線規(guī)范與I2C器件C51讀寫程序
I2C Guid I2C指南
嵌入式內(nèi)核及驅(qū)動開發(fā)-09IIC子系統(tǒng)框架使用(I2C協(xié)議和時序,I2C驅(qū)動框架,I2C從設(shè)備驅(qū)動開發(fā),MPU6050硬件連接

硬件I2C與模擬I2C

Gowin I2C Master/Slave用戶指南

評論