999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于I2C總線的多MCU系統設計

2015-04-12 00:00:00李晶呂肖晗
現代電子技術 2015年9期

摘 要: 在一些應用系統中常常使用多片MCU協同實現系統功能,為實現多片MCU之間的數據交換,可以應用多端口RAM,但其結構復雜,成本高;而利用I2C總線使多片MCU之間通過RAM實現數據交換,具有結構簡單、成本低的優點。介紹一種基于I2C總線的多MCU系統的設計,簡要討論I2C總線的結構、工作原理及多MCU競爭仲裁,給出I2C總線的多MCU系統的設計,實現了多MCU系統在實際中的應用。

關鍵詞: I2C總線; 多MCU系統; P89LPC932; 數據交換

中圖分類號: 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 引 言

隨著微電子技術的發展和MCU價格的降低,常常在實際應用中使用多片MCU來協同完成系統功能,以實現更高的性能。在這些系統中多片MCU通過某種方式實現數據交換,其中使用雙口或多口E2PROM是一種常見的方法[1?2]。這種電路結構復雜、成本高,需要軟、硬件解決多MCU訪問的競爭問題,更重要的是目前許多MCU不支持外部總線,不能擴展外部E2PROM,因此無法使用這種方法。I2C總線是由Philips公司推出的芯片間串行傳輸總線。它以規范嚴謹、使用簡單靈活、支持的外圍器件繁多等特點而被廣泛應用。I2C總線具有十分完善的總線協議,在協議的支持下,可以自動處理總線上出現的多MCU訪問的競爭。目前的文獻通常是介紹I2C總線在單MCU系統中的應用[3?4],本文介紹一種利用I2C總線實現多片MCU訪問E2PROM,從而實現數據交換的方法。

1 I2C總線工作原理

I2C總線是一種“二線”結構,分別使用“SDA”和“SCL”信號線實現數據傳輸。I2C總線對與其相連的設備采用軟件尋址。每一種器件都有一個特定的7位I2C地址,以便主機了解當前正與其進行通信的器件。這個7位地址的前4位固定,用來指明器件所屬類別,如1010表明是串行E2PROM器件。后3位(如A2,A1和A0)通過硬件管腳進行設置來修改器件的I2C地址。表示地址字節的最低1位(R/W)用來指明主控制器向從機發送(寫,R/W=0)還是接收(讀,R/W=1)來自從機的數據。每個傳輸過程都是以起始條件開始,停止或重新開始條件結束。每一次數據傳送都是由主控制器發起的,如果某一時刻總線上有多個主控器,并且都請求控制總線,這時就要進行總線仲裁處理。一旦一個主控器獲得總線控制權,其他主控器必須等待此主控器發送完一個停止條件并將總線釋放為“空閑”狀態方可重新控制總線。在系統中主控制器通常都由MCU擔任。

2 多MCU系統下的I2C總線

I2C總線軟、硬件協議十分巧妙,它可以用于構成多MCU系統。當系統中有多個I2C總線接口單片機時,會出現多MCU競爭的復雜狀態。I2C總線軟、硬件協議以及I2C總線單片機中的SFR保證了多MCU競爭時的協調管理。I2C總線提供的狀態處理軟件能自動處理總線上出現的26種狀態。在使用I2C總線時將這些軟件工具在程序存儲器中定位,利用這些軟件編制出歸一化操作命令,用于I2C總線應用程序設計十分簡單、方便。

2.1 多MCU竟爭仲裁

主機只能在總線空閑的時侯啟動傳輸。兩個或多個主機可能在起始條件的最小持續時間內產生一個起始條件,結果在總線上產生一個規定的起始條件。當SCL線是高電平時,仲裁在SDA線發生;這樣,在其他主機發送低電平時,發送高電平的主機將斷開它的數據輸出級,因為總線上的電平與它自己的電平不相同,仲裁可以持續多位。它的第一個階段是比較地址位。如果每個主機都嘗試尋址相同的器件,仲裁會繼續比較數據位(如果是主機—發送器),或者比較響應位(如果是主機—接收器)。因為I2C總線的地址和數據信息由贏得仲裁的主機決定,在仲裁過程中不會丟失信息[5]。

2.2 主系統的數據傳送過程

考慮以下實際應用,系統中有兩片單片機,MCU A進行數據采集,并將數據存入E2PROM,MCU B不定時地從E2PROM取出數據(如圖1所示)。傳輸數據的過程如下:

(1) 假設MCU A要發送信息到E2PROM

① MCU A(主機)尋址接收器E2PROM;

② MCU A(主機)發送器發送數據到接收器E2PROM;

