《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > I2C總線的工作原理與應(yīng)用
I2C總線的工作原理與應(yīng)用
Epdoc
Epdoc
摘要: I2C總線的工作原理與應(yīng)用I2C(Inter-IntegratedCircuit)總線是一種由PHILIPS公司開(kāi)發(fā)的兩線式串行總線,,用于連接微控制器及其外圍設(shè)備,。I2C總線產(chǎn)生于在80年代,,最初為音頻和視頻設(shè)備開(kāi)發(fā),如今主要在服務(wù)器
關(guān)鍵詞: 接口IC I2C總線 接口互連
Abstract:
Key words :
</a>I2C總線" title="I2C總線">I2C總線" title="I2C總線">I2C總線" title="I2C總線">I2C總線的工作原理與應(yīng)用 
    I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開(kāi)發(fā)的兩線式串行總線,,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,,最初為音頻和視頻設(shè)備開(kāi)發(fā),,如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),,如電源和系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存,、硬盤(pán)、網(wǎng)絡(luò),、系統(tǒng)溫度等多個(gè)參數(shù),,增加了系統(tǒng)的安全性,方便了管理,。
  1  I2C總線特點(diǎn)
  I2C總線最主要的優(yōu)點(diǎn)是其簡(jiǎn)單性和有效性,。由于接口直接在組件之上,因此I2C總線占用的空間非常小,,減少了電路板的空間和芯片管腳的數(shù)量,,降低了互聯(lián)成本??偩€的長(zhǎng)度可高達(dá)25英尺,,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件。I2C總線的另一個(gè)優(yōu)點(diǎn)是,,它支持多主控(multimastering),, 其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線。一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率,。當(dāng)然,,在任何時(shí)間點(diǎn)上只能有一個(gè)主控。
  2  I2C總線工作原理
  2.1 總線的構(gòu)成及信號(hào)類(lèi)型
  I2C總線是由數(shù)據(jù)線SDA和時(shí)鐘SCL構(gòu)成的串行總線,,可發(fā)送和接收數(shù)據(jù),。在CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送,,最高傳送速率100kbps,。各種被控制電路均并聯(lián)在這條總線上,但就像電話機(jī)一樣只有撥通各自的號(hào)碼才能工作,,所以每個(gè)電路和模塊都有唯一的地址,,在信息的傳輸過(guò)程中,I2C總線上并接的每一模塊電路既是主控器(或被控器),,又是發(fā)送器(或接收器),,這取決于它所要完成的功能。CPU發(fā)出的控制信號(hào)分為地址碼和控制量?jī)刹糠?,地址碼用來(lái)選址,,即接通需要控制的電路,,確定控制的種類(lèi);控制量決定該調(diào)整的類(lèi)別(如對(duì)比度,、亮度等)及需要調(diào)整的量,。這樣,各控制電路雖然掛在同一條總線上,,卻彼此獨(dú)立,,互不相關(guān)。
  I2C總線在傳送數(shù)據(jù)過(guò)程中共有三種類(lèi)型信號(hào),, 它們分別是:開(kāi)始信號(hào),、結(jié)束信號(hào)和應(yīng)答信號(hào)。
  開(kāi)始信號(hào):SCL為高電平時(shí),,SDA由高電平向低電平跳變,,開(kāi)始傳送數(shù)據(jù)。
  結(jié)束信號(hào):SCL為低電平時(shí),,SDA由低電平向高電平跳變,,結(jié)束傳送數(shù)據(jù)。
  應(yīng)答信號(hào):接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),,CPU接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷,。若未收到應(yīng)答信號(hào),,由判斷為受控單元出現(xiàn)故障,。
  目前有很多半導(dǎo)體集成電路上都集成了I2C接口,。帶有I2C接口的單片機(jī)有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,,MICROCHIP的PIC16C6XX系列等,。很多外圍器件如存儲(chǔ)器、監(jiān)控芯片等也提供I2C接口,。
  3  總線基本操作
  I2C規(guī)程運(yùn)用主/從雙向通訊,。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,,器件接收數(shù)據(jù)則定義為接收器,。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。 總線必須由主器件(通常為微控制器)控制,,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,,并產(chǎn)生起始和停止條件,。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件,。參見(jiàn)圖1。

