一、概述
I2C(Inter-Integrated Circuit BUS) 集成電路總線,該總線由NXP(原PHILIPS)公司設計,多用於主控制器和從器件間的主從通信,在小數據量場合使用,傳輸距離短,任意時刻只能有一個主機等特性。
I2C總線有兩條線,分別是數據線SDA,時鍾線SCL。I2C的開始、數據傳輸、結束和應答都是用SDA和SCL的高低電平來實現,即時序。
二、I2C協議時序
I2C時序如下:
1、開始信號(發送方)
I2C的數據傳輸開始信號是 SCL=1 SDA下降沿 ,完成開始信號后的狀態應該是 SCL=1 SDA=0 。
2、數據傳輸(發送方)
I2C數據傳輸時,SDA數據線只能在SCL=0時產生變化,SCL=1時發送該位數據(實際上是上升沿期間發送數據)。
3、應答信號(接收方)
接收方接受完8位數據后,可以產生應答信號,也可以不產生應答信號。先拉低SCL=0;若產生應答信號,則SDA=0,若不產生應答信號,則SDA=1;使SCL=1。
4、結束信號(發送方)
使SCL=1 SDA上升沿,完成結束信號。
三、代碼實現
寫了一個小時忘保存了T^T,還是直接看源代碼吧...