一.簡介
I2C(Inter-Integrated Circuit)總線是一種由Philips公司開發(fā)的兩線式串行總線,,用于連接微控制器及其外圍設(shè)備,。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),。由于其簡單性,,如今方泛用于微控制器與各種功能模塊的連接,可以說是學(xué)單片機的人,,入門之后,,必定要涉及到的。
I2C 總線實際上已經(jīng)成為一個國際標(biāo)準(zhǔn)在超過100 種不同的IC 上實現(xiàn),,而且得到超過50 家公司的許可,,正因為其簡單和應(yīng)用廣泛,,因此其功能也越來不滿足人們的要求,,其速度也從原來的100Kbit/S,增加了快速模式,,其速度達400Kbit/S,,再后來也增加了高速模式,其速度更達3.4Mbit/S,。
二.功能和特點
I2C總線是一種用于IC器件之間連接的雙向二線制總線,,所謂總線它上面可以掛多少器件,并且通個兩根線連接,,占用空間非常的小,,總線的長度可高達25英尺,并且能夠以10Kbps的最大傳輸速率支持40個組件,。它的另一優(yōu)點是多主控,,只要能夠進行接收和發(fā)送的設(shè)備都可以成為主控制器,當(dāng)然多個主控不能同一時間工作,。
I2C總線有兩根信號線,,一根為SDA(數(shù)據(jù)線),,一根為SCL(時鐘線)。任何時候時鐘信號都是由主控器件產(chǎn)生,。
I2C總線在傳送數(shù)據(jù)的過程中,,主要有三種控制信號:起始信號,結(jié)不信號,,應(yīng)答信號
起始信號:當(dāng)SCL為高電平時,,SDA由高電平轉(zhuǎn)為低電平時,開始傳送數(shù)據(jù)
結(jié)束信號:當(dāng)SCL為高電平時,,SDA由低電平轉(zhuǎn)為高電平時,,結(jié)束數(shù)據(jù)傳送
應(yīng)答信號:接收數(shù)據(jù)的器件在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的器件發(fā)出低電平信號,,表示已收到數(shù)據(jù),。這個信號可以是主控器件發(fā)出,也可以是從動器件發(fā)出,??傊山邮諗?shù)據(jù)的器件發(fā)出。
這些信號中,,起始信號是必需的,,結(jié)束信號和應(yīng)答信號,都可以不要,。
三.基本操作
下面我們以ATMEL公司的AT24C02來介紹I2C的基本操作
AT24C02是美國ATMEL公司的低功耗CMOS串行EEPROM,,它是內(nèi)含256×8bit存儲空間,具有工作電壓寬(2.5~5.5V),、擦寫次數(shù)多(大于10000次),、寫入速度快(小于10ms)等特點。他在系統(tǒng)中始終為從動器件,。
對AT24C02的操作主要有:字節(jié)讀,,字節(jié)寫,頁面讀,,頁面寫
首先發(fā)送起始信號,,如下圖,起始信號后必須是控制字,,
控制字格式如下,,其中高四位為器件類型識別符(不同的芯片類型有不同的定義,EEPROM一般應(yīng)為1010),,接著三位為片選,,也就是三個地址位,最后一位為讀寫控制位,,當(dāng)為1(Input)時為讀操作,,為0(Output)時為寫操作,。
控制字后就是相應(yīng)的操作,讀或?qū)?,一定不要結(jié)束,,因為這個操作還沒有完成,如果結(jié)束就等于放棄操作,。
先來看寫操作,,寫操作分為字節(jié)寫和頁面寫兩種操作,對于頁面寫根據(jù)芯片的一次裝載的字節(jié)不同有所不同,AT24C02為8字節(jié),,每寫一個字節(jié)后,,地址自動加1。關(guān)于頁面寫的地址,、應(yīng)答和數(shù)據(jù)傳送的時序參見圖3,,字節(jié)寫可以看成是只有一個字節(jié)的頁面寫,也就是寫一個數(shù)據(jù)后停止,。注意:寫一次需要一定時間,,一般為10ms,要等侍這個操作完成,。時序如下圖:
說明:對于AT24C02,,在控制字后還必須寫入地址,這個地址是以后讀寫的起始地址,。