I2C匯流排協議

來源:互聯網
上載者:User
I2C匯流排協議2011-05-16 15:27

 

I2C匯流排協議學習筆記

1.I2C協議
   2條雙向串列線,一條資料線SDA,一條時鐘線SCL。
   SDA傳輸資料是大端傳輸,每次傳輸8bit,即一位元組。
   支援多主控(multimastering),任何時間點只能有一個主控。
   匯流排上每個裝置都有自己的一個addr,共7個bit,廣播位址全0.
   系統中可能有多個同種晶片,為此addr分為固定部分和可程式化部份,細節視晶片而定,看datasheet。

1.1 I2C位傳輸
   資料轉送:SCL為高電平時,SDA線若保持穩定,那麼SDA上是在傳輸資料bit;
   若SDA發生跳變,則用來表示一個會話的開始或結束(後面講)
   資料改變:SCL為低電平時,SDA線才能改變傳輸的bit

 1.2 I2C開始和結束訊號
   開始訊號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送資料。
   結束訊號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送資料。

   

1.3 I2C應答訊號

   Master每發送完8bit資料後等待Slave的ACK。
   即在第9個clock,若從IC發ACK,SDA會被拉低。
   若沒有ACK,SDA會被置高,這會引起Master發生RESTART或STOP流程,如下所示:

 1.4 I2C寫流程
寫寄存器的標準流程為:
1.    Master發起START
2.    Master發送I2C addr(7bit)和w操作0(1bit),等待ACK
3.    Slave發送ACK
4.    Master發送reg addr(8bit),等待ACK
5.    Slave發送ACK
6.    Master發送data(8bit),即要寫入寄存器中的資料,等待ACK
7.    Slave發送ACK
8.    第6步和第7步可以重複多次,即順序寫多個寄存器
9.    Master發起STOP

寫一個寄存器

 寫多個寄存器

 

 1.5 I2C讀流程

讀寄存器的標準流程為:
1.    Master發送I2C addr(7bit)和w操作1(1bit),等待ACK
2.    Slave發送ACK
3.    Master發送reg addr(8bit),等待ACK
4.    Slave發送ACK
5.    Master發起START
6.    Master發送I2C addr(7bit)和r操作1(1bit),等待ACK
7.    Slave發送ACK
8.    Slave發送data(8bit),即寄存器裡的值
9.    Master發送ACK
10.    第8步和第9步可以重複多次,即順序讀多個寄存器

讀一個寄存器

 讀多個寄存器

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.