【E課堂】I2C總線(xiàn)協(xié)議詳解
簡(jiǎn)介:
本文引用地址:http://dyxdggzs.com/article/201601/285417.htmI2C(Inter-Integrated Circuit)總線(xiàn)是一種由PHILIPS公司開(kāi)發(fā)的兩線(xiàn)式串行總線(xiàn),用于連接微控制器及其外圍設備。I2C總線(xiàn)產(chǎn)生于在80年代,最初為音頻和視頻設備開(kāi)發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信可隨時(shí)監控內存、硬盤(pán)、網(wǎng)絡(luò )、系統溫度等多個(gè)參數,增加了系統的安全性,方便了管理。
I2C總線(xiàn)特點(diǎn)
I2C總線(xiàn)最主要的優(yōu)點(diǎn)是其簡(jiǎn)單性和有效性。由于接口直接在組件之上,因此I2C總線(xiàn)占用的空間非常小,減少了電路板的空間和芯片管腳的數量,降低了互聯(lián)成本??偩€(xiàn)的長(cháng)度可高達25英尺,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件。I2C總線(xiàn)的另一個(gè)優(yōu)點(diǎn)是,它支持多主控(multimastering), 其中任何能夠進(jìn)行發(fā)送和接收的設備都可以成為主總線(xiàn)。一個(gè)主控能夠控制信號的傳輸和時(shí)鐘頻率。當然,在任何時(shí)間點(diǎn)上只能有一個(gè)主控。
I2C總線(xiàn)工作原理
總線(xiàn)的構成及信號類(lèi)型
I2C總線(xiàn)是由數據線(xiàn)SDA和時(shí)鐘SCL構成的串行總線(xiàn),可發(fā)送和接收數據。在CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯(lián)在這條總線(xiàn)上,但就像電話(huà)機一樣只有撥通各自的號碼才能工作,所以每個(gè)電路和模塊都有唯一的地址,在信息的傳輸過(guò)程中,I2C總線(xiàn)上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號分為地址碼和控制量?jì)刹糠?,地址碼用來(lái)選址,即接通需要控制的電路,確定控制的種類(lèi);控制量決定該調整的類(lèi)別(如對比度、亮度等)及需要調整的量。這樣,各控制電路雖然掛在同一條總線(xiàn)上,卻彼此獨立,互不相關(guān)。
I2C總線(xiàn)在傳送數據過(guò)程*有三種類(lèi)型信號, 它們分別是:開(kāi)始信號、結束信號和應答信號。
開(kāi)始信號:SCL為高電平時(shí),SDA由高電平向低電平跳變,開(kāi)始傳送數據。
結束信號:SCL為高電平時(shí),SDA由低電平向高電平跳變,結束傳送數據。
應答信號:接收數據的IC在接收到8bit數據后,向發(fā)送數據的IC發(fā)出特定的低電平脈沖,表示已收到數據。CPU向受控單元發(fā)出一個(gè)信號后,等待受控單元發(fā)出一個(gè)應答信號,CPU接收到應答信號后,根據實(shí)際情況作出是否繼續傳遞信號的判斷。若未收到應答信號,由判斷為受控單元出現故障。
這些信號中,起始信號是必需的,結束信號和應答信號,都可以不要。
目前有很多半導體集成電路上都集成了I2C接口。帶有I2C接口的單片機有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲器、監控芯片等也提供I2C接口
I2C 總線(xiàn)是一種用于IC器件之間連接的雙向二線(xiàn)制總線(xiàn),所謂總線(xiàn)它上面可以?huà)於鄠€(gè)器件,并且通過(guò)兩根線(xiàn)連接,占用空間非常的小,總線(xiàn)的長(cháng)度可長(cháng)達25英尺,并且能夠以10Kbps的最大傳輸速率支持4個(gè)組件。它的另一優(yōu)點(diǎn)是多主控,只要能夠進(jìn)行接收和發(fā)送的設備都可以成為主控制器,當然多個(gè)主控不能同一時(shí)間 工作。
I2C總線(xiàn)有兩根信號線(xiàn),一根為SDA(數據線(xiàn)),一根為SCL(時(shí)鐘線(xiàn))。任何時(shí)候時(shí)鐘信號都是由主控器件產(chǎn)生。
I2C總線(xiàn)操作
I2C規程運用主/從雙向通訊。器件發(fā)送數據到總線(xiàn)上,則定義為發(fā)送器,器件接收數據則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。 總線(xiàn)必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線(xiàn)的傳輸方向,并產(chǎn)生起始和停止條件。SDA線(xiàn)上的數據狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。
控制字節
在起始條件之后,必須是器件的控制字節,其中高四位為器件類(lèi)型識別符(不同的芯片類(lèi)型有不同的定義,EEPROM一般應為1010),接著(zhù)三位為片選,最后一位為讀寫(xiě)位,當為1時(shí)為讀操作,為0時(shí)為寫(xiě)操作。
寫(xiě)操作
寫(xiě)操作分為字節寫(xiě)和頁(yè)面寫(xiě)兩種操作,對于頁(yè)面寫(xiě)根據芯片的一次裝載的字節不同有所不同。
讀操作
讀操作有三種基本操作:當前地址讀、隨機讀和順序讀。圖4給出的是順序讀的時(shí)序圖。應當注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”。為了結束讀操作,主機必須在第9個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內保持SDA為高電平、然后發(fā)出停止條件。
I2C總線(xiàn)應用
目前有很多半導體集成電路上都集成了I2C接口。帶有I2C接口的單片機有:CYGNAL的 C8051F0XX系列,三星的S3C24XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲器、監控芯片等也提供I2C接口。
舉常I2C器件/I2C Device
1、存儲器類(lèi): ATMEL公司的AT24CXX系列EEPROM;
2、I2C總線(xiàn)8位并行IO口擴展芯片PCF8574/JLC1562;
3、I2C接口實(shí)時(shí)時(shí)鐘芯片DS1307/PCF8563/SD2000D/M41T80/ME901/ISL1208/;
4、I2C數據采集ADC芯片MCP3221(12bitADC)/ADS1100(16bitADC)/ADS1112(16bitADC)/MAX1238(12bitADC)/MAX1239(12bitADC);
5、I2C接口數模轉換DAC芯片DAC5574(8bitDAC)/DAC6573(10bitDAC)/DAC8571(16bitDAC)/;
6、I2C接口溫度傳感器TMP101/TMP275/DS1621/MAX6625
USB轉I2C專(zhuān)用芯片:USB2I2C
USB2I2C是一個(gè)USB總線(xiàn)轉I2C總線(xiàn)I2C/IIC/TWI/SMBUS的接口芯片,通過(guò)USB2I2C芯片可以非常方便地實(shí)現PC機USB總線(xiàn)和下位機端I2C接口(即IIC或TWI總線(xiàn):SCL 線(xiàn)、SDA 線(xiàn))之間的通信。
USB2I2C芯片上位機PC端提供簡(jiǎn)單易用的USBIOX.DLL動(dòng)態(tài)庫調用,可以方便地被VB,VC,Delphi,Labview,BCB等上位機開(kāi)發(fā)工具調用。相關(guān)例程在USBIO公司網(wǎng)站可以找到。
USB2I2C功能特點(diǎn):
●全速USB設備接口,兼容USB V2.0。
●外圍元件簡(jiǎn)單,只需1個(gè)12M晶體和2個(gè)電容。
●低成本,可以通過(guò)I2C總線(xiàn)直接實(shí)現上位機與下位機之間的連接,無(wú)需輔助MCU。
●上位機軟件能夠實(shí)現靈活實(shí)現I2C/IIC/TWI總線(xiàn)協(xié)議的各種操作。
●作為I2C總線(xiàn)Host/Master 主機端。
●I2C接口提供SCL和SDA信號線(xiàn),支持SCL時(shí)鐘4種不同傳輸速度:100KHz/400KHz/750KHz。
●采用SSOP-20小型封裝。
評論