1. 程式人生 > >I2C關於讀寫控制位

I2C關於讀寫控制位

*1、I2C協議簡介*
2、空閒開始/應答/結束訊號
2.1空閒
I2C匯流排匯流排的SDA和SCL兩條訊號線同時處於高電平時,規定為匯流排的空閒狀態。此時各個器件的輸出級場效電晶體均處在截止狀態,即釋放匯流排,由兩條訊號線各自的上拉電阻把電平拉高。
2.2 開始和結束
開始訊號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送資料。
結束訊號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送資料。

2.3 應答
傳送方在傳送完8bit資料後,在第9個時鐘期間釋放資料線,等待接收方的應答訊號。接收方此時應給出應答(ACK)或非應答訊號(NAK),SCL被拉低表示為應答訊號,SCL置高為NAK訊號。注意應答訊號由接收方發出(可能為主,也可能為從,主從和傳送接收不要混淆)。接收器在第9個時鐘脈衝之前的低電平期間將SDA線拉低,並且確保在該時鐘的高電平期間為穩定的低電平。 如果接收器是主控器,則在它收到最後一個位元組後,傳送一個NACK訊號,以通知被控傳送器結束資料傳送,並釋放SDA線,以便主控接收器傳送一個停止訊號P。

3、I2C讀寫
不論是讀還是寫,都是由主裝置發起和結束的。也就是由主裝置產生開始和結束條件。I2C裝置地址為8bit,其中最低位為讀寫位,0為寫,1為讀。實際地址位為7bit。
3.1 寫過程
可以總結為以下過程:
1、傳送起始位
2、傳送裝置地址資訊(寫)
4、傳送暫存器資訊
5、傳送資料資訊
6、傳送停止位
上述過程省略了等待應答,每傳送一個位元組資料都會等待應答。

這裡寫圖片描述
3.2 讀過程
讀過程相對來講會複雜一些,需要先寫(寫要讀的暫存器)再讀。並且讀的時候由主裝置傳送ACK
1、傳送起始位
2、傳送裝置地址資訊(寫)
4、傳送要讀的暫存器資訊
5、重新開始,restart
6、傳送裝置地址資訊(讀)
7、讀取資料
8、接收完畢,傳送NAK
9、傳送停止訊號

這裡寫圖片描述

讀過程的小結
讀過程可以理解先發送一個地址,這個地址不能是隻能是地址,最後一位空著,為0。即相當於寫。是相當於寫地址。但是可以理解它為純地址,切記最低位不能是1.即地址不能是讀地址。
然後再發送讀地址進行讀。