③ MCU A終止傳輸。

(2) 如果MCU B想從器件E2PROM中接收信息

① MCU B(主機)尋址E2PROM(從器件);

② MCU B(主機)從E2PROM(從器件)讀數據;

③ MCU B終止傳輸。

(3) 以上兩種情況同時發生時,I2C總線起動總線的競爭仲裁功能

① MCU A或MCU B贏得總線的控制權,掌管總線,競爭失敗的微控制器退出總線;

② 贏得總線的控制權的微控制器尋址E2PROM(從器件),并進行數據傳輸;

③ 贏得總線的控制權的微控制器終止數據傳輸,競爭失敗的微控制器試圖掌控總線,從器件尋址,并進行數據傳輸;

④ 數據傳送完畢,總線進入空閑狀態。

由上可知,在多MCU系統下的數據傳送過程要比單主機系統下復雜得多。但I2C總線軟、硬件協議能進行協調管理,保證數據的可靠傳輸。

3 多MCU系統的具體實現

本應用中選用了兩片P89LPC932單片機及一片24系列的E2PROM。P89LPC932中I/O口P1.3和P1.2為復用端口,在用作I2C通信時,P1.3為SDA,P1.2為SCL,在程序中應該設置為開漏方式。電路中[R1、][R2]為I2C總線的上拉電阻,在具體電路中應適當調整。選擇上拉電阻要考慮的因素主要為供電電源、總線上的電容值和連接器件數。在《I2C總線協議》中規定,在供電電壓大于2 V,灌電流為3 mA時,輸出低電平不高于0.4 V。在本電路中供電電壓為(3±0.3) V。,因而上拉電阻的最小值為[(3.3-0.4)0.003=967 ]Ω。上拉電阻的取值不能過大,因為上拉電阻R與總線上的電容值C構成的RC電路的時間常數,影響了總線從高電平到低電平的過渡時間,因而影響了通信速率。在快速模式中,SDA,SCL信號從低到高的過渡時間應該不大于300 ns,P89LPC932端口輸出電容為15 pF,因而上拉電阻的最大值為[300 ns(0.7×15 pF×3)=9.5 ]kΩ。在電路中[R1,][R2]取值為5 kΩ。

由于P89LPC932單片機中帶有內部RC振蕩源,在電路中省略了一般51單片機所需要的晶振,因而電路比較簡單。其硬件電路如圖2所示。

4 多MCU系統下的軟件設計

I2C總線的通信都是由主機發起的。具體為主機發送起始條件,然后發送要操作的從機地址和讀寫命令。在收到從機應答后,進行相應操作。軟件設計主要包括主機的寄存器的設置及讀寫子程序的設計。

4.1 P89LPC932單片機I2C寄存器的設置

LPC932單片機微功耗51內核,內部集成了I2C總線,支持400K高速模式,既可作I2C總線上的主控器件,也可作I2C總線上的從器件[6]。LPC900單片機的I2C總線通過以下6個特殊功能寄存器實現接口:I2CON(I2C控制寄存器?0D8H)、I2DAT(數據寄存器?0DAH)、I2STAT(狀態寄存器?0D9H)、I2ADR(地址寄存器?0DBH)、I2SCLH(占空比寄存器高字節?0DDH)、I2SCLLSCL(占空比寄存器低字節?0DCH)。

I2C地址寄存器在處于主模式時,該寄存器的內容無效。I2C狀態寄存器是一個8位只讀寄存器,它包含了I2C接口的狀態代碼,最低3位總是為0,I2C一共有26種可能的狀態。

4.2 多MCU系統下的程序設計

按照I2C總線的規范,I2C總線數據傳送可分為主發送、主接收、從發送、從接收4種方式。在多MCU模式下有主發送、主接收2種方式。每種方式都有典型的傳送過程,這些數據傳送都是由一些狀態碼標記的總線狀態處理過程組成,因此I2C總線上的一個完整的數據傳送是由多個I2C中斷狀態處理程序來完成的。每出現一個新的狀態,就會產生一次I2C中斷,然后進入該總線的中斷處理程序,處理完畢中斷返回再等待一次新的中斷及狀態處理直至結束。注意以下所說的主機可以是兩片MCU中的任一片,而從機指的是I2C器件。

I2C總線的數據操作過程及總線狀態處理是在標準軟件包的支持下完成,無須用戶介入,用戶可以通過查詢I2C總線的狀態寄存器就可了解總線的處理狀態,從而做相應的處理。程序設計流程圖如圖3所示。

I2C通信程序設計要點如下:

