亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于I2C總線的多MCU系統(tǒng)設(shè)計

        2015-03-02 05:56李晶呂肖晗
        現(xiàn)代電子技術(shù) 2015年9期
        關(guān)鍵詞:寄存器仲裁器件

        李晶,呂肖晗

        (1.孝感供電公司客戶服務(wù)中心計量室,湖北孝感432100;2.襄陽海特測控技術(shù)有限公司,湖北襄陽441000)

        基于I2C總線的多MCU系統(tǒng)設(shè)計

        李晶1,呂肖晗2

        (1.孝感供電公司客戶服務(wù)中心計量室,湖北孝感432100;2.襄陽海特測控技術(shù)有限公司,湖北襄陽441000)

        在一些應(yīng)用系統(tǒng)中常常使用多片MCU協(xié)同實現(xiàn)系統(tǒng)功能,為實現(xiàn)多片MCU之間的數(shù)據(jù)交換,可以應(yīng)用多端口RAM,但其結(jié)構(gòu)復(fù)雜,成本高;而利用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)用。

        I2C總線;多MCU系統(tǒng);P89LPC932;數(shù)據(jù)交換

        0 引言

        隨著微電子技術(shù)的發(fā)展和MCU價格的降低,常常在實際應(yīng)用中使用多片MCU來協(xié)同完成系統(tǒng)功能,以實現(xiàn)更高的性能。在這些系統(tǒng)中多片MCU通過某種方式實現(xiàn)數(shù)據(jù)交換,其中使用雙口或多口E2PROM是一種常見的方法[1?2]。這種電路結(jié)構(gòu)復(fù)雜、成本高,需要軟、硬件解決多MCU訪問的競爭問題,更重要的是目前許多MCU不支持外部總線,不能擴展外部E2PROM,因此無法使用這種方法。I2C總線是由Philips公司推出的芯片間串行傳輸總線。它以規(guī)范嚴謹、使用簡單靈活、支持的外圍器件繁多等特點而被廣泛應(yīng)用。I2C總線具有十分完善的總線協(xié)議,在協(xié)議的支持下,可以自動處理總線上出現(xiàn)的多MCU訪問的競爭。目前的文獻通常是介紹I2C總線在單MCU系統(tǒng)中的應(yīng)用[3?4],本文介紹一種利用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競爭的復(fù)雜狀態(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ù)信息由贏得仲裁的主機決定,在仲裁過程中不會丟失信息[5]。

        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)下復(fù)雜得多。但I2C總線軟、硬件協(xié)議能進行協(xié)調(diào)管理,保證數(shù)據(jù)的可靠傳輸。

        圖1 使用兩個微控制器的I2C總線

        3 多MCU系統(tǒng)的具體實現(xiàn)

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

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

        圖2 多MCU系統(tǒng)的硬件電路原理圖

        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總線上的從器件[6]。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控制寄存器:

        位復(fù)位值-0 I2EN 0 STA 0 STO 0 SI 0 AA 0 -0 CRSEL 0

        其中I2EN位為I2C接口使能。該位為1時,使能I2C接口;該位為0時,I2C功能被禁止。STA,STO和SI必須設(shè)置為0。AA位為聲明應(yīng)答標志。當I2C處于主模式時,CRSEL決定SCL的頻率,當CRSEL=1時,I2C接口將定時器1的溢出速率的1/2作為I2C時鐘頻率;當CRSEL=0時,I2C接口使用內(nèi)部時鐘發(fā)生器(其頻率由I2SCLL和I2SCLH寄存器的值決定)作為時鐘源。

        I2C數(shù)據(jù)寄存器的設(shè)置:I2DAT寄存器包含要發(fā)送的數(shù)據(jù)或剛接收到的數(shù)據(jù)。當該8位直接尋址寄存器沒有處理移位數(shù)據(jù)時,CPU可對其進行讀寫。這意味著用戶只能在SI置位時對I2DAT進行訪問。I2DAT中的數(shù)據(jù)在SI置位時一直保持不變。I2DAT中的數(shù)據(jù)總是從右向左移位:發(fā)送的第一個位是最高位(Bit7),而在接收完一個字節(jié)后,接收到的第一個數(shù)據(jù)位位于I2DAT的最高位(MSB)。

        I2C SCL占空比寄存器I2SCLH和I2SCLL的設(shè)置:當設(shè)置I2CON寄存器的CRSEL=0以選擇內(nèi)部SCL發(fā)生器作為I2C接口的時鐘源時,用戶必須對I2SCLL和I2SCLH進行設(shè)置以選擇合適的數(shù)據(jù)傳輸速率。I2SCLH定義SCL高電平的PCLK周期數(shù),I2SCLL定義SCL低電平的PCLK周期數(shù)。頻率由下面的公式?jīng)Q定:

        其中,fPCLK表示PCLK的頻率。

        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所示。

        圖3 程序設(shè)計流程圖

        總線初始化代碼如下:

        狀態(tài)處理代碼如下(舉例):

        向總線發(fā)送數(shù)據(jù)代碼如下:

        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都可使用該方法。

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

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

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

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

        [5]何立民.I2C總線應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學出版社,1995.

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

        Design of multi?MCU system based on I2C bus

        LI Jing1,Lü Xiao?han2
        (1.Customer Service Center,Xiaogan Power Supply Company,Xiaogan 432100,China;2.Xiangyang Haite Control Technology Co.,Ltd,Xiangyan 441000,China)

        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 struc?ture 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.

        I2C;multi?MCU system;P89LPC932;data exchange

        TN915?04

        A

        1004?373X(2015)09?0016?03

        李晶(1971—),男,湖北孝感人,工程師。主要研究方向為供電信息技術(shù)及計量。

        呂肖晗(1982—),男,湖北襄陽人。研究方向為嵌入式系統(tǒng)、自動化儀器儀表、無線傳感器網(wǎng)絡(luò)。

        2014?10?30

        猜你喜歡
        寄存器仲裁器件
        Lite寄存器模型的設(shè)計與實現(xiàn)
        一種多通道共享讀寫SDRAM的仲裁方法
        ICSID仲裁中的有效解釋原則:溯源、適用及其略比
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        旋涂-蒸鍍工藝制備紅光量子點器件
        面向高速應(yīng)用的GaN基HEMT器件
        兩岸四地間相互執(zhí)行仲裁裁決:過去、現(xiàn)在及將來(上)
        一種加載集總器件的可調(diào)三維周期結(jié)構(gòu)
        高分辨率遙感相機CCD器件精密熱控制
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        久久麻豆精亚洲av品国产精品| 性欧美大战久久久久久久久| 丝袜美腿在线观看视频| 国产AV无码专区久久精品网站| 欧美性猛交99久久久久99按摩 | 狠狠综合久久av一区二区蜜桃 | 国产白嫩护士被弄高潮| 国产午夜福利在线观看中文字幕| 96精品在线| 国产一区二区三区在线电影| 亚洲国产91精品一区二区| 天天插视频| 品色永久免费| 国产欧美在线观看不卡| 久久蜜臀av一区三区| 日本免费人成视频播放| 精品人妻伦九区久久aaa片| 国产精品老熟女乱一区二区| 日日噜噜夜夜狠狠2021| 久久发布国产伦子伦精品| 成熟人妻换xxxx| 一区二区三区精品亚洲视频| 免费无码又爽又刺激高潮的视频网站 | 在线观看一级黄片天堂| 亚洲精品综合久久国产二区| 美女爽好多水快进来视频| 公粗挺进了我的密道在线播放贝壳| 丰满女人猛烈进入视频免费网站| 亚洲人成网站18男男| 国产啪精品视频网站| 日韩精品专区av无码| 国产精品一区二区偷拍| 日韩av免费在线不卡一区 | 色综合久久精品亚洲国产| 在线播放国产自拍av| 成人av在线免费播放| 一区二区免费电影| 亚洲成a人片在线观看天堂无码| 亚洲va久久久噜噜噜久久男同| 手机在线亚洲精品网站| 亚洲不卡av一区二区三区四区 |