<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于USB 2. 0數(shù)據(jù)采集系統(tǒng)的實現(xiàn)

          基于USB 2. 0數(shù)據(jù)采集系統(tǒng)的實現(xiàn)

          作者: 時間:2011-05-12 來源:網(wǎng)絡 收藏

            1 引言

            在工業(yè)生產(chǎn)和科學技術研究的各行業(yè)中, 常利用PC或工控機對各種數(shù)據(jù)進行采集, 如壓力、頻率、液位、溫度等。常用的采集方式是通過板卡, 其不僅安裝麻煩, 易受機箱內環(huán)境的干擾,而且由于受計算機插槽數(shù)量和地址、中斷資源的限制, 不可能掛接很多設備。而通用串行總線( Universa l Ser ia l Bus, USB )的出現(xiàn), 很好地解決了以上這些沖突, 可實現(xiàn)低成本、高可靠性、多點的。USB 2. 0 是一種計算機外設連接規(guī)范, 除了USB1. 1中規(guī)定的1. 5Mb it / s和12Mb it / s兩個模式以外, 還增加了480Mbit / s( 60MB / s)這一 高速 模式, 將USB的應用范圍得到進一步擴大。

            本文介紹的基于USB 2. 0的兩路力信號采集傳輸系統(tǒng), 可用于銷盤式摩擦實驗機, 測量材料的摩擦系數(shù)。

          硬件框圖

          圖1 硬件框圖

            2 硬件設計

            2. 1 系統(tǒng)方案

            外部傳感器的摩擦力信號和壓力信號分別通過兩片8位AD轉換器轉換為數(shù)字信號, 由USB 芯片直接傳輸至計算機中處理, 并使用軟件演示兩路力之間的關系, 計算出材料的摩擦系數(shù)。主機同時負責數(shù)據(jù)傳輸?shù)膯优c停止, USB 控制器控制信號的采集并讀取到內部緩沖區(qū)。

            2. 2 控制器芯片選擇USB 控制器采用56 腳SSOP 封裝的CY7C68013, 屬于Cypresss 公司FX2 系列。

            Cypresss EZFX2將USB 2. 0的收發(fā)器、SIE、增強型8051 和一個可編程邏輯接口集成在一個芯片上。在EZUSB FX2 上, 靈活的SIE 處理大部分USB1. 1和USB 2. 0硬件協(xié)議, 釋放了用于特殊應用功能的嵌入式微控制器。通用可編程接口( GPIF)和主控/伺服端點FIFO ( 8..或16..位數(shù)據(jù)總線) 提供了其與常用接口, 如: ATA, UTOPA, EPP,PCMC IA, 以及大多數(shù)DSP /處理器的簡單無縫連接。其有如下特點:

            內核: 增強型8051的時鐘頻率高達48M; 每個周期4個時鐘; 運行來自內部RAM的程序。

            四個可編程BULK / INTERRUPT / ISOCHRONOUS端點: 緩沖區(qū)可選擇為雙緩沖區(qū), 三緩沖區(qū)或四緩沖區(qū); 外部數(shù)據(jù)接口可為8或16位。

            GPIF: GPIF對于FX2的FIFO來說是一個內部主機, 可編程狀態(tài)機是它的核心。對于56腳封裝,它可以產(chǎn)生三個‘控制?’( CTL [ 2: 0] ) 和九個‘地址’ (GPIFADR [ 8: 0] )輸出, 能接收兩個外部和兩個內部‘準備’ ( RDY [ 1: 0] )輸入??刂茽顟B(tài)機由四個用戶定義的!波形描述‘控制’。內部RAM 中的波形描述符描述每個GPIF信號的行為。初始化階段, 波形描述符由FX2固件下載到GPIF寄存器中,通過GPIF接口在傳輸操作的代碼執(zhí)行全過程使用它。控制輸出信號( CTL[ 1: 0] )通常用做閘門控制(使能信號線)、讀/寫信號線等。CTLx波形邊沿可通過編程進行傳輸, 速率可達每個IFCLK時鐘一次( IFCLK 運行于48MH z)。RDY[ 1: 0]由GPIF取樣,而且能迫使一個傳輸處于等待, 繼續(xù), 或重復狀態(tài),直到它們處于一個特殊的狀態(tài)。

            2. 3 硬件電路圖

            根據(jù)所選控制器和具體條件, 設計硬件電路如圖2所示。

          硬件電路圖

          圖2 硬件電路圖。

            采用從主機下載固件程序的方法, SCL, SDA引腳通過兩個2. 2k 的電阻接3. 3V 電源, RESET引腳有滯后作用, 低電平有效; 內部PLL 在V cc 到達3. 3V后約200s后穩(wěn)定。典型電路是外接一個RC電路(R = 100K, C = 0. 1F)提供RESET:信號;軟件部分采用GPIF Master模式, 16 位數(shù)據(jù)總線,將兩路8位ADC 數(shù)據(jù)線直接連到GPIF數(shù)據(jù)總線上: FD[ 0: 7]接摩擦力數(shù)據(jù)信號FDATA [ 0: 8] ,FD[ 8 : 15] 接壓力數(shù)據(jù)信號PDATA [ 0 : 7 ]。

            CTL0, CTL1分別連接ADC 的READ 和WRITE 引腳, 用于控制其工作時序。REY0連接ADC 的INTR, 用于判斷是否開始讀取數(shù)據(jù), 并由此判斷何時改變GPIF狀態(tài)。

            芯片電源使用USB 總線電源, 采用MAX IM 公司的MAX882 芯片, 把5. 25V 的Vbus轉換為3.3V, 如圖3所示。


          圖3 電源轉換電路。

            對于USB 2. 0系統(tǒng), D + 和D - 信號線上的差分特性阻抗會嚴重影響到信號眼圖、EOP、帶寬、信號抖動和干擾的大小。根據(jù)U SB 2. 0規(guī)范的要求,差分線對的特性阻抗要求控制在90 ? 10% 以內,使D+ 和D - 布線長度在1英寸以內, 匹配誤差在50m il以內。

            3 軟件設計

            USB接口程序設計包括三部分: 固件程序設計、硬件驅動程序設計、高級應用程序設計。

            3. 1 固件( firmw are)設計

            設備固件程序的主要功能是控制EZUSB FX2接收并處理USB 驅動程序的請求、控制芯片中應用程序控制指令的接收、控制ADC 中的數(shù)據(jù)讀入等。該設計的固件程序除能夠使內置的GPIF在沒有CPU 的干涉下通過四個端點FIFO ( EP2、EP4、EP6、EP8)中的兩個處理數(shù)據(jù)傳輸外, 還有配置端點、通過控制端點0 來響應主機請求、控制和監(jiān)測GPIF的活動等固定工作。

            GPIF的波形描述符通過FX2的固件保存在波形寄存器中。FX2可以保持多達4個波形描述符,均可采用4種傳輸方式( Single 讀, Single寫, FIFO讀, FIFO寫)中的一種。

            一個波形由7 個可編程的狀態(tài)( S0 ~ S6 ) 和一個特殊的IDLE 狀態(tài)S7 組成, 當程序分支到它的IDLE 狀態(tài)時波形終止。從一種狀態(tài)到另一個狀態(tài)的轉換發(fā)生在IFCLK 的上升沿, 但GPIF可以保持在同一種狀態(tài)很多IFCLK 周期。每一個狀態(tài)都通過一個32位的狀態(tài)指令定義: 1) NDP狀態(tài): 在整個狀態(tài)期間, 控制輸出CTLx 被GPIF 指令定義為1, 0, 或三態(tài)。NDP狀態(tài)有一個以IFCLK 周期為單位的程序固定周期。如果一個波形定義的狀態(tài)少于7個, 最后一個編程的狀態(tài)結束后不會自動進入IDLE狀態(tài), 即最后一個編程狀態(tài)的狀態(tài)指令必須包含一個IDLE 狀態(tài)的明確分支。2) DP 狀態(tài): 任何一個狀態(tài)都可以定義為DP, 允許GPIF采樣兩個信號, 對采樣值進行布爾操作, 根據(jù)結果跳轉到其它狀態(tài)(或循環(huán)到自身)。若一個狀態(tài)指令包含一個控制任務(遞增FIFO 指針, 增加GPIFADR 地址等) , 這些任務總是在進入該狀態(tài)時執(zhí)行一次。若該狀態(tài)是一個循環(huán)到自身的DP, 可以編程為在每一個循環(huán)中重新執(zhí)行控制任務。

            GPIF的設計使用的是Cypress的GPIF Design工具, 可根據(jù)ADC 的時序和控制要求方便地設計,設計波形如圖4。采用Sing le Read 方式, 每一個狀態(tài)的持續(xù)時間可設置為0~ 256個IFCLK 個周期。

            在Status中設置了一個DP, 當RDY0( INTR )信號為高時, 跳轉到狀態(tài)0 重新下一次; 當為低時, 則返回到自身繼續(xù)執(zhí)行。定義好波形后, 由工具欄中的Too ls菜單中的Export to GPIF. c file導出為C語言文件。定義端點2, 6 為輸入端點, 對應的FIFO 緩沖區(qū)為雙緩沖區(qū), 保證不會因為緩沖區(qū)中的數(shù)據(jù)沒有傳送完畢而被覆蓋。每次采集數(shù)據(jù)的高字節(jié)存入端點2緩沖區(qū), 低字節(jié)存入端點6緩沖區(qū)。

          波形設置

          圖4 波形設置。

            3. 2 驅動程序的設計

            該系統(tǒng)需要兩個驅動程序, 下載固件的驅動程序和功能驅動程序。采用固件從主機下載的方式,由固件下載驅動程序完成。當設備連接到U SB 總線后, 負責把固件程序下載到CY 7C68013的RAM中, 完成重列舉工作, 使內核正常工作。主機根據(jù)其設置的V ID /PID尋找并安裝功能驅動程序, 從而實現(xiàn)主機與設備的通信。用戶程序與設備的通信及控制由功能驅動程序負責完成。

            驅動程序設計采用WDM (W indow s DriveMode)。其引入設備對象的概念來描述一個設備,主要包括物理設備對象( PDO )、功能設備對象( FDO)、過濾設備對象( f ilter DO )。其中, PDO 對應實際的物理設備, FDO 和f ilterDO 是相應驅動程序的處理對象。WDM 驅動程序直接操作的不是硬件本身, 而是相應的PDO, FDO, 和filter DO。當用戶發(fā)出請求時, 操作系統(tǒng)會將其打包形成一個IRP結構, 并發(fā)送至驅動程序, 通過識別IRP 中的設備對象來區(qū)分它是發(fā)送給哪個設備。

            USB設備最大優(yōu)點就是即插即用功能( PnP) ,PnP設備具有不同的設備狀態(tài), 當它接收到某些PnP IRP時, 其所處的設備狀態(tài)就會發(fā)生改變。圖5描述了PnP設備狀態(tài)及其相應的PnP IRP。

          PnP設備狀態(tài)

          圖5 PnP設備狀態(tài)。

            為保證USB設備連入系統(tǒng)時, W indow s能夠找到并加載與其進行通信的設備驅動程序, 除提供的編譯好的驅動程序外, 還需為其提供一個設備信息文件( DIF) , 該文件包含USB 設備、設備驅動程序及其安裝過程的詳細信息, 如該為設備使用哪個驅動、系統(tǒng)注冊表中應存儲哪些信息等, 以確保其硬件設備能正確地配置和安裝。在U SB 設備驅動程序安裝完畢后, 該設備的一些基本信息將被存儲到W indow s系統(tǒng)注冊表中, 驅動程序可執(zhí)行文件和其DIF也被復制到指定的系統(tǒng)目錄, 該USB 設備將出現(xiàn)在W indow s設備管理器中。

            3. 3 應用程序設計

            高級應用程序建立在驅動程序之上, 主機應用程序的編寫使用VC 編譯環(huán)境中的API函數(shù)實現(xiàn)。

            應用程序的編程方法與串口編程類似。首先必須查找設備, 打開設備的句柄, 然后進行讀寫和控制操作, 最后是關閉設備句柄。為了提高效率,可使用多線程技術實現(xiàn)讀寫。

            4 結語

            本文設計的用于摩擦實驗機的USB 數(shù)據(jù)采集系統(tǒng), 采用Cypress FX2系列芯片CY7C68013, 利用其GPIF Master模式的16位數(shù)據(jù)線與兩塊8位數(shù)模轉換芯片連接, 準確地保證了兩路力信號的同步。該芯片靈活的接口大大簡化了硬件連接。其固件程序自動下載功能可方便地對固件進行修改和調試。此USB設備的即插即用特性滿足了該系統(tǒng)便攜式及使用方便的要求。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();