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.即地址不能是讀地址。
然后再發送讀地址進行讀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM