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