《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 淺談I2C總線工作原理與應(yīng)用
淺談I2C總線工作原理與應(yīng)用
摘要: I2C 總線實(shí)際上已經(jīng)成為一個(gè)國(guó)際標(biāo)準(zhǔn)在超過100 種不同的IC 上實(shí)現(xiàn),而且得到超過50 家公司的許可,,正因?yàn)槠浜?jiǎn)單和應(yīng)用廣泛,,因此其功能也越來不滿足人們的要求,其速度也從原來的100Kbit/S,,增加了快速模式,,其速度達(dá)400Kbit/S,再后來也增加了高速模式,,其速度更達(dá)3.4Mbit/S,。
Abstract:
Key words :

一.簡(jiǎn)介

  I2C(Inter-Integrated Circuit)總線是一種由Philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備,。I2C總線產(chǎn)生于在80年代,,最初為音頻和視頻設(shè)備開發(fā)。由于其簡(jiǎn)單性,,如今方泛用于微控制器與各種功能模塊的連接,,可以說是學(xué)單片機(jī)的人,入門之后,,必定要涉及到的,。

  I2C 總線實(shí)際上已經(jīng)成為一個(gè)國(guó)際標(biāo)準(zhǔn)在超過100 種不同的IC 上實(shí)現(xiàn),,而且得到超過50 家公司的許可,正因?yàn)槠浜?jiǎn)單和應(yīng)用廣泛,,因此其功能也越來不滿足人們的要求,,其速度也從原來的100Kbit/S,增加了快速模式,,其速度達(dá)400Kbit/S,,再后來也增加了高速模式,其速度更達(dá)3.4Mbit/S,。

  二.功能和特點(diǎn)

  I2C總線是一種用于IC器件之間連接的雙向二線制總線,,所謂總線它上面可以掛多少器件,并且通個(gè)兩根線連接,,占用空間非常的小,,總線的長(zhǎng)度可高達(dá)25英尺,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件,。它的另一優(yōu)點(diǎn)是多主控,,只要能夠進(jìn)行接收和發(fā)送的設(shè)備都可以成為主控制器,當(dāng)然多個(gè)主控不能同一時(shí)間工作,。

  I2C總線有兩根信號(hào)線,,一根為SDA(數(shù)據(jù)線),一根為SCL(時(shí)鐘線),。任何時(shí)候時(shí)鐘信號(hào)都是由主控器件產(chǎn)生,。

  I2C總線在傳送數(shù)據(jù)的過程中,主要有三種控制信號(hào):起始信號(hào),,結(jié)不信號(hào),,應(yīng)答信號(hào)

  起始信號(hào):當(dāng)SCL為高電平時(shí),SDA由高電平轉(zhuǎn)為低電平時(shí),,開始傳送數(shù)據(jù)

  結(jié)束信號(hào):當(dāng)SCL為高電平時(shí),,SDA由低電平轉(zhuǎn)為高電平時(shí),結(jié)束數(shù)據(jù)傳送

  應(yīng)答信號(hào):接收數(shù)據(jù)的器件在接收到8bit數(shù)據(jù)后,,向發(fā)送數(shù)據(jù)的器件發(fā)出低電平信號(hào),,表示已收到數(shù)據(jù)。這個(gè)信號(hào)可以是主控器件發(fā)出,,也可以是從動(dòng)器件發(fā)出,。總之由接收數(shù)據(jù)的器件發(fā)出,。

  這些信號(hào)中,起始信號(hào)是必需的,,結(jié)束信號(hào)和應(yīng)答信號(hào),,都可以不要,。

  三.基本操作

  下面我們以ATMEL公司的AT24C02來介紹I2C的基本操作

  AT24C02是美國(guó)ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含256×8bit存儲(chǔ)空間,,具有工作電壓寬(2.5~5.5V),、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點(diǎn),。他在系統(tǒng)中始終為從動(dòng)器件,。

  對(duì)AT24C02的操作主要有:字節(jié)讀,字節(jié)寫,,頁(yè)面讀,,頁(yè)面寫

  首先發(fā)送起始信號(hào),如下圖,,起始信號(hào)后必須是控制字,,




    控制字格式如下,其中高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,,EEPROM一般應(yīng)為1010),,接著三位為片選,也就是三個(gè)地址位,,最后一位為讀寫控制位,,當(dāng)為1(Input)時(shí)為讀操作,為0(Output)時(shí)為寫操作,。




  控制字后就是相應(yīng)的操作,,讀或?qū)懀欢ú灰Y(jié)束,,因?yàn)檫@個(gè)操作還沒有完成,,如果結(jié)束就等于放棄操作。

  先來看寫操作,,寫操作分為字節(jié)寫和頁(yè)面寫兩種操作,,對(duì)于頁(yè)面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同,AT24C02為8字節(jié),,每寫一個(gè)字節(jié)后,,地址自動(dòng)加1。關(guān)于頁(yè)面寫的地址,、應(yīng)答和數(shù)據(jù)傳送的時(shí)序參見圖3,,字節(jié)寫可以看成是只有一個(gè)字節(jié)的頁(yè)面寫,也就是寫一個(gè)數(shù)據(jù)后停止,。注意:寫一次需要一定時(shí)間,,一般為10ms,要等侍這個(gè)操作完成,。時(shí)序如下圖:

  說明:對(duì)于AT24C02,,在控制字后還必須寫入地址,,這個(gè)地址是以后讀寫的起始地址。



  讀操作有三種基本操作:當(dāng)前地址讀,、隨機(jī)讀和順序讀,。三種操作方法類似,只是讀的數(shù)據(jù)個(gè)數(shù)不同,,可連續(xù)讀8個(gè)字節(jié),,圖4給出的是順序讀的時(shí)序圖,圖中共讀了四個(gè)數(shù)據(jù),,需要注意的是當(dāng)前的地址,,如果不是想要的,可以用寫操作,,重新寫入地址,。非常重要的是,每讀一個(gè)數(shù)據(jù)后,,必須置低SDA,,作為應(yīng)答,否則,,只能讀一個(gè)數(shù)據(jù),,后面的數(shù)據(jù),因?yàn)槭盏讲粦?yīng)答信號(hào),,AT24C02就會(huì)認(rèn)為出錯(cuò),,停止操作。特別提醒的是,,當(dāng)SCL為低電平時(shí),,數(shù)據(jù)是可變的,因些只有SCL為高電平時(shí),,才能讀數(shù),。

    四.例程序(51匯編,測(cè)試單片機(jī)為AT89C51,,12M晶振)

  電路連接如圖5,,其中A0,A1,,A2為地址線,,本例中全部接地,因此全部為0,。由于SCL和SDA為漏極開路輸出,,所以在使用時(shí),需加上拉電阻

  五 . 結(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ù)改寫可用外部寫保護(hù)引腳(如果有),,或者在EEPROM內(nèi)部沒有用的空間寫入標(biāo)志字,,每次上電時(shí)或復(fù)位時(shí)做一次檢測(cè),判斷EEPROM是否被意外改寫,。

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