- 相關(guān)推薦
基于I2C總線的多MCU系統(tǒng)設(shè)計發(fā)展論文
摘 要: 在一些應(yīng)用系統(tǒng)中常常使用多片MCU協(xié)同實現(xiàn)系統(tǒng)功能,為實現(xiàn)多片MCU之間的數(shù)據(jù)交換,可以應(yīng)用多端口RAM,但其結(jié)構(gòu)復雜,成本高;而利用I2C總線使多片MCU之間通過RAM實現(xiàn)數(shù)據(jù)交換,具有結(jié)構(gòu)簡單、成本低的優(yōu)點。介紹一種基于I2C總線的多MCU系統(tǒng)的設(shè)計,簡要討論I2C總線的結(jié)構(gòu)、工作原理及多MCU競爭仲裁,給出I2C總線的多MCU系統(tǒng)的設(shè)計,實現(xiàn)了多MCU系統(tǒng)在實際中的應(yīng)用。
關(guān)鍵詞: I2C總線; 多MCU系統(tǒng); P89LPC932; 數(shù)據(jù)交換
中圖分類號: TN915?04 文獻標識碼: A 文章編號: 1004?373X(2015)09?0016?03
Abstract: System functions are implemented by multi?MCU collaborative working in some application systems. Although the multi?port RAM can be applied to achieve data exchange among multiple MCUs, its structure is complex and cost is high. Multi?MCU data exchange can be realized by the method to link I2C bus with RAM, which has the advantages of simple structure and low cost. Design of the multi?MCU system based on I2C bus is introduced. The structure, execution principle, multi?MCU competition and arbitration of I2C bus are discussed briefly. The design of multi?MCU system based on I2C bus is given. The application of multi?MCU system in practice was implemented.
Keywords: I2C; multi?MCU system; P89LPC932; data exchange
0 引 言
隨著微電子技術(shù)的發(fā)展和MCU價格的降低,常常在實際應(yīng)用中使用多片MCU來協(xié)同完成系統(tǒng)功能,以實現(xiàn)更高的性能。在這些系統(tǒng)中多片MCU通過某種方式實現(xiàn)數(shù)據(jù)交換,其中使用雙口或多口E2PROM是一種常見的方法。這種電路結(jié)構(gòu)復雜、成本高,需要軟、硬件解決多MCU訪問的競爭問題,更重要的是目前許多MCU不支持外部總線,不能擴展外部E2PROM,因此無法使用這種方法。I2C總線是由Philips公司推出的芯片間串行傳輸總線。它以規(guī)范嚴謹、使用簡單靈活、支持的外圍器件繁多等特點而被廣泛應(yīng)用。I2C總線具有十分完善的總線協(xié)議,在協(xié)議的支持下,可以自動處理總線上出現(xiàn)的多MCU訪問的競爭。目前的文獻通常是介紹I2C總線在單MCU系統(tǒng)中的應(yīng)用,本文介紹一種利用I2C總線實現(xiàn)多片MCU訪問E2PROM,從而實現(xiàn)數(shù)據(jù)交換的方法。
1 I2C總線工作原理
I2C總線是一種“二線”結(jié)構(gòu),分別使用“SDA”和“SCL”信號線實現(xiàn)數(shù)據(jù)傳輸。I2C總線對與其相連的設(shè)備采用軟件尋址。每一種器件都有一個特定的7位I2C地址,以便主機了解當前正與其進行通信的器件。這個7位地址的前4位固定,用來指明器件所屬類別,如1010表明是串行E2PROM器件。后3位(如A2,A1和A0)通過硬件管腳進行設(shè)置來修改器件的I2C地址。表示地址字節(jié)的最低1位(R/W)用來指明主控制器向從機發(fā)送(寫,R/W=0)還是接收(讀,R/W=1)來自從機的數(shù)據(jù)。每個傳輸過程都是以起始條件開始,停止或重新開始條件結(jié)束。每一次數(shù)據(jù)傳送都是由主控制器發(fā)起的,如果某一時刻總線上有多個主控器,并且都請求控制總線,這時就要進行總線仲裁處理。一旦一個主控器獲得總線控制權(quán),其他主控器必須等待此主控器發(fā)送完一個停止條件并將總線釋放為“空閑”狀態(tài)方可重新控制總線。在系統(tǒng)中主控制器通常都由MCU擔任。
2 多MCU系統(tǒng)下的I2C總線
I2C總線軟、硬件協(xié)議十分巧妙,它可以用于構(gòu)成多MCU系統(tǒng)。當系統(tǒng)中有多個I2C總線接口單片機時,會出現(xiàn)多MCU競爭的復雜狀態(tài)。I2C總線軟、硬件協(xié)議以及I2C總線單片機中的SFR保證了多MCU競爭時的協(xié)調(diào)管理。I2C總線提供的狀態(tài)處理軟件能自動處理總線上出現(xiàn)的26種狀態(tài)。在使用I2C總線時將這些軟件工具在程序存儲器中定位,利用這些軟件編制出歸一化操作命令,用于I2C總線應(yīng)用程序設(shè)計十分簡單、方便。
2.1 多MCU竟爭仲裁
主機只能在總線空閑的時侯啟動傳輸。兩個或多個主機可能在起始條件的最小持續(xù)時間內(nèi)產(chǎn)生一個起始條件,結(jié)果在總線上產(chǎn)生一個規(guī)定的起始條件。當SCL線是高電平時,仲裁在SDA線發(fā)生;這樣,在其他主機發(fā)送低電平時,發(fā)送高電平的主機將斷開它的數(shù)據(jù)輸出級,因為總線上的電平與它自己的電平不相同,仲裁可以持續(xù)多位。它的第一個階段是比較地址位。如果每個主機都嘗試尋址相同的器件,仲裁會繼續(xù)比較數(shù)據(jù)位(如果是主機—發(fā)送器),或者比較響應(yīng)位(如果是主機—接收器)。因為I2C總線的地址和數(shù)據(jù)信息由贏得仲裁的主機決定,在仲裁過程中不會丟失信息。
2.2 主系統(tǒng)的數(shù)據(jù)傳送過程
考慮以下實際應(yīng)用,系統(tǒng)中有兩片單片機,MCU A進行數(shù)據(jù)采集,并將數(shù)據(jù)存入E2PROM,MCU B不定時地從E2PROM取出數(shù)據(jù)(如圖1所示)。傳輸數(shù)據(jù)的過程如下:
(1) 假設(shè)MCU A要發(fā)送信息到E2PROM
① MCU A(主機)尋址接收器E2PROM;
② MCU A(主機)發(fā)送器發(fā)送數(shù)據(jù)到接收器E2PROM;
③ MCU A終止傳輸。
(2) 如果MCU B想從器件E2PROM中接收信息
① MCU B(主機)尋址E2PROM(從器件);
② MCU B(主機)從E2PROM(從器件)讀數(shù)據(jù);
③ MCU B終止傳輸。
(3) 以上兩種情況同時發(fā)生時,I2C總線起動總線的競爭仲裁功能
① MCU A或MCU B贏得總線的控制權(quán),掌管總線,競爭失敗的微控制器退出總線;
② 贏得總線的控制權(quán)的微控制器尋址E2PROM(從器件),并進行數(shù)據(jù)傳輸;
③ 贏得總線的控制權(quán)的微控制器終止數(shù)據(jù)傳輸,競爭失敗的微控制器試圖掌控總線,從器件尋址,并進行數(shù)據(jù)傳輸;
④ 數(shù)據(jù)傳送完畢,總線進入空閑狀態(tài)。
由上可知,在多MCU系統(tǒng)下的數(shù)據(jù)傳送過程要比單主機系統(tǒng)下復雜得多。但I2C總線軟、硬件協(xié)議能進行協(xié)調(diào)管理,保證數(shù)據(jù)的可靠傳輸。
3 多MCU系統(tǒng)的具體實現(xiàn)
本應(yīng)用中選用了兩片P89LPC932單片機及一片24系列的E2PROM。P89LPC932中I/O口P1.3和P1.2為復用端口,在用作I2C通信時,P1.3為SDA,P1.2為SCL,在程序中應(yīng)該設(shè)置為開漏方式。電路中為I2C總線的上拉電阻,在具體電路中應(yīng)適當調(diào)整。選擇上拉電阻要考慮的因素主要為供電電源、總線上的電容 值和連接器件數(shù)。在《I2C總線協(xié)議》中規(guī)定,在供電電壓大于2 V,灌電流為3 mA時,輸出低電平不高于0.4 V。在本電路中供電電壓為(3±0.3) V。,因而上拉電阻的最小值為Ω。上拉電阻的取值不能過大,因為上拉電阻R與總線上的電容值C構(gòu)成的RC電路的時間常數(shù),影響了總線從高電平到低電平的過渡時間,因而影響了通信速率。在快速模式中,SDA,SCL信號從低到高的過渡時間應(yīng)該不大于300 ns,P89LPC932端口輸出電容為15 pF,因而上拉電阻的最大值為kΩ。在電路中取值為5 kΩ。
由于P89LPC932單片機中帶有內(nèi)部RC振蕩源,在電路中省略了一般51單片機所需要的晶振,因而電路比較簡單。其硬件電路如圖2所示。
4 多MCU系統(tǒng)下的軟件設(shè)計
I2C總線的通信都是由主機發(fā)起的。具體為主機發(fā)送起始條件,然后發(fā)送要操作的從機地址和讀寫命令。在收到從機應(yīng)答后,進行相應(yīng)操作。軟件設(shè)計主要包括主機的寄存器的設(shè)置及讀寫子程序的設(shè)計。
4.1 P89LPC932單片機I2C寄存器的設(shè)置
LPC932單片機微功耗51內(nèi)核,內(nèi)部集成了I2C總線,支持400K高速模式,既可作I2C總線上的主控器件,也可作I2C總線上的從器件。LPC900單片機的I2C總線通過以下6個特殊功能寄存器實現(xiàn)接口:I2CON(I2C控制寄存器?0D8H)、I2DAT(數(shù)據(jù)寄存器?0DAH)、I2STAT(狀態(tài)寄存器?0D9H)、I2ADR(地址寄存器?0DBH)、I2SCLH(占空比寄存器高字節(jié)?0DDH)、I2SCLLSCL(占空比寄存器低字節(jié)?0DCH)。
I2C地址寄存器在處于主模式時,該寄存器的內(nèi)容無效。I2C狀態(tài)寄存器是一個8位只讀寄存器,它包含了I2C接口的狀態(tài)代碼,最低3位總是為0,I2C一共有26種可能的狀態(tài)。
4.2 多MCU系統(tǒng)下的程序設(shè)計
按照I2C總線的規(guī)范,I2C總線數(shù)據(jù)傳送可分為主發(fā)送、主接收、從發(fā)送、從接收4種方式。在多MCU模式下有主發(fā)送、主接收2種方式。每種方式都有典型的傳送過程,這些數(shù)據(jù)傳送都是由一些狀態(tài)碼標記的總線狀態(tài)處理過程組成,因此I2C總線上的一個完整的數(shù)據(jù)傳送是由多個I2C中斷狀態(tài)處理程序來完成的。每出現(xiàn)一個新的狀態(tài),就會產(chǎn)生一次I2C中斷,然后進入該總線的中斷處理程序,處理完畢中斷返回再等待一次新的中斷及狀態(tài)處理直至結(jié)束。注意以下所說的主機可以是兩片MCU中的任一片,而從機指的是I2C器件。
I2C總線的數(shù)據(jù)操作過程及總線狀態(tài)處理是在標準軟件包的支持下完成,無須用戶介入,用戶可以通過查詢I2C總線的狀態(tài)寄存器就可了解總線的處理狀態(tài),從而做相應(yīng)的處理。程序設(shè)計流程圖如圖3所示。
I2C通信程序設(shè)計要點如下:
(1) 每次通信的起始條件和停止條件均由主機發(fā)起,從機只是負責監(jiān)聽主機信號。起始條件和停止條件是通過置位I2CON中的STA和STO位達到的。
(2) 當主機獲得總線,成功發(fā)送啟動條件后,地址和數(shù)據(jù)的發(fā)送是通過寫數(shù)據(jù)寄存器I2DAT達到的。
(3) 每次發(fā)送地址和數(shù)據(jù)后應(yīng)該查詢狀態(tài)寄存器I2STAT檢查數(shù)據(jù)發(fā)送狀態(tài)以進行下一步動作。
(4) 每次通信完畢后主機和從機均應(yīng)該釋放總線。
程序設(shè)計過程中值得注意的是:讀寫過程中從器件的地址是變化的,寫過程中E2PROM的地址是0A0H,讀過程中E2PROM的地址是0A1H。
5 結(jié) 語
本應(yīng)用以兩片MCU通過I2C總線共享一個存儲器,實現(xiàn)了I2C總線多MCU機應(yīng)用系統(tǒng)的設(shè)計,電路設(shè)計簡單,易于擴展,具有較強的實用性。雖然本文是以MCS51內(nèi)核單片機LPC932為例實現(xiàn)的,并且系統(tǒng)中僅兩片MCU,但實際上任何帶有I2C總線接口的多片MCU都可使用該方法。
參考文獻
張洪剛,苑秉成,徐瑜,等.基于FPGA和SD卡的水聲信號高速采集與存儲系統(tǒng)設(shè)計.電子器件,2009,32(1):208?212.
肖堃,閆杰,靳文平.基于TMS320F28335的無人機機載智能接口卡設(shè)計.機械制造,2013,51(590):17?20.
【基于I2C總線的多MCU系統(tǒng)設(shè)計發(fā)展論文】相關(guān)文章:
基于數(shù)據(jù)挖掘的高校教務(wù)系統(tǒng)設(shè)計論文09-02
基于RFID物品防盜系統(tǒng)的設(shè)計方式論文09-02
基于RFID物品防盜系統(tǒng)的設(shè)計方式的論文09-01
基于Internet的風機網(wǎng)上選型系統(tǒng)的設(shè)計論文09-02
基于XML技術(shù)的自動閱卷系統(tǒng)設(shè)計與實現(xiàn)論文09-01
基于STM32的μCOSⅢ系統(tǒng)移植的設(shè)計論文09-24
多車型翻車機系統(tǒng)優(yōu)化設(shè)計論文09-03