51單片機-IIC
IIC總線(xiàn)的硬件結構圖:

IIC支持多主和主從工作方式,通常為主從工作方式。在主從工作方式中,系統中只有一個(gè)主器件(單片機),其它器件都是具有IIC總線(xiàn)的外圍從器件。在主從工作方式中,主器件啟動(dòng)數據的發(fā)送(發(fā)出啟動(dòng)信號),產(chǎn)生時(shí)鐘信號,發(fā)出停止信號。 開(kāi)始信號:SCL為高電平,SDA由高電平向低電平跳變,開(kāi)始傳送數據 結束信號:SCL為高電平,SDA由低電平向高電平跳變,結束傳送數據 應答信號:接受數據的IC在接受到8bit數據后,向發(fā)送數據的IC發(fā)送特定的低電平脈沖,表示已經(jīng)接收到數據。CPU向受控單元發(fā)送一個(gè)信號后,等待受控單元發(fā)出一個(gè)應答信號,CPU接收到應答信號后,根據實(shí)際情況做出是否繼續傳送數據的判斷。若未收到應答信號,由判斷為受控單元出現故障。
這些信號中開(kāi)始信號是必須的,結束信號和應答信號都可以不要。
IIC總線(xiàn)進(jìn)行數據傳送時(shí),時(shí)鐘信號為高電平期間,數據線(xiàn)上的數據必須保持穩定,只有在時(shí)鐘信號為低電平期間,數據線(xiàn)上的高電平或低電平狀態(tài)才允許變化。

IIC總線(xiàn)協(xié)議規定,每傳送一個(gè)字節數據后,都要有一個(gè)應答信號,以確定數據傳送是否被對方收到。應答信號由接受設備產(chǎn)生,在SCL信號為高電平期間,接受設備將SDA拉為低電平,表示數據傳輸正確,產(chǎn)生應答。

IIC總線(xiàn)的時(shí)序圖:

許多單片機并不具有IIC總線(xiàn)接口,如51單片機。
單片機模擬IIC總線(xiàn)通信:
啟動(dòng)代碼: void start(){
SDA = 1;
delay();
SCL = 1;
delay();
SDA = 0;
delay();
}
停止代碼:
void stop(){
SDA = 0;
delay();
SCL = 1;
delay();
SDA = 1;
delay();
}
評論