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