• 
    <ul id="auswy"><sup id="auswy"></sup></ul>
  • <ul id="auswy"></ul>
    ABB
    關注中國自動化產業發展的先行者!
    CAIAC 2025
    2025工業安全大會
    OICT公益講堂
    當前位置:首頁 >> 案例 >> 案例首頁

    案例頻道

    一種基于USB接口的多功能便攜數據采集系統設計
    • 企業:控制網     領域:人機界面     行業:建筑樓宇    
    • 點擊數:3803     發布時間:2007-06-16 21:34:08
    • 分享到:
    使用Silicon公司的CP2102芯片作為USB接口橋接器,以高性能模擬微控制器ADuC845為系統的控制核心,實現了8通道模擬量數據采集、8通道數字量輸入與8通道數字量輸出等功能。軟件設計采用基于消息機制和狀態機機制的編程思想。該系統設計簡便、體積小、成本低,應用前景廣闊。



    1 引言

        現代工業生產和科學研究對數據采集的要求日益提高,在許多場合要求數據采集系統向便攜化方向發展,要求系統具有體積小、功耗低、傳輸速度快、使用方便靈活等特點。

        基于PCI或ISA總線的內置采集卡由于插拔麻煩、占用系統軟硬件資源且價格相對昂貴,應用范圍有限。目前大量傳統數據采集系統、儀表及其軟件多采用RS232/485通信標準,雖然成本低、占用系統資源少,但速度慢、不支持帶電插拔的缺點使其無法滿足工業現場采集系統的發展要求。

        面向便攜應用的主控系統如筆記本電腦、嵌入式控制系統均不配備PCI或ISA接口,然而通用串行總線(Universal Serial Bus,簡稱USB)以其數據傳輸速度快、設備接插方便、總線供電及擴展方便等優點成為便攜式主控系統的必備接口,基于此本文介紹一種以USB總線為接口的多功能小型便攜數據采集系統。

    2 芯片選型

        2.1主控芯片選型

        主控芯片選擇Analog Devices公司的ADuC845作為系統的主控制器,該芯片將8052的MCU核和模擬信號處理單元集成在一片IC上,是ADI公司推出的高性能24位數據采集與處理系統,內部集成有兩個24位的Δ-ΣADC、10/8通道輸入多路復用器,片內集成62 kB 非易失性閃速/電擦除程序存儲器、4 kB非易失性閃速/電擦除數據存儲器、256 BRAM 和2 kB擴展RAM。
        
        ADuC845還包含一個溫度傳感器、一個位于主ADC之前以便直接測量低幅度信號的可編程增益放大器(PGA)、一個12位電壓輸出數模轉換器(DAC)、兩個靈活的脈寬調制(PWM)輸出、兩個電流源、一個基準電壓源、一個從32kHz晶振產生12.58MHz時鐘的振蕩器與鎖相環(PLL)以及UART、SP I和I2C通信端口。其數據處理能力可達12MIPS。由于ADuC845的高度集成、高速度、高精度的優秀特性,非常適合在要求小體積高性能的便攜系統中的應用要求。

        2.2USB接口芯片選型

        通用串行總線USB是由Intel等廠商制定的連接計算機與具有USB接口的多種外設之間通信的串行總線。市場上現有的可供設計使用的USB接口芯片有兩類:一類是USB端點控制器,如Philips的PDIUSBD12,OKI的MSM60581,NATIONAL的USBN9603,Lucent的USS-820/USS-620,Scanlog的SL11等。這些芯片作為系統的接口將直接使用USB總線的通信標準,由于USB協議標準比較復雜,在資源不充裕的8位MCU為核心的系統上實現會一定程度的影響系統性能;并且以這類芯片為接口的系統,還需專門開發針對特定上位機系統的驅動程序,給設計和使用帶來了一定的難度和不便。

        另一類USB接口芯片是UART-USB橋接芯片,如Cygnal公司的CP2101,FTDI公司的FT232BM等。這類芯片使用時以USB總線為傳輸媒介,使用橋接的方式將UART串口信號通過USB總線傳輸至主機。主機安裝芯片廠商針對各類操作系統提供的驅動程序,擴展出一個虛擬串口與下位機系統通信。這樣既使系統設計簡便直接,又有效利用了USB總線的諸多優點。設計中選用CP2101,與同類產品相比具有以下優點:

        1) 具有較小的封裝。CP2101為28腳5mm×5mmMLP封裝。這在PCB上的尺寸就比競爭對手小 30%左右。

        2) 高集成度。片內集成512字節EEPROM(用于存儲廠家 ID等數據),片內集成收發器、無需外部電阻;片內集成時鐘,無需外部晶體。

        3) 低成本,可實現USB轉串口的解決方案。CP2101的USB功能無需外部元件,而大多數競爭者的USB器件 則需要額外的終端晶體管、上拉電阻、晶振和EEPROM。具有競爭力的器件價格,簡化的外圍電路,無成本驅動支持使得CP2101在成本上的優勢遠超過競爭者的解決方案。

        4) 具有低功耗、高速度的特性,符合USB2.0規范,適合于所有的UART接口。工業級溫度范圍為-40℃~85℃。

    3 電路設計

        3.1系統結構圖

        系統結構圖如圖1所示,主要由ADuC845與CP2101芯片構成,由于ADuC845內部集成了62KB程序FLASH,4KB數據FLASH,2304B數據RAM,因此作為便攜采集系統無須再外部擴展存儲單元。ADuC845的P1口作為模擬量信號采集的8路通道,P0口作為數字量信號輸入的8路通道,P2口作為數字量信號輸出的8路通道,為了保護內部電路,使用光藕隔離芯片將系統內部的數字量輸入輸出與外部隔離。



    圖1系統結構圖

        3.2通信接口電路圖

        CP2101作為系統的通信接口芯片,ADuC845的TXD與RXD引腳與CP2101對應相連,電路如圖所示。CP2101的USB功能控制器管理USB和UART間所有的數據傳輸,以及由USB主控制器發出的命令請求以及用于控制UART功能的命令等。CP2101的UART接口處理所有的RS232 信號,包括控制和握手信號。CP2101的VBUS與VREGIN引腳必須始終連到USB的VBUS信號上。在VREGIN的輸入端加去耦電容(1μF與0.1μF并聯)。CP2101與單片機接口是標準UART電平,與計算機的USB端口連接是USB標準電平,因此,無論與3V還是5V供電的單片機連接都不需要電平轉換。

    4 軟件設計

        系統的軟件設計包括單片機系統軟件設計、單片機系統驅動程序與主機系統軟件設計。Cygnal公司提供了CP2101在目前常用操作系統下的驅動,安裝驅動程序以后,對于操作系統來說相當于多了一個虛擬的串口,所以主機的編程操作就是簡單的串行通信編程。因此,軟件設計的重點就是單片機系統的軟件設計。

        數據采集系統的軟件設計采用基于消息機制的編程思想,采用C51語言編程,將需要執行的AD、DI、DO作為程序運行的任務,通過串行中斷程序解析各種控制命令,并發送消息給主程序,主程序根據不同的消息執行不同系統任務。



    圖2 通信接口電路圖

        4.1串行中斷程序設計

        由于發送并不需要中斷操作,因此,串行中斷程序只對接收數據進行判斷。串行中斷程序主要任務是接收有效格式的命令,并加以區分,根據命令形成相應的消息,留給主程序判斷執行。系統的功能決定系統的通信協議相對復雜,命令繁多。系統設計的主要通信命令有:系統復位、DO輸出、DI讀入、AD單次讀入、AD連續讀入、AD連續讀入停止6個命令。

        鑒于串行中斷程序擔任較大的命令解析任務,因此串行中斷程序的設計采用狀態機的機制。其基本原理是,每當收到一個字節后,判斷該字節在當前判斷狀態是否有效,如果有效,則狀態遞增;如果無效,則狀態歸零。每組命令的每一個字節都對應一個狀態號,狀態號到達某命令結尾時,設置對應命令系統消息有效。相應的程序代碼如下:

        extern unsigned char guchState;                       //系統狀態變量

        extern unsigned char guchSignal;      //系統信號變量

        void Serial_Int(void) interrupt 4 using 3{
     
        if(RI)           //只接收中斷有效
     
        { register unsigned char R_chbyte;
      
        R_chbyte=SBUF;     //取得接收字符
      
        switch(guchState)  //進入狀態機
      
        { case STATE1:   //第一個狀態
        
        if(R_chbyte==VALID1)guchState++;  //判斷是否為有效字符
        
        break;
       
        case STATE2:
        
        if(R_chbyte==VALID2)guchState++;  //若為有效字符,狀態變量遞增
        
        else guchState=0;      //若不為有效字符,狀態變量清零
        
        break;
       
        ...
       
        case STATEi:
        
        if(R_chbyte==VALIDi)
        
        {
        
        guchSignal=SIGNAL_1;     //命令有效,設置信號變量;
         
        guchState=0;
        
        } 
        
        else guchState=0;     //若不為有效字符,狀態變量清零
        
        break;
       
        ...
      
        }
     
        }

        }

        4.2 主程序設計

        在消息機制中,主程序的主要任務是循環檢測信號消息變量,當檢測到某一信號有效時,則啟動對應的任務。由于系統只有串行中斷一個中斷,因此主程序中不需要考慮中斷任務的優先級與信號之間的沖突。

        數據采集系統中,經常需要對模擬信號量的連續數據采集,因此系統設計加入了連續模擬采集的功能。接收到連續采集命令后,系統將每隔確定時間間隔對模擬量進行采集,同時通過串口將采集數據返回主機系統。同時,為了停止系統的連續采集狀態,需要有對應的停止命令。

        這樣,系統命令就分為3個優先級,最高優先級的是系統遠程復位命令,在任何狀態下都將相應復位命令對系統進行復位;次高優先級的命令是AD連續采集與連續采集停止命令;其他命令都是最低優先級。系統程序的結構代碼如下:

        unsigned char guchState;      //系統狀態變量

        unsigned char guchSignal;      //系統信號變量

        unsigned char guchDovalue;      //系統接收數字量輸出參數

        void main(void)

        {
     
        Sys_init();//系統初始化程序
     
        while(1)         
     
        {
      
        switch(guchSignal)      //系統狀態機
      
        {
       
        case CMDDO:      //接收到DO信號
        
        Sys_Do(guchDovalue);   //執行DO程序
        
        guchSignal=VALID;   //清除系統信號
        
        break;
       
        case CMDDI:      //接收到DI信號
        
        Sys_Di();      //執行DI程序
        
        guchSignal=VALID;    //清除系統信號
        
        break;
       
        case CMDAD:      //接收到單步AD信號
        
        Sys_Ad();     //執行單步AD程序
        
        guchSignal=VALID;    //清除系統信號
        
        break;
       
        case CMDSYNAD:     //接收到連續AD信號
        
        while(guchSignal!=CMDSYNEND)
     
        Sys_SynAd();     //執行連續AD采集,
           
        //直到收到停止連續AD信號
        
        guchSignal=VALID;    //清除系統信號
        
        break;
       
        case SYSRESET:      //接收到系統復位信號
        
        #pragma ASM     //系統強制復位
         
        LJMP 0000H
        
        #pragma ENDASM
      
        }
     
        }

        }

    5 結束語

        實際應用表明,本設計具有體積小、成本低、便攜式、使用靈活等特點,特別適合工業現場測試和野外現場數據采集的場合。尤其是設計采用高度集成的ADuc845作為系統的控制核心,鑒于該芯片在工業和儀器儀表應用中要求精確測量寬動態范圍低頻信號的應用場合以及在適合低溫漂且對噪聲抑制和抗電磁干擾能力要求較高的應用場合的優勢,與快速便攜的USB接口相結合,將會有廣闊的應用前景。

    參考文獻

    [1] Silicon Laboratories lnc. CP2102 Product Data Sheet [EB/OL]. http://www.silabs.com, 2006.

    [2] Analog Device. Aduc845 Product Data Sheet [EB/OL]. http://www.analog.com/, 2005

    [3] 叢偉波,楊勇,韓清凱. 低功耗數據采集系統的USB接口設計[J]. 單片機與嵌入式系統應用,2005(1):25-27

    [4] 周銳鵬, 張樂年,許小紅. 基于消息機制的C51單片機程序設計[J]. 機械制造與自動化, 2003(3):66-67,71

    熱點新聞

    推薦產品

    x
    • 在線反饋
    1.我有以下需求:



    2.詳細的需求:
    姓名:
    單位:
    電話:
    郵件: