以下步驟說(shuō)明了 F/S 模式下的完整事務(wù)。
- 控制器通過(guò)產(chǎn)生啟動(dòng)條件來(lái)啟動(dòng)數(shù)據(jù)傳輸。圖 7-11 顯示,啟動(dòng)條件是當(dāng) SCL 為高電平時(shí)在 SDA 線上發(fā)生從高到低的轉(zhuǎn)換。所有與 I2C 兼容的器件都會(huì)識(shí)別啟動(dòng)條件。
- 控制器隨后產(chǎn)生 SCL 脈沖,并在 SDA 線上發(fā)送 7 位地址和讀取/寫(xiě)入方向位 (R/W)。在所有傳輸期間,控制器確保數(shù)據(jù)有效。圖 7-12 顯示,有效數(shù)據(jù)條件要求 SDA 線在時(shí)鐘脈沖的整個(gè)高電平期間保持穩(wěn)定。所有器件都識(shí)別控制器發(fā)送的地址,并將其與相應(yīng)內(nèi)部固定地址進(jìn)行比較。只有具有匹配地址的目標(biāo)器件才會(huì)通過(guò)在第 9 個(gè) SCL 周期的整個(gè)高電平期間拉低 SDA 線來(lái)生成確認(rèn)(另請(qǐng)參閱圖 7-10)。當(dāng)控制器檢測(cè)到此確認(rèn)時(shí),則表示與目標(biāo)的通信鏈路已建立。
- 控制器產(chǎn)生更多的 SCL 周期,以便向目標(biāo)器件發(fā)送(R/W 位為 0)數(shù)據(jù)或接收(R/W 位為 1)數(shù)據(jù)。在任一種情況下,接收器都必須確認(rèn)發(fā)送器發(fā)送的數(shù)據(jù)。因此,確認(rèn)信號(hào)可由控制器或目標(biāo)器件生成,具體取決于哪一方是接收器。9 位有效數(shù)據(jù)序列包含 8 個(gè)數(shù)據(jù)位和 1 個(gè)確認(rèn)位,并可根據(jù)需要繼續(xù)。
- 圖 7-11 顯示,為指示數(shù)據(jù)傳輸結(jié)束,控制器通過(guò)在 SCL 線處于高電平期間將 SDA 線從低電平拉至高電平來(lái)產(chǎn)生停止條件。此操作將釋放總線并停止與尋址的目標(biāo)器件之間的通信鏈路。所有與 I2C 兼容的器件都會(huì)識(shí)別停止條件。在收到停止條件后,將釋放總線,然后所有目標(biāo)器件等待啟動(dòng)條件,接著是匹配的地址。
圖 7-11 啟動(dòng)和停止條件
圖 7-12 在 I2C 總線上的位傳輸