IIC有兩個種線構成:1.數據線SDA 2.時鐘線SCL。數據線要配合時鐘線上的時鐘來轉輸數據,一個脈衝週期能夠傳輸1bit的數據,當時鍾處於高電平時,數據線不可以發生改變,處於低電平時,能夠任意改變。網絡
使用MSB的數據傳輸方式,先傳高位。spa
注意:在電路設計時時鐘線和數據線都必須都要分別接上拉電阻,爲電路提供高點平使用。設計
IIC的幾個基本概念:it
一、開始信號:當時鍾線爲高電平時,數據線發生降低沿跳變,該信號就被認爲是數據傳輸開始信號,說明開始傳輸數據。也就是說發送方開始向接收方發出數據時,由發送方開始發出的信號,發送方此後開始佔有IIC總線。io
二、結束信號:當時鍾線爲高電平時,數據線發生上升沿跳變,該信號就被認爲是數據傳輸結束信號,說明中止傳輸數據。也就是說發送方不想再向接收方發數據了,由發送方發出的信號,此後IIC總線處於空閒狀態。通信
三、應答信號:應答信號是在每次數據發送完的第9個時鐘脈衝由接收方迴應發送方的一種信號,該信號爲0時爲應答信號,表示數據傳輸成功;爲1時爲非應答信號。數據
注意:這裏所說的非應答信號並非說接收方不該答發送方。異常
何時迴應應答何時迴應非應答,你得看芯片的具體時序圖,不一樣芯片時序圖不同一般狀況請,正常接收到了,正常寫入,迴應應答信號,出現異常或者是但願提早結束本次通訊,一般迴應非應答時間
每一個具備IIC總線的設備中都有惟一的一個地址,該地址稱之爲器件地址。通常由是7bit和10bit,可是10bit不經常使用。由於10bit的地址咱們想處理時,要用2字節來處理,比較麻煩,固然也可使用,可是通常使用的是7bit器件地址+1bit讀寫位恰好爲1個字節,方便處理。co
IIC的仲裁機制:
簡單的說就是在多個主機中由哪個主機來做爲IIC總線的控制者的一種選擇機制。
1.競爭仲裁機制之因此可以實施,是由於IIC 內部開漏結構
2.每個主機,往時鐘線送電平的時候,它可以實時的感知到當前時鐘線上呈現的電平狀態
好比說在一個IIC網絡中有3個設備A,B,C,這三個設備均可以做爲主從機,在某一時刻,三個設備都發出低電平的信號0,在發送過程當中C->0忽然發生跳變至高電平C->1,此時C發現線路中仍然是有低電平存在,說明如今不僅是有C想要經過IIC總線進行通信,所以C設備將被設置爲接收狀態(浮空輸入);一段時間後,B->0也忽然跳變爲B->1高電平,此時B發現線路中仍然是有低電平存在,說明如今還有其餘主機想要經過IIC總線進行通信,則B設備將被設置爲接收狀態(浮空輸入);再一段時間後,A->0也忽然跳變爲A->1高電平,此時A發現線路中是有高電平存在,說明如今IIC總線上除了主機A想要控制外,沒有其它的主機想控制IIC總線,則此時認定A爲IIC總線的擁有者,直到A發出結束信號,使IIC總線爲空閒狀態爲止,其它主機才能擁有。
注意:一個IIC網絡中能夠有多個主機和從機,可是某一時刻只能有一臺主機來發送數據,由他來控制IIC總線。
IIC通信創建鏈接:
每一次通訊時候,都是由主機發起的,首先是主機發出起始信號,而後起始信號以後必須緊跟 要進行廣播接下來通訊的目標設備的器件地址7bit或10bit+讀寫位1bit,當芯片網絡裏其餘的設備收到這個地址和自身器件地址進行比對,若是不相同,就不激活,不參與接下來的通訊。若是某一個設備發現和剛剛主機廣播出來的地址相同,它就激活,而後要回應一個bit 的應答信號(低電平 數字信號0)。以後的通信由具體芯片具體設置。最後有主機發出中止信號。
發出起始信號------->器件地址(7bit)-------->讀寫位(1bit)------>應答信號----->數據傳輸鏈接------>應答信號----->發出結束信號