歡迎您光臨本站 登入註冊首頁

概述

   由於MCU(微控制器)在可靠性、體積、功耗、性價比等方面都具有明顯的優勢,所以由其組成的上下位機形式的儀器(下位機部分),已經在許多工業控制和數據採集系統中得到廣泛……

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

1 系統硬體構成
    整個系統的裝置示意圖如圖1所示。我們選擇美國Silicon公司的微控制器(MCU)C8051F020(簡稱F020)作為應用系統的CPU。C8051F020是一種混合信號SOC型8位單片機,它有一個8通道的、轉換速率為100Kbps的12位ADC,以及一個8通道的、轉換速率為500Kbps的8位ADC;2個l2位DAC;64KB FlashRom,4KB RAM;有22個中斷源和5個定時器/計數器; 內部有兩個增強型全雙工UART、SPI匯流排和SMBus匯流排。
 
    CP2101是美國Silicon公司推出的USB-UART橋接電路。該電路的集成度高,內置USB2.0全速功能控制器、USB收發器、晶體振蕩器、EEPROM及非同步串列數據匯流排(UART),支持數據機全功能信號,全部功能集成在一個5mm×5mm IC中。在PC機上安裝CP2101的驅動程序以後,CP2101就作為PC機的一個虛擬COM 口(VCP),對它的操作與對PC機的COM口操作完全一樣,因此無需修改現有的COM 口應用就可以實現通過USB向基於CP2101的器件傳輸數據,保證了對已有的串口通訊程序的兼容。其數據傳輸的波特率範圍為300b/s~921.6kb/s。

2 SMBus匯流排
    SMBus匯流排標準最早由Intel公司於1995年發布,它以Philips公司的I2C匯流排為基礎,面向於“不同系統組成晶元與系統其他部分間的通訊”。SMBus介面的工作電壓可以在(3.0~5.0)V之間,匯流排上不同器件的工作電壓可以不同。SCL串列時鐘線和SDA串列數據線是雙向的,因此兩條線上都需要上拉電阻或類似電路將它們連到電源電壓,在沒有數據傳輸時,兩條線都處於高電平。典型的SMBus配置如圖2所示。SMBus採用多種線路條件作為器件的握手信號。在一次數據傳輸過程中,SDA只能在SCL為低電平時改變。在SCL為高電平時,SDA發生改變則開始和停止信號。
    SMBus協議有兩種可能的數據傳輸類型:從主發送器到所定址的從接收器(寫)和從被定址的從發送器到主接收器(讀)。這兩種數據傳輸都由主器件啟動,主器件還提供串列時鐘。一次典型的SMBus數據傳輸包括一個起始條件(START)、一個地址位元組(位7~1:7位從地址;位0:R/W 方向位)、一個或多個位元組的數據和一個停止條件(STOP)。每個接收的位元組(由一個主器件或從器件)都必須用SCL高電平期間的SDA低電平來確認(ACK)。如果接收器件不確認,則發送器件將讀到一個“非確認”(NACK),這用SCL高電平期間的SDA高電平表示。
  
    所有的數據傳輸都由主器件啟動,可以定址一個或多個目標從器件。主器件產生一個起始條件,然後發送地址和方向位。在數據傳輸結束時,主器件產生一個停止條件,結束數據交換並釋放匯流排。圖3示出了一次典型的SMBus數據傳輸過程。
 

3 系統通信的設計
    系統的任務主要對模擬量進行AD轉換,對數字量進行計數,並將這些數據最終要傳給上位微機進行顯示與數據處理,上位機根據其處理結果控制PWM波的頻率及占空比。
3.1 上下位機的數據通信
    由於我們使用了USB-UART橋接電路CP2101,因而上下位機的程序仍是按照UART形式編寫。為保證雙方傳輸的數據準確可靠,程序中使用軟體握手:上位機首先給下位機傳波特率參數,其值為600H,300H,180H,C0H,60H,0CH之一,下位機對收到波特率參數進行驗證,如果為其中之一,則發送位元組AAH給上位機,並更新下位機波特率,反之認為是雜訊干擾,丟棄此數據,再重新等待接收。上位機收到AAH位元組后,就更新新的波特率,然後向下位機發送控制命令子,如採樣通道選擇,單端方式還是差分方式,開關量的狀態,採樣周期和採樣時間等,以及是否要求從下位機工作,如果要求從下位機工作,還要正確建立主從下位機的通信,之後再向上位機發應答位元組55H。協議還採用超時重發功能,可自動連接5次。

3.2 主從下位機的SMBus通信
    為使SMBus通信程序便於編寫,我們規定第1片為主片,第二片為從片。SMBus的工作由下列寄存器中的內容決定: 狀態寄存器(SMBOSTA)、控制寄存器(SMBOCN)、地址寄存器(SMBOADR)和數據寄存器(SMBODAT)。要通過SMBus通訊協議實現兩片晶元之間的數據通信,關鍵在於如何利用單片機中的狀態寄存器中的狀態碼,通過軟體編程來實現對狀態碼的查詢。每一個狀態碼都對應一個當前的通信狀態和將要執行的操作,因此,根據所得到的狀態碼來確定當前的通信狀態,以實現相互間的通信。
    在編程時,SMBus通信協議是利用中斷查詢狀態碼的方式實現的,為使雙方的通信可靠,也規定了軟體握手:初始化后,從片等待主片的命令位元組33H,從片收到33H后給主片發CCH應答位元組,主片收到CCH位元組后,根據上位機要求給從片發送相應的命令位元組(採樣周期,採樣時間,採樣通道,開關量狀態等),然後發送BBH位元組個主片,並啟動相應AD轉換,主片收到BB后才進行AD轉換,保證主片與從片對模擬量的同步採樣。

4 系統軟體設計
    考慮到系統靈活性,我們編程使得通道選擇、採樣時間、採樣周期、數字量輸入、開關量的控制、PWM波的頻率及占空比、從下位機的工作情況等由用戶在上位機上指定,然後以命令字傳給下位機,具體為:用4個位元組分別表示兩片MCU的AD通道是否被選中,每個位元組位上為l表示該通道被選中,否則不選該通道。用3個位元組存放採樣周期,其最小單位為10微妙,5個位元組存放採樣時間,一個位元組用於開關量,2個位元組用於存放PWM波的頻率,2個位元組用於存放占空比值,1個位元組用於表示數字量輸入是否被選中。對於輸入的數字量,輸入是渦輪流量計來的脈衝,輸入脈衝數的確定是採樣引腳電平變化的方法來確定的。為保證小流量時的精度,按4秒鐘所計脈衝數,通過其轉換關係來確定流量。其中引腳電平採樣的時間設為100微妙。為減輕下位機的任務,其採集的原始數據直接送給上位機進行處理,保證下位機有高的採樣速率和高的傳輸速率。圖4給出了下位機主片的工作流程圖。
 

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


[admin via 研發互助社區 ] 基於雙C8051F020微控制器的應用系統已經有2151次圍觀

http://cocdig.com/docs/show-post-42180.html