邱永華
(廣東女子職業(yè)技術(shù)學(xué)院,廣東 廣州 510450)
嵌入式系統(tǒng)是當(dāng)前最熱門、最有發(fā)展前途的IT應(yīng)用技術(shù)之一,從隨身攜帶的MP3、語言復(fù)讀機、手機和PDA到家庭中的智能電視、智能冰箱和機頂盒,再到工業(yè)生產(chǎn)、娛樂中的機器人,無不采用嵌入式技術(shù)。
串行擴展總線技術(shù)是嵌入式技術(shù)發(fā)展的一個顯著特點[1]。其中Philips公司推出的I2C總線最為著名。與并行擴展總線相比,串行擴展總線有突出的優(yōu)點:電路結(jié)構(gòu)簡單,程序編寫方便,易以實現(xiàn)用戶系統(tǒng)軟硬件的模塊比、標(biāo)準(zhǔn)化等。目前I2C總線技術(shù)已為許多著名公司所采用,并廣泛地應(yīng)用于各種嵌入式系統(tǒng)中。
I2C(Inter-Integrated Circuit)總線是由 Philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備,是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優(yōu)點[2]。I2C總線的特征如下:
1)只要求兩條總線線路:一條串行數(shù)據(jù)線(SDA),一條串行時鐘線(SCL);
2)每個連接到總線的器件都可以通過唯一的地址和一直存在的、簡單的主機/從機關(guān)系軟件所設(shè)定的地址來識別,主機可以作為主機發(fā)送器或主機接收器來使用;
3)它是一個真正的多主機總線,如果兩個或更多的主機同時初始化,數(shù)據(jù)傳輸就可以通過沖突檢測和仲裁來防止數(shù)據(jù)被破壞;
4)串行的8位雙向數(shù)據(jù)傳輸位速率在標(biāo)準(zhǔn)模式下可達(dá)100 kbit/s,快速模式下可達(dá)400 kbit/s,高速模式下可達(dá)3.4 Mbit/s;
5)連接到相同總線的IC數(shù)量僅受到總線的最大電容400 pF的限制。
I2C總線實現(xiàn)了兩個芯片之間控制和數(shù)據(jù)信號的傳輸,它的應(yīng)用將芯片之間的連接線減小到了最少,大大提高了芯片之間連接的可靠性、穩(wěn)定性以及系統(tǒng)的抗干擾能力。擁有I2C總線的新型芯片幾乎可以不加任何外設(shè)就輕易地實現(xiàn)和總線的連接。嵌入式系統(tǒng)中常見的I2C總線連接方式如圖1所示。
圖1 I2C總線系統(tǒng)連接圖
為了提高系統(tǒng)的兼容性及可擴展性,目前越來越多的嵌入式系統(tǒng)都采用模塊化設(shè)計,即不再將所有的芯片都集成在一個嵌入式模塊上,而是把核心控制系統(tǒng)與外圍接口芯片分離成多個模塊,根據(jù)系統(tǒng)的不同需求來進行組裝和連接。模塊化的設(shè)計可以減少新產(chǎn)品的開發(fā)周期,節(jié)約開發(fā)成本,大大提升系統(tǒng)的兼容性和擴展性,能讓系統(tǒng)更好地適應(yīng)現(xiàn)場應(yīng)用的各種需求[3]。
帶有I2C總線的嵌入式系統(tǒng)也常常把I2C總線擴展出去,控制模塊與I2C其它模塊間通過外部線纜進行連接,并可以通過連接不同的模塊來實現(xiàn)各種不同的功能。例如:對于一個溫度采集系統(tǒng),由于采集模塊常處于高溫或者低溫環(huán)境,為了保證控制模塊能夠長期穩(wěn)定地工作,常通過如圖2所示的方式將控制模塊與采集模塊進行連接,同時也可以根據(jù)現(xiàn)場系統(tǒng)的需求,方便地減少或者增加采集模塊來完成不同的功能。
圖2 溫度采集系統(tǒng)連接圖
采集模塊和控制模塊的分離可以很好地解決不同的應(yīng)用中采集模塊擴展的問題,但在擴展中同時也引出了新的問題:如接口數(shù)量,I2C器件地址沖突等。如果控制模塊上的接口數(shù)量過少,該模塊就不能應(yīng)用于大的系統(tǒng);如果接口數(shù)量過多,則在應(yīng)用于小系統(tǒng)時控制模塊又顯得過于臃腫。同時I2C器件的訪問是根據(jù)地址來區(qū)分的,即,如果一個系統(tǒng)中存在多個相同的模塊,并且這些模塊的I2C器件的地址相同,就會造成系統(tǒng)I2C通信異常[4]。
為了解決上述問題,可以在控制模塊與采集模塊之間加一個I2C接口擴展器,這樣不僅可以縮小控制模塊,即可以將其I2C接口減少為一個,也可以解決I2C器件的地址沖突等問題,如圖3所示。
圖3 I2C接口擴展器連接圖
為了滿足各種系統(tǒng)的需求,可以根據(jù)系統(tǒng)的規(guī)模來選擇不同規(guī)格和接口數(shù)量的I2C接口擴展器[5]。I2C接口擴展器與系統(tǒng)控制模塊之間只有兩條I2C通信線進行連接,所以I2C模塊之間的切換必須通過I2C進行。I2C接口擴展器的簡單原理設(shè)計框圖如圖4所示:
圖4 I2C接口擴展器原理圖
如圖4所示,PCF8574是一種I2C數(shù)據(jù)串行轉(zhuǎn)并行的擴展器件,即可以將輸入的8位串行數(shù)據(jù)并行輸出。所以可以通過對PCF8574寫入不同數(shù)據(jù)控制PCF8574 8個并行IO的輸出狀態(tài)。SN74CBT3257是一種帶兩個雙輸入雙向的數(shù)字開關(guān),通過外部的控制信號可以隨意地切換輸入與輸出配對關(guān)系。
將 PCF8574的并行輸出 IO連接到SN74CBT3257的開關(guān)控制信號上,即實現(xiàn)了通過I2C控制PCF8574來進行I2C端口的切換。如對PCF8574先后寫入 0×00和 0×80,就可以將PCF8574的最高位先拉低再置高,其它低7位狀態(tài)保持不變,即實現(xiàn)對SN74CBT3257的輸出口從A輸入口到B輸入口的切換。
由于1片PCF8574有8個IO口,即可以輸出8個控制信號,所以最多可以控制8片SN74CBT3257,而1片 SN74CBT3257可以連接 4個不同的I2C接口,所以一片PCF8574最多可以連接32個I2C接口,在I2C地址都相同的情況下,最少也可以連接8個I2C地址相同的模塊。PCF8574本身的地址是通過外部電阻上下拉而選擇的,其地址配置管腳有3個,根據(jù)組合關(guān)系,在一條I2C總線上最多可以連接9片PCF8574,所以這種擴展器最大規(guī)模時最多可以連接288個不同地址的I2C器件,即使模塊的地址一樣,最少也可以連接72個I2C模塊。因此,可以根據(jù)系統(tǒng)大小設(shè)計出不同規(guī)格相適應(yīng)的I2C接口擴展器[6]。
基于PCF8574控制和SN74CBT3257切換開關(guān)的I2C接口擴展器的結(jié)構(gòu)簡單,擴展性強,具有非常高的實用性。唯一的缺點是需要修改控制軟件,切換時需要對PCF8574進行單獨控制,對軟件架構(gòu)比較完整的系統(tǒng)影響較大。此時,如果對于系統(tǒng)要求擴展性和速度不高的場所則可以用1片單片機進行轉(zhuǎn)換,而如果不計較系統(tǒng)成本則可以選擇CPLD,CPLD具有更好的擴展性及控制優(yōu)勢,這也是將I2C擴展器應(yīng)用于高端系統(tǒng)的研究方向。
[1]牟浩.I2C總線控制器的設(shè)計 [J].科協(xié)論壇(下半月),2010,(10): 25.
[2]龔向東,黃虹賓,劉春平.主從可配置I2C總線接口IP及其應(yīng)用 [J].電訊技術(shù),2010,(1):36.
[3]邱永華,賀文健.開放式運動控制器人機界面的研究與設(shè)計 [J].計算機系統(tǒng)應(yīng)用,2011,(4):28-30.
[4]陳穗光,葛建華.I2C總線接口協(xié)議設(shè)計及FPGA的實現(xiàn)[J].山西電子技術(shù),2006,(6):55-56.
[5]譚平,劉建新.基于I2C總線的PIC單片機端口擴展技術(shù) [J].微計算機信息,2006,(17):21-23.
[6]邱永華.智能蹺蹺板小車控制系統(tǒng)的設(shè)計 [J].電子產(chǎn)品可靠性與環(huán)境試驗,2011,29(1):10-12.