<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2012-01-07 來(lái)源:網(wǎng)絡(luò ) 收藏

0 引言


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

1 系統硬件構成

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

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

圖2典型的配置

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

2 SMBus總線(xiàn)

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

圖3一次典型的SMBus數據傳輸過(guò)程

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

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



3 系統通信的設計

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

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

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

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

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

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

4 系統軟件設計

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

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


5 結束語(yǔ)

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

參考文獻:

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

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

/xhl/downfile/CP210x.pdf.

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

[4] 陳建平,姚凱學(xué),等. 通用動(dòng)態(tài)測試系統的設計與實(shí)現. 貴州大學(xué)學(xué)報(自然科學(xué)版), 2004,

21(1):79-82.

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

[6] 王力,王開(kāi)和,等. 基于C8051F的SMBus實(shí)現多點(diǎn)測溫系統. 天津科技大學(xué)學(xué)報,2004,19(3):

39-41.



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>