一、技術效能:
工作速率有100K和400K兩種;
支援多機通訊;
支援多主控模組,但同一時刻只允許有一個主控;
由資料線SDA和時鐘SCL構成的串列匯流排;
每個電路和模組都有唯一的地址;
每個器件可以使用獨立電源但是必須共地
二、基本工作原理:
以啟動訊號START來掌管匯流排,以停止訊號STOP來釋放匯流排;
每次通訊以START開始,以STOP結束;
啟動訊號START後緊接著發送一個地址位元組,其中7位為被控器件的地址碼,一位為讀/寫控制位R/W,R./W位為0表示由主控向被控器件寫資料,R/W為1表示由主控向被控器件讀資料;
當被控器件檢測到收到的地址與自己的地址相同時,在第9個時鐘期間反饋應答訊號;
每個資料位元組在傳送時都是高位(MSB)在前;
寫通訊過程:
1、 主控在檢測到匯流排閒置狀況下,首先發送一個START訊號掌管匯流排;
2、 發送一個地址位元組(包括7位地址碼和一位R/W);
3、 當被控器件檢測到主控發送的地址與自己的地址相同時發送一個應答訊號(ACK);
4、 主控收到ACK後開始發送第一個資料位元組;
5、 被控器收到資料位元組後發送一個ACK表示繼續傳送資料,發送NACK表示傳送資料結束;
6、 主控發送完全部資料後,發送一個停止位STOP,結束整個通訊並且釋放匯流排;
讀通訊過程:
1、 主控在檢測到匯流排閒置狀況下,首先發送一個START訊號掌管匯流排;
2、 發送一個地址位元組(包括7位地址碼和一位R/W);
3、 當被控器件檢測到主控發送的地址與自己的地址相同時發送一個應答訊號(ACK);
4、 主控收到ACK後釋放資料匯流排,開始接收第一個資料位元組;
5、 主控收到資料後發送ACK表示繼續傳送資料,發送NACK表示傳送資料結束;
6、 主控發送完全部資料後,發送一個停止位STOP,結束整個通訊並且釋放匯流排;
三、 匯流排訊號時序分析
1、 匯流排空閑狀態
SDA和SCL兩條訊號線都處於高電平,即匯流排上所有的器件都釋放匯流排,兩條訊號線各自的上拉電阻把電平拉高;
2、 啟動訊號START
時鐘訊號SCL保持高電平,資料訊號SDA的電平被拉低(即負跳變)。啟動訊號必須是跳變訊號,而且在建立該訊號前必修保證匯流排處於空閑狀態;
3、 停止訊號STOP
時鐘訊號SCL保持高電平,資料線被釋放,使得SDA返回高電平(即正跳變),停止訊號也必須是跳變訊號。
4、 資料傳送
SCL線呈現高電平期間,SDA線上的電平必須保持穩定,低電平表示0(此時的線電壓為地電壓),高電平表示1(此時的電壓由元器件的VDD決定)。只有在SCL線為低 電平期間,SDA上的電平允許變化。
5、 應答訊號ACK
I2C匯流排的資料都是以位元組(8位)的方式傳送的,發送器件每發送一個位元組之後,在時鐘的第9個脈衝期間釋放資料匯流排,由接收器發送一個ACK(把資料匯流排的電平拉 低)來表示資料成功接收。
6、 無應答訊號NACK
在時鐘的第9個脈衝期間發送器釋放資料匯流排,接收器不拉低資料匯流排表示一個NACK,NACK有兩種用途:a、一般表示接收器未成功接收資料位元組;b、當接收器是主控器時,它收到最後一個位元組後,應發送一個NACK訊號,以通知被控發送器結束資料發送,並釋放匯流排,以便主控接收器發送一個停止訊號STOP。
7、其它訊號如插入等待、重啟動、時鐘同步、匯流排仲裁、匯流排封鎖等不經常使用,請參閱資料。
四、 定址約定
地址的分配方法有兩種:
1、含CPU的智能器件,地址由軟體初始化時定義,但不能與其它的器件有衝突;
2、不含CPU的非智能器件,由廠家在器件內部固化,不可改變。
高7位為地址碼,其分為兩部分:1、高4位屬於固定地址不可改變,由廠家固化的統一地址;2、低三位為引腳設定地址,可以由外部引腳來設定(並非所有器件都可以設定);
五、時序圖
我們來看I2C協議中的資料轉送時序圖:
SCL是時鐘,SDA承載的是資料。當SDA從1變動到0,而SCL還是1時,表示開始資料轉送。接下來的7位,就是裝置的地址。緊接著的是讀寫標誌,其為1時是讀取,為0則是寫。如果I2C匯流排上存在著和請求的地址相對應的裝置,則從裝置會發送一個ACK訊號通知主裝置,可以發送資料了。接到ACK訊號後,主裝置則發送一個8位的資料。當傳輸完畢之後,SCL保持為1,SDA從0變換到1時,標明傳輸結束。
從這個時序圖中可以看到,SCL很重要,並且哪個時鐘沿是幹嘛的,都是確定好的。比如,前面7個必定是地址,第8個是讀寫標誌,資料轉送必須是8位,必須接個ACK訊號等等。
前面的時序圖並沒有標明資料轉送的方向,我們現在看看寫操作的資料流向:
網格的是主裝置發送的,白色格子是從裝置發送的。從圖示中可以看到,對於寫操作,從裝置都只是發送ACK進行確認而已。
而讀操作的資料流向,就有所不同,
這時候,從裝置除了發送ACK以外,緊跟著的還有資料。