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