IIC標准速率為100Kbit/s,快速模式400Kbit/s,支持多機通信,支持多主控模塊,但是同一時刻只允許有一個主控。由數據線SDA和時鍾SCL構成串行總線;每個電路模塊都有唯一地址。I2C設備的操作可分為寫單個字節存儲,寫多個字節存儲,讀單個存儲字節和讀多個存儲字節,操作如下:
a) 總線空閑狀態
I2C總線的SDA和SCL兩條信號線同時處於高電平時,規定為總線的空閑狀態。此時各個器件的輸出級的場效應管均處於截止狀態,即釋放總線,由兩條信號線各自的上拉電阻把電平拉高。
b) 啟動信號(start)
在時鍾線SCL保持高電平期間,數據線SDA上的電平被拉低(負跳變),定義為I2C總線的啟動信號,它標志着一次數據傳輸的開始。啟動信號是由主控器主動建立的,在建立該信號之前 I2C 總線必須處於空閑狀態。
c) 停止信號(stop)
在時鍾線SCL保持高電平期間,數據線SDA被釋放,使得SDA返回高電平(即正跳變),稱為I2C總線的停止信號,它標志着一次數據傳輸的終止。停止信號也是由主控器主動建立的,建立該信號之后,I2C總線將返回空閑狀態。
d) 數據位傳送
在I2C總線上傳送的每一位數據都有一個時鍾脈沖相對應(或同步控制),即在SCL串行時鍾的配合下,在SDA上逐位地串行傳送每一位數據。進行數據傳送時,在SCL呈現高電平期間,SDA上的電平必須保持穩定,低電平為數據0,高電平為數據1。只有在SCL為低電平期間,才允許SDA上的電平改變狀態。
e) 應答信號(ACK和NACK)
I2C總線上的所有數據都是以8位傳送的,發送器每發送一個字節,就在時鍾脈沖9期間釋放數據線,由接收器反饋一個應答信號。應答信號為低電平時,規定為有效應答位(ACK簡稱應答位),表示接收器已經成功地接收了該字節;應答信號為高電平時,規定為非應答位(NACK),一般表示接收器接收該字節沒有成功。對於反饋有效應答位ACK的要求是,接收器在第9個時鍾脈沖之前的低電平期間將 SDA 線拉低,並且確保在該時鍾的高電平期間為穩定的低電平。
如果接收器是主控器,則在它收到最后一個字節后,發送一個NACK信號,以通知被控發送器結束數據發送,並釋放SDA線,以便主控接收器發送一個停止信號。