I2C匯流排簡介

來源:互聯網
上載者:User

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步可以重複多次,即順序讀多個寄存器

讀一個寄存器

 讀多個寄存器

 2. PowerPC的I2C實現

Mpc8560的CCSR中控制I2C的寄存器共有6個。

 

2.1 I2CADR 地址寄存器

CPU也可以是I2C的Slave,CPU的I2C地址有 I2CADR指定

 2.2 I2CFDR 頻率設定寄存器

 The serial bit clock frequency of SCL is equal to the CCB clock divided by the divider.
用來設定I2C匯流排頻率

2.3 I2CCR 控制寄存器

 
MEN: Module Enable.    置1時,I2C模組使能
MIEN:Module Interrupt Enable. 置1時,I2C中斷使能。
MSTA:Master/slave mode. 1 Master mode,0 Slave mode.
        當1->0時,CPU發起STOP訊號
        當0->1時,CPU發起START訊號
MTX:Transmit/receive mode select.0 Receive mode,1 Transmit mode
TXAK:Transfer acknowledge. 置1時,CPU在9th clock發送ACK拉低SDA
RSTA:Repeat START. 置1時,CPU發送REPEAT START
BCST:置1,CPU接收廣播資訊(資訊的slave addr為7個0)

2.4 I2CSR 狀態寄存器

 MCF:0  Byte transfer is in process
     1  Byte transfer is completed

MAAS:當CPU作為Slave時,若I2CDR與會話中Slaveaddr匹配,此bit被置1

MBB:0 I2C bus idle 
     1 I2C bus busy

MAL:若置1,表示仲裁失敗
BCSTM:若置1,表示接收到廣播資訊

SRW:When MAAS is set, SRW indicates the value of the R/W command bit of the calling address, which is sent from the master.
   0 Slave receive, master writing to slave
   1 Slave transmit, master reading from slave

MIF:Module interrupt. The MIF bit is set when an interrupt is pending, causing a processor interrupt request(provided I2CCR[MIEN] is set)

RXAK:若置1,表示收到了ACK

2.5 I2CDR 資料寄存器

 
這個寄存器儲存CPU將要傳輸的資料。

文章轉自:http://dpinglee.blog.163.com/blog/static/14409775320112239374615/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.