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