一、什么是I2C?
I2C是串行數據總線,有兩根信號線組成,一根是SDA(數據線),一根是SCL(時鍾線)。I2C總線是多主從總線,當有兩個主機或多個主機同時初始化傳輸數據時,可以通過沖突檢測和仲裁防止數據被破壞,每個連接到總線上的設備都有唯一的地址,任何器件既可以作為主機也可以作為從機,但是同一時刻只允許有一個主機。數據傳輸和地址皆有軟件實現。發送到SDA 線上的每個字節必須為8 位,每次傳輸可以發送的字節數量不受限制。每個字節后必須跟一個響應位。首先傳輸的是數據的最高位(MSB),如果從機要完成一些其他功能后(例如一個內部中斷服務程序)才能接收或發送下一個完整的數據字節,可以使時鍾線SCL 保持低電平,迫使主機進入等待狀態,當從機准備好接收下一個數據字節並釋放時鍾線SCL 后數據傳輸繼續。
二、I2C協議