圖1 串行總線上的數(shù)據(jù)傳送順序

3.1 控制字節(jié)
  在起始條件之后,,必須是器件的控制字節(jié),,其中高四位為器件類(lèi)型識(shí)別符(不同的芯片類(lèi)型有不同的定義,EEPROM一般應(yīng)為1010),,接著三位為片選,,最后一位為讀寫(xiě)位,當(dāng)為1時(shí)為讀操作,,為0時(shí)為寫(xiě)操作,。如圖2所示。

圖2 控制字節(jié)配置

3.2 寫(xiě)操作
  寫(xiě)操作分為字節(jié)寫(xiě)和頁(yè)面寫(xiě)兩種操作,,對(duì)于頁(yè)面寫(xiě)根據(jù)芯片的一次裝載的字節(jié)不同有所不同,。關(guān)于頁(yè)面寫(xiě)的地址、應(yīng)答和數(shù)據(jù)傳送的時(shí)序參見(jiàn)圖3,。  

圖3 頁(yè)面寫(xiě)

3.3 讀操作
  讀操作有三種基本操作:當(dāng)前地址讀,、隨機(jī)讀和順序讀。圖4給出的是順序讀的時(shí)序圖,。應(yīng)當(dāng)注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”,。為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平,、然后發(fā)出停止條件,。

圖4 順序讀

4  實(shí)例:X24C04與MCS-51單片機(jī)軟硬件的實(shí)現(xiàn)
  X24C04是XICOR公司的CMOS 4096位串行EEPROM,內(nèi)部組織成512×8位,。16字節(jié)頁(yè)面寫(xiě),。與MCS-51單片機(jī)接口如圖5所示。由于SDA是漏極開(kāi)路輸出,,且可以與任何數(shù)目的漏極開(kāi)路或集電極 開(kāi)路輸出“線或”(wire-Ored)連接,。上拉電阻的選擇可參考X24C04的數(shù)據(jù)手冊(cè)。下面是通過(guò)I2C接口對(duì)X24C04進(jìn)行單字節(jié)寫(xiě)操作的例程,。流程圖及源程序如下:  

圖5 X24C04與51單片機(jī)接口

,;名稱(chēng):BSENT
;描述:寫(xiě)字節(jié)
,;功能:寫(xiě)一個(gè)字節(jié)
,;調(diào)用程序:無(wú)
;輸入?yún)?shù):A
,;輸出參數(shù):無(wú)
BSEND: MOV R2,#08H ,;1字節(jié)8位
SENDA: CLR P3.2    ,;
RLC A              ;左移一位
MOV P3.3,C         ,;寫(xiě)一位
SETB P3.2
DJNZ R2,SENDA      ,;寫(xiě)完8個(gè)字節(jié)?
CLR P3.2           ,;應(yīng)答信號(hào)
SETB P3.3
SETB P3.2
RET

圖6 流程圖

 5  結(jié)束語(yǔ)
  在I2C總線的應(yīng)用中應(yīng)注意的事項(xiàng)總結(jié)為以下幾點(diǎn) :
  1) 嚴(yán)格按照時(shí)序圖的要求進(jìn)行操作,,
  2) 若與口線上帶內(nèi)部上拉電阻的單片機(jī)接口連接,可以不外加上拉電阻,。
  3) 程序中為配合相應(yīng)的傳輸速率,,在對(duì)口線操作的指令后可用NOP指令加一定的延時(shí)。
  4) 為了減少意外的干擾信號(hào)將EEPROM內(nèi)的數(shù)據(jù)改寫(xiě)可用外部寫(xiě)保護(hù)引腳(如果有),,或者在EEPROM內(nèi)部沒(méi)有用的空間寫(xiě)入標(biāo)志字,,每次上電時(shí)或復(fù)位時(shí)做一次檢測(cè),判斷EEPROM是否被意外改寫(xiě),。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。