(1) 每次通信的起始條件和停止條件均由主機發起,從機只是負責監聽主機信號。起始條件和停止條件是通過置位I2CON中的STA和STO位達到的。

(2) 當主機獲得總線,成功發送啟動條件后,地址和數據的發送是通過寫數據寄存器I2DAT達到的。

(3) 每次發送地址和數據后應該查詢狀態寄存器I2STAT檢查數據發送狀態以進行下一步動作。

(4) 每次通信完畢后主機和從機均應該釋放總線。

程序設計過程中值得注意的是:讀寫過程中從器件的地址是變化的,寫過程中E2PROM的地址是0A0H,讀過程中E2PROM的地址是0A1H。

5 結 語

本應用以兩片MCU通過I2C總線共享一個存儲器,實現了I2C總線多MCU機應用系統的設計,電路設計簡單,易于擴展,具有較強的實用性。雖然本文是以MCS51內核單片機LPC932為例實現的,并且系統中僅兩片MCU,但實際上任何帶有I2C總線接口的多片MCU都可使用該方法。

參考文獻

[1] 張洪剛,苑秉成,徐瑜,等.基于FPGA和SD卡的水聲信號高速采集與存儲系統設計[J].電子器件,2009,32(1):208?212.

[2] 肖堃,閆杰,靳文平.基于TMS320F28335的無人機機載智能接口卡設計[J].機械制造,2013,51(590):17?20.

[3] 馮立杰,傅民倉,李文波.多CPU嵌入式系統的設計方法[J].現代電子技術,2006,29(6):54?55.

[4] 何冰,曾立波,尹邦勝.I2C總線在嵌入式系統中的應用[J].現代電子技術,2005,28(16):31?32.

[5] 何立民.I2C總線應用系統設計[M].北京:北京航空航天大學出版社,1995.

[6] 周立功單片機公司.P89LPC932A1 FLASH單片機使用指南[EB/OL].[2010?08?09].http://www.zlgmcu.com.

主站蜘蛛池模板: 99国产精品免费观看视频| 五月天综合婷婷| 亚洲精品男人天堂| 日韩高清欧美| 欧美日韩综合网| 伊人久久精品无码麻豆精品| 国产伦精品一区二区三区视频优播| 欧美一级片在线| 又大又硬又爽免费视频| 欧美亚洲国产视频| 97无码免费人妻超级碰碰碰| 天天色综合4| 青青草欧美| 77777亚洲午夜久久多人| 久久久精品无码一二三区| 精品欧美一区二区三区久久久| 日韩欧美在线观看| 国产精品嫩草影院av| 成人免费视频一区| 超清无码一区二区三区| 中文字幕自拍偷拍| 亚洲男人天堂2018| 亚洲av无码专区久久蜜芽| A级全黄试看30分钟小视频| 国产超碰一区二区三区| 无码粉嫩虎白一线天在线观看| 精品少妇人妻无码久久| 国产亚洲高清在线精品99| 久久黄色毛片| 国产无码在线调教| 久久国产黑丝袜视频| 国产性爱网站| 亚洲婷婷丁香| 亚洲色图综合在线| 一本大道AV人久久综合| 99无码中文字幕视频| 久久公开视频| 国产免费精彩视频| 国产成人凹凸视频在线| 国产人免费人成免费视频| 亚洲黄色高清| 波多野结衣亚洲一区| 欧美色99| 国内精自线i品一区202| 亚洲h视频在线| 欧洲欧美人成免费全部视频| 亚洲欧美天堂网| 久久伊人色| 欧美成人h精品网站| 国产黄视频网站| 国产成人午夜福利免费无码r| 午夜成人在线视频| 中文字幕亚洲另类天堂| 丁香五月激情图片| 在线色国产| 日本一区高清| 亚洲欧美不卡中文字幕| 人妻中文字幕无码久久一区| 亚洲天堂视频网站| 久久国产拍爱| 欧美日本在线| 午夜性刺激在线观看免费| 免费a级毛片18以上观看精品| 欧美成人精品高清在线下载| 香蕉eeww99国产在线观看| 亚洲中文精品久久久久久不卡| av天堂最新版在线| 九九九精品视频| 在线视频亚洲欧美| 久久精品人人做人人综合试看| 好吊日免费视频| 国产女人18水真多毛片18精品| 国产精品私拍在线爆乳| 亚洲福利一区二区三区| 狼友视频国产精品首页| 国产成人无码AV在线播放动漫| 日本高清免费一本在线观看| 欧美怡红院视频一区二区三区| 日韩在线永久免费播放| 四虎亚洲精品| аv天堂最新中文在线| 丰满少妇αⅴ无码区|