新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于雙C8051F020微控制器的應用系統

        基于雙C8051F020微控制器的應用系統

        作者: 時間:2012-01-07 來源:網絡 收藏

        0 引言


        由于MCU(微控制器)在可靠性、體積、功耗、性價比等方面都具有明顯的優勢,所以由其組成的上下位機形式的儀器(下位機部分),已經在許多工業控制和數據采集系統中得到廣泛應用。在實際應用中,如果一片MCU芯片的功能不能滿足實際需求時,就需要進行擴展。在本文中,我們使用兩片微控制器通過(System Management Bus)系統管理總線進行擴展,使其滿足了15路模擬量輸入(AD)、6數字量輸入、2路開關量輸出以及1路PWM波輸出的設計要求。

        1 系統硬件構成

        整個系統的裝置示意圖如圖1所示。我們選擇美國Silicon公司的微控制器(MCU)(簡稱F020)作為的CPU。F020是一種混合信號SOC型8位單片機,它有一個8通道的、轉換速率為100Kbps的12位ADC,以及一個8通道的、轉換速率為500Kbps的8位ADC;2個12位DAC;64KB FlashRom,4KB RAM;有22個中斷源和5個定時器/計數器;內部有兩個增強型全雙工UART、SPI總線和總線[1]

        CP2101是美國Silicon公司推出的-UART橋接電路。該電路的集成度高,內置2.0全速功能控制器、收發器、晶體振蕩器、EEPROM及異步串行數據總線(UART),支持調制解調器全功能信號,全部功能集成在一個5mm ′5mm IC中。

        圖2典型的配置

        在PC機上安裝CP2101的驅動程序以后,CP2101就作為PC機的一個虛擬 COM 口 (VCP),對它的操作與對PC機的COM口操作完全一樣,因此無需修改現有的 COM 口應用就可以實現通過 USB 向基于CP2101 的器件傳輸數據,保證了對已有的串口通訊程序的兼容。其數據傳輸的波特率范圍為300b/s~921.6kb/s[2]

        2 SMBus總線

        SMBus總線標準最早由Intel公司于1995年發布,它以Philips公司的I2C總線為基礎,面向于“不同系統組成芯片與系統其他部分間的通訊”[3]。SMBus接口的工作電壓可以在(3.0~5.0)V之間,總線上不同器件的工作電壓可以不同。SCL串行時鐘線和SDA串行數據線是雙向的,因此兩條線上都需要上拉電阻或類似電路將它們連到電源電壓,在沒有數據傳輸時,兩條線都處于高電平。典型的SMBus配置如圖2所示。SMBus采用多種線路條件作為器件的握手信號。在一次數據傳輸過程中,SDA只能在SCL為低電平時改變。在SCL為高電平時,SDA發生改變則開始和停止信號。

        圖3一次典型的SMBus數據傳輸過程

        SMBus協議有兩種可能的數據傳輸類型:從主發送器到所尋址的從接收器(寫)和從被尋址的從發送器到主接收器(讀)。這兩種數據傳輸都由主器件啟動,主器件還提供串行時鐘。一次典型的SMBus數據傳輸包括一個起始條件(START)、一個地址字節(位7-1:7 位從地址;位0:R/W 方向位)、一個或多個字節的數據和一個停止條件(STOP)。每個接收的字節(由一個主器件或從器件)都必須用SCL高電平期間的SDA低電平來確認(ACK)。如果接收器件不確認,則發送器件將讀到一個“非確認”(NACK),這用SCL 高電平期間的SDA高電平表示。

        所有的數據傳輸都由主器件啟動,可以尋址一個或多個目標從器件。主器件產生一個起始條件,然后發送地址和方向位。在數據傳輸結束時,主器件產生一個停止條件,結束數據交換并釋放總線。圖3示出了一次典型的SMBus數據傳輸過程[1]



        3 系統通信的設計

        系統的任務主要對模擬量進行AD轉換,對數字量進行計數,并將這些數據最終要傳給上位微機進行顯示與數據處理,上位機根據其處理結果控制PWM波的頻率及占空比。

        3.1 上下位機的數據通信[4-5]

        由于我們使用了USB-UART橋接電路CP2101,因而上下位機的程序仍是按照UART形式編寫。為保證雙方傳輸的數據準確可靠,程序中使用軟件握手:上位機首先給下位機傳波特率參數,其值為600H,300H,180H,C0H,60H,0CH之一,下位機對收到波特率參數進行驗證,如果為其中之一,則發送字節AAH給上位機,并更新下位機波特率,反之認為是噪聲干擾,丟棄此數據,再重新等待接收。上位機收到AAH字節后,就更新新的波特率,然后向下位機發送控制命令子,如采樣通道選擇,單端方式還是差分方式,開關量的狀態,采樣周期和采樣時間等,以及是否要求從下位機工作,如果要求從下位機工作,還要正確建立主從下位機的通信,之后再向上位機發應答字節55H。協議還采用超時重發功能,可自動連接5次。

        3.2 主從下位機的SMBus通信[6]

        為使SMBus通信程序便于編寫,我們規定第1片為主片,第二片為從片。SMBus的工作由下列寄存器中的內容決定:狀態寄存器(SMB0STA)、控制寄存器 (SMB0CN)、地址寄存器(SMB0ADR)和數據寄存器(SMB0DAT)。要通過SMBus通訊協議實現兩片芯片之間的數據通信,關鍵在于如何利用單片機中的狀態寄存器中的狀態碼,通過軟件編程來實現對狀態碼的查詢。每一個狀態碼都對應一個當前的通信狀態和將要執行的操作,因此,根據所得到的狀態碼來確定當前的通信狀態,以實現相互間的通信。

        在編程時,SMBus通信協議是利用中斷查詢狀態碼的方式實現的,為使雙方的通信可靠,也規定了軟件握手:初始化后,從片等待主片的命令字節33H,從片收到33H后給主片發CCH應答字節,主片收到CCH字節后,根據上位機要求給從片發送相應的命令字節(采樣周期,采樣時間,采樣通道,開關量狀態等),然后發送BBH字節個主片,并啟動相應AD轉換,主片收到BB后才進行AD轉換,保證主片與從片對模擬量的同步采樣。

        4 系統軟件設計

        考慮到系統靈活性,我們編程使得通道選擇、采樣時間、采樣周期、數字量輸入、開關量的控制、PWM波的頻率及占空比、從下位機的工作情況等由用戶在上位機上指定,然后以命令字傳給下位機,具體為:用4個字節分別表示兩片MCU的AD通道是否被選中,每個字節位上為1表示該通道被選中,否則不選該通道。用3個字節存放采樣周期,其最小單位為10微妙,5個字節存放采樣時間,一個字節用于開關量,2個字節用于存放PWM波的頻率,2個字節用于存放占空比值,1個字節用于表示數字量輸入是否被選中。對于輸入的數字量,輸入是渦輪流量計來的脈沖,輸入脈沖數的確定是采樣引腳電平變化的方法來確定的。為保證小流量時的精度,按4秒鐘所計脈沖數,通過其轉換關系來確定流量。其中引腳電平采樣的時間設為100微妙。

        為減輕下位機的任務,其采集的原始數據直接送給上位機進行處理,保證下位機有高的采樣速率和高的傳輸速率。圖4給出了下位機主片的工作流程圖。


        5 結束語

        我們使用了自身帶有AD轉換電路及SMBus通信總線接口微控制器,實現了兩片MCU之間數據的高速可靠的數據通信。而且還使用了USB-UART橋接電路,保證了下位機與上位機有高的數據傳輸率。并且,在上位機軟件設計時考慮到的通用性,可根據實際需求選用不同的傳感器,并在上位機上進行相應的選擇,就能得到所需的測量數據及曲線,使得該有較強的通用性。

        參考文獻:

        [1] 潘琢金,施國君. C8051FXXX高速SOC單片機原理及應用. 北京:北京航空航天大學出版社,2002.

        [2] CP2101數據手冊. http://www.xhl.com.cn

        /xhl/downfile/CP210x.pdf.

        [3]謝瑞和.串行技術大全.北京:清華大學出版社,2003.4 .

        [4] 陳建平,姚凱學,等. 通用動態測試系統的設計與實現. 貴州大學學報(自然科學版), 2004,

        21(1):79-82.

        [5] 范逸之 陳立元. Visual Basic 與RS-232控制[M],北京:中國青年出版社,2002.

        [6] 王力,王開和,等. 基于C8051F的SMBus實現多點測溫系統. 天津科技大學學報,2004,19(3):

        39-41.



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 庆云县| 华池县| 佛坪县| 揭东县| 临泽县| 桂阳县| 新巴尔虎左旗| 鹰潭市| 石楼县| 隆回县| 梅河口市| 宁南县| 英吉沙县| 曲阳县| 鹿邑县| 福贡县| 兴仁县| 商南县| 田林县| 邵阳市| 金阳县| 隆回县| 宿松县| 葫芦岛市| 元氏县| 定边县| 松溪县| 和硕县| 通海县| 青州市| 英超| 息烽县| 崇明县| 礼泉县| 景德镇市| 日喀则市| 安庆市| 中山市| 鲁甸县| 唐海县| 漠河县|