I2C總線上只具有SOL(時(shí)鐘)和SDA(數(shù)據(jù))2根信號(hào)線。如果是單純的串行傳輸,一旦因?yàn)槟撤N原因造成引腳的偏差,則可能會(huì)造成不能區(qū)分總線上傳輸?shù)氖菙?shù)據(jù)還是地址信息的后果。解決上述問(wèn)題的簡(jiǎn)單辦法就是附加獨(dú)立于總線的Reset(復(fù)位)信號(hào),由主機(jī)控制該信號(hào)。因?yàn)镮2C至少利用2根線進(jìn)行所有的操作,因此在數(shù)據(jù)傳輸時(shí),通常當(dāng)SCL為低電平時(shí),設(shè)置下一個(gè)數(shù)據(jù);當(dāng)SDA變化后,SCI為高電平,這可以解釋為一連串操作的開(kāi)始/結(jié)束。
1. 起始條件
始條件表示一系列操作的開(kāi)始。圖1表示起始條件以及隨后數(shù)據(jù)傳輸?shù)拈_(kāi)始操作。在I2C總線的空閑狀態(tài)下,SDA及SCL通過(guò)上拉電阻都為高電平。在這樣的狀態(tài)下,如果SCL仍保持高電平,而SDA變?yōu)榈碗娖?則成為開(kāi)始指令。
圖1 I2C總線的起始條件
由于該狀態(tài)并不出現(xiàn)于地址及數(shù)據(jù)的發(fā)送與接收過(guò)程中,因此,即使在途中發(fā)生異常,只要檢測(cè)出該狀態(tài),初始化內(nèi)部的狀態(tài)機(jī),就可以使其恢復(fù)。
2. 結(jié)束條件
在一系列操作的最后是結(jié)束條件。結(jié)束條件如圖2所示。當(dāng)SOL為高電平時(shí),一旦SDA由低電平變化為高電平,即成為結(jié)束條件,主機(jī)與器件之間的通信將停止,器件恢復(fù)為空閑狀態(tài)。進(jìn)行寫操作時(shí)的結(jié)束狀態(tài)是開(kāi)始進(jìn)行EEPROM內(nèi)部單元寫操作的指示標(biāo)志。