I2 C總線是Philips公司開發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線。它只需要兩根線(串行時(shí)鐘線和串行數(shù)據(jù)線)即可在連接于總線上的器件之間傳送信息。這種總線的主要特性如下:
(1)總線只有兩根線:串行時(shí)鐘線和串行數(shù)據(jù)線;
(2)每個(gè)連到總線上的器件都可由軟件以唯一的地址尋址,并建立簡(jiǎn)單的主/從關(guān)系,主器件既可作為發(fā)送器,又可作為接收器;
(3)它是一個(gè)真正的多主總線,帶有競(jìng)爭(zhēng)檢測(cè)和仲裁電路,可使多個(gè)主機(jī)任意同時(shí)發(fā)送而不破壞總線上的數(shù)據(jù);
(4)同步時(shí)鐘允許器件通過(guò)總線以不同的波特率進(jìn)行通信;
(5)同步時(shí)鐘可以作為停止或重新啟動(dòng)串行口發(fā)送的握手方式;
(6)連接到同一總線的集成電路數(shù)只受400 pF的最大總線電容的限制。
I2 C總線極大地方便了系統(tǒng)設(shè)計(jì)者,無(wú)須設(shè)計(jì)總線接口,因?yàn)榭偩€已經(jīng)集成在片內(nèi)了,從而大大縮短了設(shè)計(jì)時(shí)間,并且從系統(tǒng)中移去或增加集成電路芯片對(duì)總線上的其它集成電路芯片沒(méi)有影響。
I2 C通過(guò)兩根總線:串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL)。這兩根線使連到總線上的器件之間按一定的通信協(xié)議進(jìn)行尋址和信息的傳輸。每個(gè)模塊都有唯一的地址,在信息傳輸過(guò)程中,I2 C總線上的電路模塊有的是主控制器(單片機(jī)),有的是被控制器,它們可以是發(fā)送器或接收器,這決定于它所完成的功能。
I2 C總線在進(jìn)行數(shù)據(jù)傳輸時(shí),由作為主控制器的電路模塊來(lái)初始化一次數(shù)據(jù)的傳輸,并在I2 C總線上提供時(shí)鐘進(jìn)行傳送。信息傳輸?shù)膶?duì)象、方向以及開始、終止也由主控制器來(lái)決定。此時(shí),在I2 C總線上被主控制器所尋址的電路模塊稱為從控制器。在I2 C總線上數(shù)據(jù)由發(fā)送器傳出,被接收器接收,接收器在每次正確接收到一個(gè)數(shù)據(jù)字節(jié)后,都要在數(shù)據(jù)總線SDA發(fā)送一個(gè)應(yīng)答信號(hào)。
I2 C具有多重主控的能力,這意味著可以有多個(gè)作為主控制器的芯片(具有I2 C總線的單片機(jī))去控制占用總線。在I2 C總線上進(jìn)行數(shù)據(jù)傳送的電路模塊可根據(jù)不同的工作狀態(tài),分為主控發(fā)送器、主控接收器、被控(從)發(fā)送器、被控接收器。很明顯,一些智能電路如單片微控制器等,可以工作在上述4種的任一狀態(tài)中,而一些PAM、EPROM存儲(chǔ)器,只能是被控發(fā)送器或被控接收器。
典型的I2 C總線應(yīng)用系統(tǒng)結(jié)構(gòu)如圖10.36所示,I2 C總線上可掛接若干個(gè)單片機(jī)應(yīng)用系統(tǒng)及若干個(gè)帶I2 C接口的器件,每個(gè)I2 C接口作為一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)的數(shù)量和種類主要受總電容量和地址容量的限制。8XC552單片機(jī)具有I2 C接口,可以直接掛在I2 C總線上,對(duì)沒(méi)有I2 C接口的單片機(jī),可通過(guò)I2 C接口擴(kuò)展芯片PCD8584擴(kuò)展I2 C接口。
圖10.36典型的I2 C總線應(yīng)用系統(tǒng)結(jié)構(gòu)
I2 C總線上所有節(jié)點(diǎn)都有約定的地址以便實(shí)現(xiàn)可靠的數(shù)據(jù)傳送,單片機(jī)節(jié)點(diǎn)作為主器件時(shí)其地址無(wú)意義,作為從器件時(shí)其從地址在初始化程序中定位在I2 C總線地址寄存器SIADR的高7位中。器件節(jié)點(diǎn)的7位地址由兩部分組成,完全由硬件確定,一部分為器件編號(hào)地址,由芯片廠家規(guī)定;另一部分為引腳編號(hào)地址,由引腳的高低電平?jīng)Q定。如4位LED驅(qū)動(dòng)器SAA1064的地址為01110A1A0,其中01110為器件編號(hào)地址,表明該器件為顯示LED驅(qū)動(dòng)器,A1A0為該器件的兩個(gè)引腳,分別接高、低電平時(shí)可以有4片不同地址的LED驅(qū)動(dòng)模塊節(jié)點(diǎn)。256字節(jié)的EEPROM器件PCF8582的地址為1010A2A1A0,通過(guò)對(duì)3個(gè)引腳的不同電平設(shè)置,可連接8片不同地址的EEPROM芯片。芯片內(nèi)地址則由主器件發(fā)送的第一個(gè)數(shù)據(jù)字節(jié)來(lái)選擇。關(guān)于I2 C總線的詳細(xì)操作請(qǐng)查閱有關(guān)資料。