I2C總線信號(hào)時(shí)序總結(jié)
總線空閑狀態(tài)
I2C總線總線的SDA和SCL兩條信號(hào)線同時(shí)處于高電平時(shí),規(guī)定為總線的空閑狀態(tài)。此時(shí)各個(gè)器件的輸出級(jí)場(chǎng)效應(yīng)管均處在截止?fàn)顟B(tài),即釋放總線,由兩條信號(hào)線各自的上拉電阻把電平拉高。
啟動(dòng)信號(hào)
在時(shí)鐘線SCL保持高電平期間,數(shù)據(jù)線SDA上的電平被拉低(即負(fù)跳變),定義為I2C總線總線的啟動(dòng)信號(hào),它標(biāo)志著一次數(shù)據(jù)傳輸?shù)拈_始。啟動(dòng)信號(hào)是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào)。啟動(dòng)信號(hào)是由主控器主動(dòng)建立的,在建立該信號(hào)之前I2C總線必須處于空閑狀態(tài)。
重啟動(dòng)信號(hào)
在主控器控制總線期間完成了一次數(shù)據(jù)通信(發(fā)送或接收)之后,如果想繼續(xù)占用總線再進(jìn)行一次數(shù)據(jù)通信(發(fā)送或接收),而又不釋放總線,就需要利用重啟動(dòng)Sr信號(hào)時(shí)序。重啟動(dòng)信號(hào)Sr既作為前一次數(shù)據(jù)傳輸?shù)慕Y(jié)束,又作為后一次數(shù)據(jù)傳輸?shù)拈_始。利用重啟動(dòng)信號(hào)的優(yōu)點(diǎn)是,在前后兩次通信之間主控器不需要釋放總線,這樣就不會(huì)丟失總線的控制權(quán),即不讓其他主器件節(jié)點(diǎn)搶占總線。
停止信號(hào)
在時(shí)鐘線SCL保持高電平期間,數(shù)據(jù)線SDA被釋放,使得SDA返回高電平(即正跳變),稱為I2C總線的停止信號(hào),它標(biāo)志著一次數(shù)據(jù)傳輸?shù)慕K止。停止信號(hào)也是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào),停止信號(hào)也是由主控器主動(dòng)建立的,建立該信號(hào)之后,I2C總線將返回空閑狀態(tài)。
數(shù)據(jù)位傳送
在I2C總線上傳送的每一位數(shù)據(jù)都有一個(gè)時(shí)鐘脈沖相對(duì)應(yīng)(或同步控制),即在SCL串行時(shí)鐘的配合下,在SDA上逐位地串行傳送每一位數(shù)據(jù)。進(jìn)行數(shù)據(jù)傳送時(shí),在SCL呈現(xiàn)高電平期間,SDA上的電平必須保持穩(wěn)定,低電平為數(shù)據(jù)0,高電平為數(shù)據(jù)1。只有在SCL為低電平期間,才允許 SDA上的電平改變狀態(tài)。邏輯0的電平為低電壓,而邏輯1的電平取決于器件本身的正電源電壓VDD(當(dāng)使用獨(dú)立電源時(shí))。數(shù)據(jù)位的傳輸是邊沿觸發(fā)。
應(yīng)答信號(hào)
I2C總線上的所有數(shù)據(jù)都是以8位字節(jié)傳送的,發(fā)送器每發(fā)送一個(gè)字節(jié),就在時(shí)鐘脈沖9期間釋放數(shù)據(jù)線,由接收器反饋一個(gè)應(yīng)答信號(hào)。應(yīng)答信號(hào)為低電平時(shí),規(guī)定為有效應(yīng)答位(ACK簡(jiǎn)稱應(yīng)答位),表示接收器已經(jīng)成功地接收了該字節(jié);應(yīng)答信號(hào)為高電平時(shí),規(guī)定為非應(yīng)答位(NACK),一般表示接收器接收該字節(jié)沒有成功。對(duì)于反饋有效應(yīng)答位ACK的要求是,接收器在第9個(gè)時(shí)鐘脈沖之前的低電平期間將SDA線拉低,并且確保在該時(shí)鐘的高電平期間為穩(wěn)定的低電平。如果接收器是主控器,則在它收到最后一個(gè)字節(jié)后,發(fā)送一個(gè)NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放SDA線,以便主控接收器發(fā)送一個(gè)停止信號(hào) P。
插入等待時(shí)間
如果被控器需要延遲下一個(gè)數(shù)據(jù)字節(jié)開始傳送的時(shí)間,則可以通過把時(shí)鐘線SCL電平拉低并且保持,使主控器進(jìn)入等待狀態(tài)。一旦被控器釋放時(shí)鐘線,數(shù)據(jù)傳輸就得以繼續(xù)下去,這樣就使得被控器得到足夠時(shí)間轉(zhuǎn)移已經(jīng)收到的數(shù)據(jù)字節(jié),或者準(zhǔn)備好即將發(fā)送的數(shù)據(jù)字節(jié)。帶有CPU的被控器在對(duì)收到的地址字節(jié)做出應(yīng)答之后,需要一定的時(shí)間去執(zhí)行中斷服務(wù)子程序,來分析或比較地址碼,其間就把SCL線鉗位在低電平上,直到處理妥當(dāng)后才釋放SCL線,進(jìn)而使主控器繼續(xù)后續(xù)數(shù)據(jù)字節(jié)的發(fā)送。
評(píng)論