i2c總線是philips公司推出的芯片間串行傳輸總線。它用兩根線實(shí)現(xiàn)了完備的全雙工同步數(shù)據(jù)傳送,可以極為方便地構(gòu)成多機(jī)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng)。i2c總線采用了器件地址的硬件設(shè)置方法,通過軟件尋址完全避免了器件的片選線尋址方法,從而使硬件系統(tǒng)具有簡(jiǎn)單靈活的擴(kuò)展方法,按照i2c總線規(guī)范,總線傳輸中的所有狀態(tài)都生成相對(duì)應(yīng)的狀態(tài)碼,系統(tǒng)中的主機(jī)能夠依照這些狀態(tài)碼自動(dòng)地進(jìn)行總線管理,用戶只要在程序中裝入這些標(biāo)準(zhǔn)處理模塊,根據(jù)數(shù)據(jù)操作要求完成i2c總線的初始化,啟動(dòng)i2c總線,就能自動(dòng)完成規(guī)定的數(shù)據(jù)傳送操作。i2c總線接口電路結(jié)構(gòu)如圖1所示。
i2c總線接口為開漏或開集電極輸出,需加上拉電阻。系統(tǒng)中所有的單片機(jī)、外圍器件都將數(shù)據(jù)線sda和時(shí)鐘線scl的同名端相連在一起,總線上的所有節(jié)點(diǎn)都由器件和管腳給定地址。系統(tǒng)中可以直接連接具有i2c總統(tǒng)接口的單片機(jī),也可以通過總線擴(kuò)展芯片或i/o口的軟件仿真與i2c總線相連。在i2c總線上可以掛接各種類型的外圍器件,如ram/eprom、日歷/時(shí)鐘、a/d轉(zhuǎn)換器、d/a轉(zhuǎn)換器以及由i/o口、顯示驅(qū)動(dòng)器構(gòu)成的各種模塊。
i2c總線上數(shù)據(jù)傳送的基本單位為字節(jié),采用低位在前的格式。主從器件之間一次傳輸?shù)臄?shù)據(jù)稱為一幀,由啟動(dòng)信號(hào)、若干個(gè)數(shù)據(jù)字節(jié)和應(yīng)答位以及停止信號(hào)組成。可以看出,i2c
圖1 i2c總線接口電路結(jié)構(gòu)
的主要命令只有讀、寫兩種,雖然讀寫的字節(jié)根據(jù)具體器件的不同而不同,但其時(shí)序關(guān)系不會(huì)發(fā)生改變。根據(jù)這一點(diǎn),下位機(jī)只要具備i2c的基本時(shí)序即可。這些基本時(shí)序包括:?jiǎn)?dòng)、寫字節(jié)、讀字節(jié)、應(yīng)答位、停止信號(hào),并可以組合成兩個(gè)子程序:讀n字節(jié)子程序、寫n字節(jié)子程序。
帶有i2c器件的讀寫操作有多種形式,寫操作有兩種類型:字節(jié)寫和頁面寫;讀操作有三種類型:讀當(dāng)前地址內(nèi)容、讀隨機(jī)地址內(nèi)客和讀順序地址內(nèi)容。以at24c01為例,寫n個(gè)字節(jié)數(shù)據(jù)的操作時(shí)序如圖2所示,at24c01讀n個(gè)字節(jié)技據(jù)的操作時(shí)序如圖3所示。
8位
8位
8位
8位
8位
起始信號(hào)
器件地址
響應(yīng)信號(hào)
字地址
響應(yīng)信號(hào)
數(shù)據(jù)1
響應(yīng)信號(hào)
數(shù)據(jù)2
響應(yīng)信號(hào)
…
數(shù)據(jù)n
響應(yīng)信號(hào)
結(jié)束信號(hào)
寫操作
寫操作
寫操作
寫操作
圖2 at24c01寫n個(gè)字節(jié)數(shù)據(jù)的操作時(shí)序
8位
8位
8位
8位
起始信號(hào)
器件地址
響應(yīng)信號(hào)
字地址
響應(yīng)信號(hào)
數(shù)據(jù)1
響應(yīng)信號(hào)
…
數(shù)據(jù)n
響應(yīng)信號(hào)
結(jié)束信號(hào)
寫操作
讀操作
讀操作
圖3 at24c01讀n個(gè)字節(jié)數(shù)據(jù)的操作時(shí)序
上圖中器件地址說明如下:
①器件地址碼的第7~4位為從器件地址位,用于確認(rèn)器件的類型。at24c01的器件地址碼為1010,1010表示從器件為串行e2prom。
②器件地址碼的第3~l位為第l~第8片的片選或存儲(chǔ)器內(nèi)的頁面地址選擇位。此三個(gè)控制位用于片選或者內(nèi)部頁面選擇。
如在存儲(chǔ)容量8kb(1024×8位)的at24c01內(nèi)部,存儲(chǔ)矩陣分為4個(gè)頁面,每一頁面有256個(gè)字節(jié)。通過器件地址碼的第2位和第1位,可以選擇數(shù)據(jù)讀寫的頁面。
③器件地址碼的第0位為讀、寫(r/w)操作控制碼。若此位為1,下一字節(jié)進(jìn)行讀操作(r);此位為0,下一字節(jié)進(jìn)行寫操作(w)。
at24c01每接收一個(gè)字節(jié)后,都必須發(fā)送一個(gè)確認(rèn)應(yīng)答信號(hào)位ack,即時(shí)序中的響應(yīng)信號(hào)。此時(shí)單片機(jī)必須產(chǎn)生一個(gè)與此確認(rèn)位相應(yīng)的時(shí)鐘脈沖。at24c01在讀寫操作時(shí)。具有地址自動(dòng)加1功能,即讀、寫完某一地址空間后,會(huì)自動(dòng)指向下一個(gè)地址單元。
i2c總線最顯著的特點(diǎn)是規(guī)范的完整性、結(jié)構(gòu)的獨(dú)立性和用戶使用時(shí)的“傻瓜”化。i2c總統(tǒng)有嚴(yán)格的規(guī)范,如接口的電氣特性、信號(hào)時(shí)序、信號(hào)傳輸?shù)亩x、總線狀態(tài)設(shè)置、總線管理規(guī)則及總線狀態(tài)處理等。
在i2c總線規(guī)范中??偩€上的器件節(jié)點(diǎn)具有極大的獨(dú)立性,而且各節(jié)點(diǎn)上的器件、模塊都有相對(duì)獨(dú)立的地址編號(hào)。
嚴(yán)格、完善的規(guī)范,并將這些規(guī)范的應(yīng)用盡可能“傻瓜”化,除了有充分的硬件支持外,在軟件方面,philips公司為用戶提供了一套完善的總線狀態(tài)處理軟件包,以致于用戶可以不去熟悉i2c總線的規(guī)范,不去理睬總線的管理方法,只要掌握i2c總線的應(yīng)用程序設(shè)計(jì)方法就可方使地使用i2c總線,并且能很快地掌握i2c總線系統(tǒng)的軟、硬件設(shè)計(jì)方法。
由于i2c總線系統(tǒng)中,各個(gè)節(jié)點(diǎn)的電氣特性及地址給定都具有較強(qiáng)的獨(dú)立性,因此,在應(yīng)用系統(tǒng)中采用i2c總線結(jié)構(gòu)就有可能實(shí)現(xiàn)用戶夢(mèng)寐以求的器件及功能單元的軟、硬件標(biāo)準(zhǔn)化和模塊化設(shè)計(jì)。
器件及功能單元的標(biāo)準(zhǔn)化、模塊化,取決于器件單元硬件電氣連接的最少相關(guān)性與軟件的獨(dú)立性。軟件的獨(dú)立性則表現(xiàn)在獨(dú)立編址及數(shù)據(jù)傳送方式的簡(jiǎn)單化與單一性。而i2c總線所具有的特點(diǎn)很好地滿足了上述要求。
在硬件結(jié)構(gòu)上,任何一個(gè)具有i2c總線接口的外圍器件,不僅其功能差別有多大,都具有相同的電氣接口;除了總線外,各器件節(jié)點(diǎn)沒有其他電氣連接,甚至各節(jié)點(diǎn)的電源都可以單獨(dú)供電;在各器件節(jié)點(diǎn)上沒有并行擴(kuò)展時(shí)所必須的片選線,器件地址給定完全取決于器件類型與單元電路結(jié)構(gòu)。在軟件上,不論何種器件,其i2c總線的數(shù)據(jù)傳送都具有相同的操作模式,而且每個(gè)器件操作時(shí)都與其他器件節(jié)點(diǎn)無關(guān)。在實(shí)際使用中,總線節(jié)點(diǎn)上的器件甚至可在總線工作狀態(tài)下掛上總線或撤除。
目前i2c總線大量應(yīng)用在視頻、音像系統(tǒng)中,philips推出的近200種i2c總統(tǒng)接口器件主要是視頻、音像類器件。除philips公司外,i2c總線已被眾多的廠家使用在高檔電視機(jī)、電話機(jī)、音響、攝/錄像系統(tǒng)中,在大量測(cè)控領(lǐng)域單片機(jī)應(yīng)用系統(tǒng)中正逐步推廣。