《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 基于EZ-USB FX2和MAX1195的數(shù)據(jù)采集系統(tǒng)
基于EZ-USB FX2和MAX1195的數(shù)據(jù)采集系統(tǒng)
摘要: 近年來,,USB接口由于其傳輸速率高,,真正的即插即用等優(yōu)點正在逐漸取代傳統(tǒng)的計算機接口如:RS232,,EPP等,。目前,,許多的芯片生產(chǎn)商都推出了符合USB協(xié)議的芯片,,如Philips公司的PDIUSBD12,,NS公司的USBN9602等,。在眾多的USB2.0芯片中,Cypress公司的EZ-USB FX2(CY7C68013)芯片是一個不錯的選擇,。本文設計了一種基于EZ-USB FX2和MAX1195的數(shù)據(jù)采集系統(tǒng),,該系統(tǒng)符合USB2.0協(xié)議標準,通過與高精度激光縱模分析儀連接進行調(diào)試,,證明該系統(tǒng)達到了預定目的,。
Abstract:
Key words :

  1.引言

  近年來,USB接口由于其傳輸速率高,,真正的即插即用等優(yōu)點正在逐漸取代傳統(tǒng)的計算機接口如:RS232,,EPP等。目前,,許多的芯片生產(chǎn)商都推出了符合USB協(xié)議的芯片,,如Philips公司的PDIUSBD12,NS公司的USBN9602等,。在眾多的USB2.0芯片中,,Cypress公司的EZ-USB FX2(CY7C68013)芯片是一個不錯的選擇。本文設計了一種基于EZ-USB FX2和MAX1195的數(shù)據(jù)采集系統(tǒng),,該系統(tǒng)符合USB2.0協(xié)議標準,,通過與高精度激光縱模分析儀連接進行調(diào)試,證明該系統(tǒng)達到了預定目的,。

  2. CY7C68013芯片和MAX1195芯片介紹

  2.1 CY7C68013介紹:

  CY7C68013在一塊芯片上同時集成了USB2.0收發(fā)器,,串行接口引擎SIE,增強型的8051微控制器以及一個可編程外圍接口GPIF(General Programmable Interface),。CY7C68013的“量子FIFO”(FIFO,,先進先出存儲器)特性使得無需8051CPU的任何干預,數(shù)據(jù)即可從外設上傳到主機,,這種數(shù)據(jù)傳輸模式徹底解決了USB2.0收發(fā)器與一般8051微控制器連接時由于8051的時鐘頻率低而導致的傳輸速率瓶頸問題,。CY7C68013芯片的另一個突出優(yōu)點是其“‘軟’配置”,代碼和數(shù)據(jù)能夠直接通過USB接口下載到片內(nèi)的RAM上,,這一功能通過Cypress公司獨創(chuàng)的“重枚舉”(ReNumerationTM)功能實現(xiàn),。CY7C68013芯片有四個可編程的批量,、中斷、同步傳輸端點,,可以分別設置為雙緩沖,,三緩沖和四緩沖模式,8位或者16位的外部數(shù)據(jù)接口,,該接口可以根據(jù)需要工作在 GPIF或者SLAVEFIFO模式,。其中GPIF能夠和絕大部分并行接口如FIFO等實現(xiàn)“無膠”連接,即無需外加任何微控制器或CPLD,、FPGA 等,。本文的設計中采用了GPIF方式。

  2.2 MAX1195介紹:

  MAX1195是由MAXIM公司推出的一款低功耗,、雙路,、高速、八位模數(shù)轉(zhuǎn)換芯片,,采用流水線(Pipeline)結(jié)構(gòu),,最高采樣率40Mbps,內(nèi)部集成了兩個 ADC,,真正實現(xiàn)兩路同步采樣轉(zhuǎn)換,。其工作電壓范圍是2.7V-3.6V,具有減小功耗的休眠模式和關斷(Shut-Down)模式,,單端或者差分輸入方式,,片上采樣保持(T/H)電路,內(nèi)部或者外部參考電壓,,含有用戶可選擇的數(shù)據(jù)輸出格式:二的補碼格式或者補償二進制碼格式,,具有輸出使能控制,可以將輸出置為高阻態(tài),。此外MAXIM還提供了與MAX1195引腳,、封裝完全兼容的10位、更高采樣率的模數(shù)轉(zhuǎn)換芯片,,如MAX1197,、MAX1198等,,因此系統(tǒng)升級非常方便,。在本文的工作中,采用了內(nèi)部參考電壓,、雙路單端模擬輸入,、補償二進制碼輸出格式。

  3.系統(tǒng)整體構(gòu)成及其工作原理介紹:

  3.1系統(tǒng)構(gòu)成:

  系統(tǒng)的整體框圖如圖1所示,。整個系統(tǒng)主要包括USB傳輸芯片CY7C68013,先進先出存儲器(FIFO)SN74V235和模數(shù)轉(zhuǎn)換芯片MAX1195組成,。反相器74LVC04主要起MAX1195和FIFO之間的邏輯控制作用。


  圖1       系統(tǒng)整體框圖[next]

  3.2系統(tǒng)工作原理:

  MAX1195的兩路輸入信號是同時被采樣的,十六位的數(shù)據(jù)輸出總線使兩路數(shù)據(jù)可以同時輸出,,分別占八位,,即:D0A~D7A和D0B~D7B;SN74V235輸入為18位,,根據(jù)CMOS技術的要求,,將未使用的D16和D17引腳接地。MAX1195采集到的數(shù)據(jù)首先送進FIFO里,, FIFO的寫時鐘(WCLK)和AD的轉(zhuǎn)換時鐘反相,,這樣可以充分滿足MAX1195輸出數(shù)據(jù)的建立時間,避免發(fā)生數(shù)據(jù)丟失或者數(shù)據(jù)重復寫入現(xiàn)象,。 SN74V235的 (Programmable Almost Full)可編程幾乎滿信號經(jīng)74LVC04反相后接MAX1195的Sleep和 引腳,,以免FIFO發(fā)生溢出而丟失數(shù)據(jù)。SN74V235的數(shù)據(jù)輸出引腳Q0~Q15與CY7C68013的GPIF模式下的數(shù)據(jù)線FD[15:0]即端口B和端口D組成的十六位數(shù)據(jù)總線相連,,數(shù)據(jù)SN74V235到EZ-USB FX2的時序過程由CY7C68013的GPIF 控制,。FX2采用了“量子FIFO”結(jié)構(gòu),在FX2里面,,數(shù)據(jù)可以分為兩個域:USB域和GPIF接口域,。這兩個域是獨立的,允許分別使用不同的時鐘和邏輯控制數(shù)據(jù)的傳輸,,USB域是由SIE控制的,,SIE通過USB口接收或者發(fā)送端點FIFO的數(shù)據(jù)。FX2的“量子FIFO”能夠幾乎不花時間在這兩個數(shù)據(jù)域中的轉(zhuǎn)移數(shù)據(jù),,因為這兩個域用的FIFO在物理上是同一個,。所以根據(jù)“量子FIFO”原理,實際上數(shù)據(jù)已經(jīng)存在于屬于USB域的端點FIFO里面了,,采用USB的BULK傳輸方式,,使該數(shù)據(jù)完全不經(jīng)過低頻CPU干預,而是采用FX2提供的AutoIn模式,,即一旦FX2端點緩沖區(qū)的數(shù)據(jù)達到指定字節(jié)數(shù),,數(shù)據(jù)將自動被打包從USB口上傳到主機。

  3.3 GPIF波形及程序介紹:

  GPIF是FX2的端點FIFO的片內(nèi)控制器,,可以完全代替片外的控制器而實現(xiàn)FX2與外圍FIFO的“無膠”連接,。GPIF的核心是一個可編程狀態(tài)機,可以產(chǎn)生六個“控制”(CTL)和九個“地址”(GPIFADR[8:0])信號,,可以接收六個外部(RDY)“準備好”輸入,,八位或者十六位數(shù)據(jù)總線,時鐘可以用FX2的IFCLK,,也可以由外圍提供,。本文GPIF接口的詳細硬件連接如圖2所示,。


  圖2  GPIF與SN74V235詳細連接圖

  GPIF狀態(tài)機可以定義四個波形描述符,一般情況下是:FIFO讀,,F(xiàn)IFO寫,,單字/字節(jié)讀,單字/字節(jié)寫,。Cypress提供了圖形化的波形描述工具GPIF Designer,,用戶只需要給出GPIF波形,GPIF Designer會自動生成C語言的波形代碼Gpif.c,,可以直接鏈接到用戶的固件程序中,。本文中用到了FIFORd描述符,波形如圖3所示,。


  圖3      GPIF Designer設計的 FIFORd波形

  4.系統(tǒng)軟件編寫

  系統(tǒng)軟件主要包括三個部分:下位機CY7C68013的固件,,USB驅(qū)動程序和上位機主機應用程序。

