在現(xiàn)代電子設(shè)備中,各種傳感器、芯片和模塊之間的通信至關(guān)重要。而I2C(Inter-Integrated Circuit)總線作為一種簡(jiǎn)單、高效的串行通信協(xié)議,已經(jīng)成為連接各種設(shè)備的首選之一。本文將深入探討I2C總線的工作原理與應(yīng)用,帶您了解這個(gè)在電子領(lǐng)域中扮演著重要角色的通信技術(shù)。
一、簡(jiǎn)介
I2C(Inter-Integrated Circuit)總線是一種由Philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā)。
由于其簡(jiǎn)單性,如今方泛用于微控制器與各種功能模塊的連接,可以說(shuō)是學(xué)單片機(jī)的人,入門之后,必定要涉及到的。
I2C 總線實(shí)際上已經(jīng)成為一個(gè)國(guó)際標(biāo)準(zhǔn)在超過(guò)100 種不同的IC 上實(shí)現(xiàn),而且得到超過(guò)50 家公司的許可,正因?yàn)槠浜?jiǎn)單和應(yīng)用廣泛,因此其功能也越來(lái)不滿足人們的要求,其速度也從原來(lái)的100Kbit/S,增加了快速模式,其速度達(dá)400Kbit/S,再后來(lái)也增加了高速模式,其速度更達(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ù)的過(guò)程中,主要有三種控制信號(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來(lái)介紹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é)束就等于放棄操作。
先來(lái)看寫操作,寫操作分為字節(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í)序如下圖。
說(shuō)明:對(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) :
嚴(yán)格按照時(shí)序圖的要求進(jìn)行操作;
若與口線上帶內(nèi)部上拉電阻的單片機(jī)接口連接,可以不外加上拉電阻;
程序中為配合相應(yīng)的傳輸速率,在對(duì)口線操作的指令后可用NOP指令加一定的延時(shí);
為了減少意外的干擾信號(hào)將EEPROM內(nèi)的數(shù)據(jù)改寫可用外部寫保護(hù)引腳(如果有),或者在EEPROM內(nèi)部沒有用的空間寫入標(biāo)志字,每次上電時(shí)或復(fù)位時(shí)做一次檢測(cè),判斷EEPROM是否被意外改寫。
通過(guò)本文的介紹,我們對(duì)I2C總線的工作原理和應(yīng)用有了更深入的了解。無(wú)論是在嵌入式系統(tǒng)、物聯(lián)網(wǎng)設(shè)備還是傳感器網(wǎng)絡(luò)中,I2C總線都發(fā)揮著至關(guān)重要的作用。它簡(jiǎn)單、高效的特點(diǎn)使得設(shè)備之間的通信變得更加便捷和可靠。隨著技術(shù)的不斷進(jìn)步,我們相信I2C總線在未來(lái)的應(yīng)用領(lǐng)域中將繼續(xù)發(fā)揮著重要的作用,連接著各種智能設(shè)備,為我們創(chuàng)造更加便利和智能的生活。
審核編輯:彭菁
-
通信技術(shù)
+關(guān)注
關(guān)注
20文章
1087瀏覽量
91966 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
40文章
3494瀏覽量
128675 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2893文章
42902瀏覽量
364464 -
總線
+關(guān)注
關(guān)注
10文章
2795瀏覽量
87588 -
I2C總線
+關(guān)注
關(guān)注
8文章
379瀏覽量
60617 -
總線協(xié)議
+關(guān)注
關(guān)注
0文章
96瀏覽量
14794
原文標(biāo)題:淺談I2C總線工作原理與應(yīng)用
文章出處:【微信號(hào):射頻美學(xué),微信公眾號(hào):射頻美學(xué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論