[next]

  4.1 固件程序編寫

  對于下位機CY7C68013的固件編寫,,Cypress公司給出了在Keil C51下的固件程序框架,,固件框架完成EZ-USB FX2的初始化、USB標準設備請求處理,、USB掛起模式下的電源管理服務和USB中斷處理,。Cypress還提供了函數(shù)鉤子來加速用戶代碼的添加。用戶只需要簡單地提供一個USB描述符表和執(zhí)行外圍功能的代碼即可,。

 

  4.2 驅(qū)動程序編寫

  Windows系統(tǒng)下的USB驅(qū)動包括三層,,從高到低依次是:USB客戶端設備驅(qū)動(USB Client Device Driver)、USB總線驅(qū)動(USB Hub(Bus) Driver),、主機控制器驅(qū)動(Host Controller Driver),。后兩者由Windows系統(tǒng)提供,用戶只需要開發(fā)USB客戶端設備驅(qū)動程序,,Cypress公司提供了一個通用的驅(qū)動程序 (General Purpose Driver),,即ezusb.sys,一般情況下,,該驅(qū)動程序可以滿足FX2開發(fā)者的需要,。本文使用了Cypress公司的通用驅(qū)動 ezusb.sys。為了使用ezusb.sys,,用戶必須編寫對應的inf文件,,inf文件將特定的USB設備綁定給相應的驅(qū)動程序,該inf文件參照 ezusbw2k.inf編寫,。

  4.3 主機應用程序編寫

  通用驅(qū)動程序GPD即ezusb.sys提供了基本USB設備請求和數(shù)據(jù)傳輸?shù)挠脩裟J浇涌?,用戶模式應用程序通過Win32函數(shù) DeviceIoControl()給設備驅(qū)動器發(fā)送請求。Ezusb.sys提供了基本設備請求,、批量讀寫,、同步讀寫等一系列IOCTL函數(shù)。這里以 IOCTL_EZUSB_BULK_READ(EZUSB批量傳輸)為例加以介紹,。

  批量傳輸模式下讀FX2的端點FIFO的關鍵代碼如下:

  DWORD  ioctl_val=IOCTL_EZUSB_BULK_READ;  //設置從設備中讀數(shù)據(jù)

  Bresult=DeviceIoControl ( hDevice , ioctl_val ,  //從設備讀數(shù)據(jù)

  &bulkControl ,      //端點號

  sizeof ( BULK_TRANSFER_CONTROL),  //傳入?yún)?shù)的大小

  buffer ,  //讀數(shù)據(jù)的緩沖區(qū)

  length ,  //讀數(shù)據(jù)的長度

  (unsigned long *)&nBytes , //驅(qū)動返回的數(shù)據(jù)的實際長度

  NULL);

  限于篇幅,,其他程序代碼從略。

  6.結(jié)束語

  本文的創(chuàng)新點是充分發(fā)揮了CY7C68013的優(yōu)勢,,利用FX2的內(nèi)部可編程狀態(tài)機GPIF實現(xiàn)了與外圍FIFO“無膠”連接,,避免了使用外圍ASIC或者CPLD、FPGA等的麻煩,,系統(tǒng)升級方便,。整個電路結(jié)構(gòu)緊湊,占用面積小,,便于攜帶,。

  本文采用Cypress公司的USB2.0芯片CY7C68013設計了一種通用的高速雙路同步數(shù)據(jù)采集系統(tǒng),通過將其與高精度激光縱模分析儀連接進行試驗,,證明該系統(tǒng)實現(xiàn)了數(shù)據(jù)的高速實時傳輸,,達到了預先設計的目標。隨著USB口的進一步普及和計算機的發(fā)展,,本文設計的這種USB數(shù)據(jù)采集系統(tǒng)必將得到更加廣泛的應用,。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。