




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE31USB2.0接口和DSP構(gòu)成的高速數(shù)據(jù)采集系統(tǒng)的分析和設(shè)計(jì)【摘要】本文主要闡述了USB2.0接口和DSP構(gòu)成的高速數(shù)據(jù)采集系統(tǒng)的工作原理、結(jié)構(gòu)組成及其設(shè)計(jì)與實(shí)現(xiàn)。為達(dá)到設(shè)計(jì)的要求,詳細(xì)地對其系統(tǒng)組成器件的選擇及其特性和硬件的連接作了說明。重點(diǎn)介紹了USB技術(shù)及其軟件設(shè)計(jì)。在這部分中,介紹了講述了相關(guān)的主機(jī)接口,這類接口簡化了主機(jī)內(nèi)部客戶軟件與設(shè)備應(yīng)用之間的通信。本章所涉及的具體實(shí)例部分只是作為例子,以闡述主機(jī)系統(tǒng)響應(yīng)USB設(shè)備請求的行為。USB主機(jī)可以提供不同的軟件系統(tǒng)實(shí)現(xiàn)方法,完成相應(yīng)的主機(jī)操作。系統(tǒng)軟件設(shè)計(jì)過程中常見故障的分析。【關(guān)鍵詞】USB2.0接口DSP高速數(shù)據(jù)采集系統(tǒng)TheAnalysisandDesignThatUSB2.0ConnectstheHigh-speedDataThatandDSPDonstitutetoCollecttheSystemAbstractThistextmainlyelaboratedthattheUSB2.0connectsthehigh-speeddatathatandDSPconstitutetocollecttheworkprinciple,structureofthesystemtoconstituteanditdesignswiththerealization.Inordertoattaintherequestofdesign,detailedastoit'sthesystemconstitutedthechoiceofthemachinepieceandtheconjunctionofthehardwarestomaketheelucidation.ThepointintroducedtechniqueofUSBanditssoftwaredesigns.InthissectiondescribesthehostinterfacesnecessarytofacilitateUSBcommunicationbetweenasoftwareclient,residentonthehost,andafunctionimplementedonadevice.Theimplementationdescribedinthischapterisnotrequired.ThisimplementationisprovidedasanexampletoillustratethehostsystembehaviorexpectedbyaUSBdevice.AhostsystemmayprovideadifferenthostsoftwareimplementationaslongasaUSBdeviceexperiencesthesamehostbehavior.Inthesystemsoftwaredesignprocesstheanalysisofthefamiliarbreakdown.KeywordsUSB2.0interfacesDSPThehigh-speeddatacollectsthesystem
一緒言隨著數(shù)字信號處理理論和計(jì)算機(jī)的不斷發(fā)展,現(xiàn)代工業(yè)生產(chǎn)和科學(xué)技術(shù)研究都需要借助于數(shù)字處理方法。進(jìn)行數(shù)字處理的先決條件是將所研究的對象進(jìn)行數(shù)字化,因此數(shù)據(jù)采集與處理技術(shù)日益得到重視。在圖像處理、瞬態(tài)信號檢測、軟件無線電等一些領(lǐng)域,更是要求高速度、高精度、高實(shí)時(shí)性的數(shù)據(jù)采集與處理技術(shù)。現(xiàn)在的高速數(shù)據(jù)采集處理卡一般采用高性能數(shù)字信號處理器(DSP)和高速總線技術(shù)的框架結(jié)構(gòu)。DSP用于完成計(jì)算量巨大的實(shí)時(shí)處理算法,高速總線技術(shù)則完成處理結(jié)果或者采樣數(shù)據(jù)的快速傳輸。DSP主要采用TI或者ADI公司的產(chǎn)品,高速總線可以采用ISA、PCI、USB等總線技術(shù)。目前,使用比較廣泛的是PCI總線,雖然其有很多優(yōu)點(diǎn),但是存在如下嚴(yán)重缺陷:易受機(jī)箱內(nèi)環(huán)境的影響,受計(jì)算機(jī)插槽數(shù)量的地址、中斷資源的限制而不可能掛接很多設(shè)備等。USB總線由于具有安裝方便、傳輸速率高、易擴(kuò)展等優(yōu)點(diǎn),其中USB2.0標(biāo)準(zhǔn)有著高達(dá)4800bps的傳輸速率,已經(jīng)逐漸成為計(jì)算機(jī)接口的主流。本設(shè)計(jì)是一個(gè)采用USB2.0接口和高性能DSP的高速數(shù)據(jù)采集處理系統(tǒng),主要是為光纖通信中密集波分復(fù)用系統(tǒng)的波長檢測與調(diào)整所設(shè)計(jì)的,也可以應(yīng)用于像圖像處理、雷達(dá)信號處理等相關(guān)領(lǐng)域。二系統(tǒng)原理及器件選用(一)系統(tǒng)原理及簡介整個(gè)高速數(shù)據(jù)采集處理系統(tǒng)的硬件構(gòu)成為:高速ADC、高速大容量數(shù)據(jù)緩沖存儲(chǔ)器、高性能DSP和USB2.0接口。系統(tǒng)組成的原理框圖如圖2-1所示。高速ADCFLASH高速ADCFLASHPCUSB接口DSP緩存USB接口DSP緩存圖2-1系統(tǒng)組成的原理框圖外界輸入信號經(jīng)A/D采樣后,采集到的數(shù)據(jù)先保存在高速數(shù)據(jù)緩存中,數(shù)據(jù)采集結(jié)束后DSP從緩存中讀取數(shù)據(jù)開始信號處理。信號處理的算法已編成程序保存在外部的Flash芯片上,供DSP上電讀程序到其內(nèi)部RAM單元,全速運(yùn)行程序。信號處理后的數(shù)據(jù)通過USB2.0接口依次傳送到主機(jī)方,把數(shù)據(jù)數(shù)值存儲(chǔ)在PC機(jī)內(nèi)。(二)系統(tǒng)組成器件的選擇高性能DSP采用TI公司的TMS320C6000系列定點(diǎn)DSP中的TMS320C6203B;高速ADC采用TI公司的ADS5422,12位采樣,最高采樣頻率為105MHz;PC機(jī)接口采用USB2.0,理論最大數(shù)據(jù)傳輸速率為480Mbps,器件選用Cypress公司EZ-USBFX2系列中的CY7C68013;數(shù)據(jù)緩沖采用IDT公司的高速大容量FIFO器件IDT72V2113;程序存儲(chǔ)在Flash存儲(chǔ)器中,器件選用SST291E010。下面逐一介紹各個(gè)器件的主要特性。1.高速A/D轉(zhuǎn)換器高速A/D轉(zhuǎn)換器選用美國TI公司生產(chǎn)的高速并行14位模數(shù)轉(zhuǎn)換器ADS5422,其最高采樣頻率達(dá)到62MHz,采樣頻率為100MHz時(shí),SNR(信躁比)為72dB,SFDR(寄生動(dòng)態(tài)范圍)為85dB。模擬信號輸入可以是單端輸入方式或者差分輸入方式,最高輸入信號峰峰值為4V,單一5V電源供電。輸出數(shù)字信號完全兼容3.3V器件,并且提供輸入信號滿量程標(biāo)志以及輸出數(shù)字信號有效標(biāo)志,從而方便和其它器件的連接。2.高速緩存FIFO高速緩存是系統(tǒng)中的一個(gè)關(guān)鍵環(huán)節(jié)。IDT72V2113是由美國IDT公司生產(chǎn)的高速大容量先進(jìn)先出存儲(chǔ)器件(FIFO)。其最高工作頻率為133MHz;容量為512KB,可以通過引腳方便的將容量設(shè)置成512K×9bit或者256K×18bit兩種方式;IDT72V2113可以設(shè)置標(biāo)準(zhǔn)工作模式或者FWFT(FistWordFallThrough)工作模式,并提供全滿、半滿、全空、將滿以及將空等五種標(biāo)志信號,非常方便進(jìn)行容量擴(kuò)展。大容量數(shù)據(jù)存儲(chǔ)是高速數(shù)據(jù)采集系統(tǒng)迫切需要解決的問題,例如,一個(gè)20M采樣速率、8位的ADC,在一秒鐘的時(shí)間內(nèi)所采集到的數(shù)據(jù)量是20M字節(jié),雖然IDT72V2113的單片容量是512K×9bit,可以很好的滿足一般的數(shù)據(jù)采集系統(tǒng)的需要,但是,對于高速、無間隔的數(shù)據(jù)采集系統(tǒng)來說,一片的容量是不夠的。IDT72V2113便于擴(kuò)展的特性可以很容易地解決這個(gè)問題,而且不需要外部控制電路,連接簡單、可靠,很方便電路設(shè)計(jì)及軟件開發(fā)。其容量擴(kuò)展可以分為字長擴(kuò)展和深度擴(kuò)展。IDT72V2113的字長擴(kuò)展比較簡單,只要把各個(gè)芯片的控制信號連在一起就可以實(shí)現(xiàn)。這里需要注意的是EF/IR和FF/OR兩個(gè)引腳,在標(biāo)準(zhǔn)模式下這兩個(gè)管腳的功能為EF和FF,把各個(gè)芯片這兩個(gè)管腳分別相與;在FWFT模式下,這兩個(gè)管腳功能為IR和OR,把各個(gè)芯片的這兩個(gè)管腳分別相或,這樣就可以確保同步讀寫每一個(gè)IDT72V213。IDT72V2113的深度擴(kuò)展方式僅適用于FWFT工作模式。其中,傳輸時(shí)鐘可以選擇寫時(shí)鐘和讀時(shí)鐘中頻率較高的那個(gè)時(shí)鐘信號。工作原理為:當(dāng)有數(shù)據(jù)寫入第一片F(xiàn)IFO中后,其輸出允許信號(OR)低有效,從而使第二片F(xiàn)IFO的寫使能信號有效;同時(shí),只要第二片F(xiàn)IFO中仍有空間,它的輸入允許信號(IR)低有效,從而使第一片F(xiàn)IFO的讀使能信號(REN)有效,這樣,在傳輸時(shí)鐘的驅(qū)動(dòng)下,數(shù)據(jù)由第一片F(xiàn)IFO向第二片F(xiàn)IFO傳送,直到第二片F(xiàn)IFO寫滿為止,以后的數(shù)據(jù)將儲(chǔ)存在第一片F(xiàn)IFO中。通過深度擴(kuò)展,兩片IDT72V2113可形成容量為1M×9bit的數(shù)據(jù)緩沖。IDT72V2113不僅可以通過字長擴(kuò)展和深度擴(kuò)展來實(shí)現(xiàn)容量擴(kuò)展,而且可以將兩者結(jié)合起來,進(jìn)行更大容量的擴(kuò)展,如用四片IDT72V2113擴(kuò)展成容量為1M18bit的數(shù)據(jù)緩沖。3.高性能DSP處理器DSP是整個(gè)采集系統(tǒng)的核心。TMS320C6203B是TI公司高性能數(shù)字信號處理器TMS320C6000系列的一種,采用修正的哈佛總線結(jié)構(gòu),共有一套256位的程序總線、兩套32位的程序總線和一套32位的DMA專用總線;內(nèi)部有8個(gè)功能單元可以并行操作,工作頻率最大為300M,最大處理能力為2400MIPS;內(nèi)部集成了豐富的外圍設(shè)備接口,如外部存儲(chǔ)器接口(EMIF)、外部擴(kuò)展總線(XB)、多通道緩沖串口(McBSPS)和主機(jī)接口(HPI),與外部存儲(chǔ)器、協(xié)處理器、主機(jī)以及串行設(shè)備的連接非常方便。TMS320C6203B的DMA控制器有以下特點(diǎn):共有4個(gè)通道,32位尋址能力,可以對存儲(chǔ)器映射空間的任何一個(gè)區(qū)域進(jìn)行訪問;傳送數(shù)據(jù)支持8位、16位和32位字長;靈活的地址產(chǎn)生方式,支持多幀傳輸方式;每次傳輸完畢后,可以進(jìn)行DMA通道的自動(dòng)初始化;傳輸操作可以由選擇的同步事件觸發(fā)。DMA寄存器的設(shè)置包括以下幾個(gè)寄存器:通道的主、副控制寄存器,通道的源地址、目的地址寄存器,通道傳輸計(jì)數(shù)寄存器,DMA全局地址寄存器,DMA全局索引寄存器,DMA全局計(jì)數(shù)重載寄存器。TMS320C6203B的外部擴(kuò)展總線(XB)寬度為32位,可以連接外部異步設(shè)備、異步或同步FIFO、PCI控制器和其他一些外部控制器。外部擴(kuò)展總線由I/O總線和主機(jī)口接口組成。I/O總線有異步I/O工作模式和同步FIFO工作模式,其中同步FIFO模式與標(biāo)準(zhǔn)同步FIFO可以實(shí)現(xiàn)無縫連接,可以同時(shí)無縫實(shí)現(xiàn)四個(gè)FIFO寫借口或者實(shí)現(xiàn)三個(gè)FIFO寫接口及一個(gè)FIFO讀接口。通過無縫連接實(shí)現(xiàn)FIFO讀接口,F(xiàn)IFO必須連接到XCE3空間。4.USB2.0接口USB(UniversalSerialBus)總線是Intel、NEC、Microsoft、IBM等公司聯(lián)合提出的一種新的串行總線接口規(guī)范。為了適應(yīng)高速傳輸?shù)男枰?000年4月,這些公司在原1.1協(xié)議的基礎(chǔ)上制訂了USB2.0傳輸協(xié)議,已超過了目前IEEE1394接口400Mbps的傳輸速度,達(dá)到了480Mbps。USB總線使用簡單,支持即插即用PnP(PlugAndPlay),一臺主機(jī)可串連127個(gè)USB設(shè)備。設(shè)備與主機(jī)之間通過輕便、柔性好的USB線纜連接,最長可達(dá)5m,使設(shè)備具有移動(dòng)性,可自由掛接在具有USB接口的運(yùn)行在Windows98/2000/XP平臺的PC機(jī)上。USB總線已被越來越多的標(biāo)準(zhǔn)外設(shè)和用戶自定義外設(shè)所使用,如鼠標(biāo)、鍵盤、掃描儀、音箱等。CY7C68013是美國Cypress公司推出的EZ-USBFX2系列中的USB2.0芯片,是目前市面上比較少的符合USB2.0標(biāo)準(zhǔn)的USB控制器之一,是一個(gè)全面集成的解決方案,它占用更少的電路板空間,并縮短了開發(fā)時(shí)間。CY7C68013結(jié)構(gòu)圖如圖2-2所示。
24MHzXTAL24MHzXTALI2CBUS8051Core12/24/48I2CBUS8051Core12/24/48MHzDataBus(8)Address(16)/0.5/1.0/2.0X20PLL/0.5/1.0/2.0X20PLLGPIFGPIFUSB2.0收發(fā)器8.5KBRAMUSB1.1/2.0SIEUSB2.0收發(fā)器8.5KBRAMUSB1.1/2.0SIE4KFIFO4KFIFOCY7C68013圖2-2CY7C68013結(jié)構(gòu)圖CY7C68013集成了以下特性:=1\*GB3①包括1個(gè)智能串行的接口引擎(SIE),它執(zhí)行所有基本的USB功能,將嵌入的MCU解放出來以用于實(shí)現(xiàn)其它豐富的功能,以保證持續(xù)高速有效的數(shù)據(jù)傳輸;②提供了4KB的大容量FIFO用于數(shù)據(jù)緩沖,保證數(shù)據(jù)高速傳輸?shù)男枰?。?dāng)作為從設(shè)備時(shí),可采用Synchronous/AsynchronousFIFO接口與主設(shè)備(如ASIC,DSP等)連接;當(dāng)作為主設(shè)備時(shí),可通過通用可編程接口(GPIF)形式任意地控制波形來實(shí)現(xiàn)與其它從設(shè)備連接,能夠輕易地兼容絕大多數(shù)總線標(biāo)準(zhǔn),包括ATA、UTOPIA、EPP和PCMCIA等;=3\*GB3③CY7C68013內(nèi)部集成了一個(gè)增強(qiáng)型的51內(nèi)核,其指令集與標(biāo)準(zhǔn)的8051兼容,并且在多方面有所改進(jìn)。例如:最高工作頻率可達(dá)48MHz,一個(gè)指令周期為4個(gè)時(shí)鐘周期,兩個(gè)UART接口,三個(gè)定時(shí)/計(jì)數(shù)器,擴(kuò)展的中斷系統(tǒng),兩個(gè)數(shù)據(jù)指針,一個(gè)I2C接口引擎等;=4\*GB3④固件軟配置,可將需要在CY7C68013上運(yùn)行的固件,存放在主機(jī)上,當(dāng)USB設(shè)備連上主機(jī)后,下載到設(shè)備上,這樣就實(shí)現(xiàn)了在不改動(dòng)硬件的情況下很方便地修改固件;=5\*GB3⑤3.3V電源系統(tǒng);=6\*GB3⑥能夠充分實(shí)現(xiàn)USB2.0(2000版)協(xié)議,并向下兼容USB1.1
三高速數(shù)據(jù)采集處理系統(tǒng)的硬件連接(一)模擬信號輸入電路ADS5422的模擬信號輸入可以采取單端輸入方式或者差分輸入方式。單端輸入方式連接比較簡單,但抗噪性能差,所以我們采取差分輸入方式,以盡量減少信號噪聲以及電磁的干擾,尤其是采用差分輸入方式可以將所有偶次諧波通過正反兩個(gè)輸入信號基本上互相抵消。ADS5422的模擬信號差分輸入方式需要同時(shí)使用IN和IN引腳,其硬件連接方法如圖2-1所示。圖中,首先使用放大器OPA847以及RF變壓器將單端信號轉(zhuǎn)換成差分信號,然后輸入到ADS5422,其中ADS5422的公共端CM和RF變壓器的公共端連接,RF變壓器的匝數(shù)比應(yīng)該根據(jù)信號確定。為了增強(qiáng)信號的穩(wěn)定性,在ADS5422每個(gè)信號的輸入前加上RC低通濾波電路,圖3-1中推薦Rt為50Ω,Rin為22Ω,Cin為10pF,這些元件也可以根據(jù)具體的信號進(jìn)行調(diào)整,一般情況下電阻值在10~100Ω之間,電容值在10~200pF之間。圖3-1ADS5422的差分輸入(二)ADS5422與IDT72V2113的連接雖然ADS5422的供電電壓為5V,但其輸出的數(shù)字信號電平兼容3.3V電平,因此不需要電平轉(zhuǎn)換芯片,只要將ADS5422的數(shù)據(jù)線與IDT72V2113的數(shù)據(jù)線相連即可。但是,ADS5422采樣和把采樣數(shù)據(jù)存儲(chǔ)到IDT72V3113中,這兩個(gè)操作對時(shí)序配置要求非常嚴(yán)格,如果兩者時(shí)序關(guān)系配合得不是很好,就會(huì)發(fā)生數(shù)據(jù)存儲(chǔ)出錯(cuò)或者掉數(shù)等現(xiàn)象。如何簡單、可靠地實(shí)現(xiàn)采樣和存儲(chǔ)是設(shè)計(jì)這部分電路的難點(diǎn)。一般的方法是,通過可編程邏輯器件(CPLD或FPGA)來實(shí)現(xiàn)ADC與FIFO存儲(chǔ)器之間的時(shí)序,即由CPLD或FPGA來控制ADC采樣和FIFO存儲(chǔ)器的寫操作。但是,通過仔細(xì)查看ADS5422和IDT72V2113的工作時(shí)序圖,找到了一種簡單可靠的實(shí)現(xiàn)方法,此方法不需要CPLD或FPGA就可以實(shí)現(xiàn)兩者的時(shí)序配合。
圖3-2ADS5422工作時(shí)序首先分析ADS5422的工作時(shí)序圖,如圖3-2所示,其中t1為采樣時(shí)鐘上跳沿到輸出數(shù)據(jù)無效之間的時(shí)間間隔,即數(shù)據(jù)保持時(shí)間,其大小為3ns。查看IDT72V2113的相關(guān)文檔可知,對其進(jìn)行寫操作時(shí),數(shù)據(jù)線的保持時(shí)間大于1ns即可滿足要求。因此,ADS5422與IDT72V2113之間的時(shí)序配合可以采用以下簡單的實(shí)現(xiàn)方法:ADS5422的采樣時(shí)鐘和IDT72V2113的寫時(shí)鐘采用同一個(gè)時(shí)鐘源,這樣,每一個(gè)時(shí)鐘的上跳沿,ADS5422進(jìn)行模數(shù)轉(zhuǎn)換,同時(shí)將上個(gè)時(shí)鐘周期內(nèi)輸出的采樣數(shù)據(jù)存儲(chǔ)到DT72V2113內(nèi)部。(三)TMS320C6203B與IDT72V2113的連接TMS320C6203B與IDT72V2113的連接是通過C6203B外部擴(kuò)展總線(XB)實(shí)現(xiàn)的。C6203B的外部擴(kuò)展總線(XB)寬度為32位,可以實(shí)現(xiàn)與同步FIFO無縫連接,可以同時(shí)無縫實(shí)現(xiàn)四個(gè)FIFO寫接口或者實(shí)現(xiàn)3個(gè)FIFO寫接口及1個(gè)FIFO讀接口。通過無縫連接實(shí)現(xiàn)FIFO讀接口,F(xiàn)IFO必須連接到XCE3上,數(shù)據(jù)通過DMA方式從IDT72V2113傳送到C6203B的片內(nèi)RAM中,具體連接如圖3-3所示。圖中,4片IDT72V2113經(jīng)過字長和字深擴(kuò)展形成2MB的數(shù)據(jù)輸入緩沖,輸入數(shù)據(jù)總線(D0~D15)、輸出數(shù)據(jù)總線(Q0~Q15)、讀使能(REN)、讀時(shí)鐘(RCLK)、寫使能(WEN)、寫時(shí)鐘(WCLK)和將空標(biāo)志信號(PAE)是由4片IDT72V2113的相應(yīng)信號組合形成的;XCE3為外部擴(kuò)展總線(XB)的空間選擇信號,XFCLK為外部擴(kuò)展總線(XB)的輸出時(shí)鐘,EXT_INT4是C6203B的外部中斷信號4,DX0用作通用輸出口,控制IDT72V2113的寫使能信號。圖3-3TMS320C6203B與IDT72V2113的連接(四)CY7C68013與C6203B的連接CY7C68013是一個(gè)非常方便的USB2.0實(shí)現(xiàn)方案,它提供與DSP或者M(jìn)CU連接的接口,連接方法有兩種:SlaveFIFOs和Master可編程接口GPIF。在本方案中,選用了SlaveFIFOs方式,異步讀寫。SlaveFIFOs方式是從機(jī)方式,DSP可以像讀寫普通FIFO一樣對CY7C68013內(nèi)部的多層緩沖FIFO進(jìn)行讀寫。具體的電路連接如圖3-4所示。圖3-4USB與DSP的連接FLAGA、FLAGB和FLAGC是CY7C68013內(nèi)部FIFO的狀態(tài)標(biāo)志,C6203B通過通用I/O口來獲得FIFO的空、半滿(由用戶設(shè)定半滿的閾值)和滿等狀態(tài)信息。C6203B對CY7C68013內(nèi)部FIFO的選擇,以及數(shù)據(jù)包的提交也是通過通用I/O口來實(shí)現(xiàn)。C6203B通過EMIF接口的CE2空間對CY7C68013進(jìn)行讀寫操作。工作過程為:DSP通過USB向PC發(fā)送數(shù)據(jù)時(shí),首先查看空、半滿和滿這三個(gè)狀態(tài)信號,然后向USB寫入適當(dāng)大小的數(shù)據(jù),以保證數(shù)據(jù)不會(huì)溢出;PC機(jī)通過USB向DSP發(fā)送命令字時(shí),USB通過中斷方式通知DSP讀取命令字。
四USB軟件設(shè)計(jì)USB接口的開發(fā)和設(shè)計(jì)中有相當(dāng)大的工作量是關(guān)于USB軟件的設(shè)計(jì)。USB軟件設(shè)計(jì)包括三方面的工作:固件(firmware)設(shè)計(jì),驅(qū)動(dòng)程序設(shè)計(jì)和主機(jī)端應(yīng)用程序的設(shè)計(jì)。(一)固件設(shè)計(jì)固件設(shè)計(jì)的目的就是使CY7C68013在USB上達(dá)到最大的傳輸速率。外圍設(shè)備,例如打印機(jī)、掃描儀、外部的海量存儲(chǔ)器和數(shù)碼相機(jī)等都可以使用CY7C68013。在USB上傳輸數(shù)據(jù),這些設(shè)備的MCU要忙于處理許多設(shè)備數(shù)據(jù)和圖像處理等任務(wù)。CY7C68013的固件可設(shè)計(jì)為完全的中斷驅(qū)動(dòng)。圖4-1固件程序結(jié)構(gòu)如圖4-1所示后臺中斷服務(wù)程序(ISR)和前臺主程序循環(huán)之間的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實(shí)現(xiàn)。CY7C68013的批量輸出端點(diǎn)可以使用循環(huán)的數(shù)據(jù)緩沖區(qū),當(dāng)CY7C68013從USB收到一個(gè)數(shù)據(jù)包,那么就對MCU產(chǎn)生一個(gè)中斷請求,MCU立即響應(yīng)中斷。在ISR中固件將數(shù)據(jù)包從CY7C68013內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū),并隨即清零CY7C68013的內(nèi)部緩沖區(qū),以使其能夠接受新的數(shù)據(jù)包。MCU可以繼續(xù)完成當(dāng)前的前臺任務(wù),然后返回到主循環(huán),檢查循環(huán)緩沖區(qū)內(nèi)是否有新的數(shù)據(jù)并開始其他的前臺任務(wù)。這種結(jié)構(gòu)中主循環(huán)不關(guān)心數(shù)據(jù)是來自USB串口還是并口,它只檢查循環(huán)緩沖區(qū)內(nèi)需要處理的新數(shù)據(jù)。這使得主循環(huán)程序?qū)W⒂跀?shù)據(jù)的處理,而ISR能夠以最大可能的速度進(jìn)行數(shù)據(jù)的傳輸。當(dāng)MCU處理前臺任務(wù)時(shí),USB的傳輸可在后臺進(jìn)行。這就確保了最佳傳輸速率和更好的軟件結(jié)構(gòu),同時(shí)簡化了編程和調(diào)試。為了不影響程序的執(zhí)行效率,同時(shí)也為了保證程序的模塊化及良好的可移植性,在設(shè)計(jì)中采用分層結(jié)構(gòu)進(jìn)行固件的編寫,其固件編程結(jié)構(gòu)如圖4-2所示。圖4-2固件編程結(jié)構(gòu)最下層是硬件接口層,完成硬件上CY7C68013與DSP(TMS320C6203B)的對接。主要是DSP向CY7C68013中寫入數(shù)據(jù)或者命令,以及從中讀取數(shù)據(jù)。中間層主要有兩個(gè)模塊,用來完成CY7C68013的命令接口和中斷處理子程序。命令接口是指按照CY7C68013的命令格式,完成DSP對它的控制。它的基本命令格式是:DSP先向其中的命令地址寫入某一條命令,接著從它的數(shù)據(jù)地址寫入或者讀出一系列的數(shù)據(jù)。中斷處理子程序是判斷中斷的產(chǎn)生源,然后跳轉(zhuǎn)到相應(yīng)的處理子程序。這些子程序不做過多的處理,而僅僅是將命令數(shù)據(jù)讀出然后置標(biāo)志位,或者是將某些數(shù)據(jù)送出。最上層是主循環(huán)程序,以及對于USB2.0標(biāo)準(zhǔn)協(xié)議請求和用戶自定義請求的處理程序。主循環(huán)的主要工作是檢查標(biāo)志位。如果標(biāo)志位被置位,則調(diào)用處理子程序,判斷是標(biāo)準(zhǔn)請求還是用戶自定義請求,然后調(diào)用相應(yīng)的處理程序加以處理,完成請求。這樣分層的好處是:主循環(huán)程序在檢查標(biāo)志位以外的時(shí)間可以進(jìn)行其它工作,提高固件的運(yùn)行效率。設(shè)備固件firmware主要完成兩個(gè)方面的工作:控制A/D的采樣和通過CY7C68013與主機(jī)通信。微處理器控制A/D采樣的工作比較簡單,主要包括讀采樣值,存儲(chǔ)數(shù)據(jù)至FIFO等。基于USB的數(shù)據(jù)采集系統(tǒng)可采用兩種傳輸方式:控制傳輸和批量傳輸。控制傳輸實(shí)現(xiàn)位于主機(jī)上的USB總線驅(qū)動(dòng)程序(USBD.SYS)以及編寫的設(shè)備驅(qū)動(dòng)程序?qū)υO(shè)備的各種控制,而批量傳輸將采集數(shù)據(jù)從設(shè)備傳送到主機(jī)。CY7C68013的工作原理可以簡單地描述為:當(dāng)CY7C68013檢測到主機(jī)啟動(dòng)的某一傳輸請求時(shí),就通過中斷方式將此請求通知微處理器。微處理器通過訪問CY7C68013的狀態(tài)寄存器和數(shù)據(jù)寄存器獲得與此次傳輸有關(guān)的各種參數(shù),并根據(jù)具體的傳輸參數(shù),對其控制寄存器和數(shù)據(jù)寄存器進(jìn)行相應(yīng)的操作,以滿足主機(jī)的傳輸要求。固件程序流程圖如圖4-5所示。圖4-3主程序圖4-4控制A/D轉(zhuǎn)換的中斷服務(wù)程序圖4-5固件程序Cypress公司為CY7C68013提供了一個(gè)開發(fā)框架,可以在KEILC51環(huán)境下開發(fā)。由于開發(fā)框架的引入,從而大大縮短了用戶的研發(fā)周期。該框架由以下幾部分組成:(1)FW.C中包含了程序框架的MAIN函數(shù),管理整個(gè)51內(nèi)核的運(yùn)行,因?yàn)镃ypress對這個(gè)部分的功能進(jìn)行了精心劃分,一般是不用改動(dòng)的。(2)用戶必須將PERIPH.C實(shí)例化,它負(fù)責(zé)系統(tǒng)周邊器件的互聯(lián)。固件的設(shè)計(jì)主要針對這個(gè)文件,用戶必須根據(jù)自己系統(tǒng)的需要,實(shí)例化這個(gè)文件,以實(shí)現(xiàn)自己的功能。在這個(gè)文件中有幾個(gè)函數(shù)是比較關(guān)鍵的,在這里做一下特別說明:·TD_Init函數(shù),負(fù)責(zé)對USB端點(diǎn)進(jìn)行初始化設(shè)置。本設(shè)計(jì)中將端點(diǎn)6設(shè)置為1024個(gè)字節(jié),緩存深度為4級,模式設(shè)為自動(dòng)輸入方式;·TD_Poll函數(shù),負(fù)責(zé)系統(tǒng)中循環(huán)任務(wù)的處理。它主要是對各個(gè)端點(diǎn)的狀態(tài)進(jìn)行查詢,處理各種OUT或IN端點(diǎn)的交互。值得說明的一點(diǎn)是,這種處理只是輔助性質(zhì)的,大部分工作由硬件自動(dòng)完成?!R_VendorCmnd函數(shù),主要負(fù)責(zé)用戶自定義命令的譯碼工作,用戶請求通過端點(diǎn)0傳輸給內(nèi)核。由于CY7C68013上SIE硬件的支持,用戶只需查詢固定地址單元即可獲得當(dāng)前的命令代碼。·GPIFINIT.C,其中只有一個(gè)Gpiflnit函數(shù);它是GPIF模塊的初始化函數(shù),一般在TD_Init函數(shù)中調(diào)用。這個(gè)函數(shù)是由Cypress公司提供的一個(gè)GPIFDesigner開發(fā)工具根據(jù)用戶設(shè)計(jì)的波形生成的,用戶不需要自己設(shè)計(jì)波形查詢表,減輕了設(shè)計(jì)者的工作強(qiáng)度。·DSCR.A51是描述表文件,負(fù)責(zé)USB設(shè)備的描述工作,CY7C68013在上電后自動(dòng)利用其中的VID和PID取代默認(rèn)的VID和PID?!蓚€(gè)包含文件EZUSB.LIB和USBJMPTB.OBJ,前者是EZUSB函數(shù)庫的二進(jìn)制文件,后者是USB的中斷向量表。利用EZ-USBFX2提供的一些框架函數(shù)來簡化用戶代碼,使用相應(yīng)端口(端口2輸入,端口6輸出),加快了USB接口的開發(fā)過程,基本的固件程序框架函數(shù)如下:voidTD_Init(void)//該函數(shù)用來完成EZ-USBFX2的初始化//{CPUCS=0x10;//工作頻率48MHz//IFCONFIG=0xC3;//決定FX2的工作模式(slaveFIFO)及相關(guān)設(shè)置//IN07VAL=bmEP2;OUT07VAL=bmEP6;//使能端點(diǎn)2輸入和端點(diǎn)6輸出//EP2FIFOCFG=0x6D;SYNCODELAY;EP6FIFOCFG=0x75;SYNCDELAY;//對端點(diǎn)2和端點(diǎn)6的配置,WORDWIDE=1配置的是使用16位數(shù)據(jù)線//EP2CFG=0xEA;//端點(diǎn)2:輸入、批量傳輸、最大包字節(jié)為1024,雙緩沖//SYNCDELAY;EP6CFG=0xAA;//端點(diǎn)6:輸出、批量傳輸、最大包字節(jié)為1024、雙緩沖//SYNCDELAY;}voidTD_Poll(void)//此函數(shù)在設(shè)備運(yùn)行時(shí)反復(fù)被調(diào)用,它包括完成用戶任務(wù)的函數(shù)//{}BOOLTD_Suspend(void)//該函數(shù)在設(shè)備進(jìn)行掛起狀態(tài)前調(diào)用//{return(TRUE);}BOOLTD_Resume(void)//設(shè)備重啟后調(diào)用//{return(TRUE);}在整個(gè)固件程序中,EZ-USBFX2設(shè)備上電或復(fù)位后,首先對所有的內(nèi)部狀態(tài)變量初始化,隨后調(diào)用TD_Init()函數(shù),并開中斷,此時(shí)固件程序不斷檢測控制端口0是否收到SETUP包。一旦收到,固件程序就開始調(diào)用用戶函數(shù)TD_Poll(),其中用戶需要完成的功能代碼就在TD_Poll()函數(shù)里。調(diào)用完成后,重復(fù)檢測端口0是否收到SETUP包,若有,繼續(xù)執(zhí)行設(shè)備請求,調(diào)用TD_Poll()函數(shù);否則,檢測USB核是否有USB掛起事件,若有,調(diào)用TD_Suspend()函數(shù),其返回為真時(shí),檢測USB核是否有重新開始事件,沒有時(shí),設(shè)備進(jìn)入掛起狀態(tài),反之,調(diào)用TD_Resume(),進(jìn)行下一次循環(huán);當(dāng)TD_Suspend()函數(shù)返回為假時(shí),直接轉(zhuǎn)入下次循環(huán)。(二)驅(qū)動(dòng)程序設(shè)計(jì)主機(jī)與外設(shè)通過USB接口的通信是通過驅(qū)動(dòng)程序來實(shí)現(xiàn)的。在Windows環(huán)境中,定義了Windows設(shè)備驅(qū)動(dòng)程序模型,其中設(shè)立了兩種模式,即用戶模式和內(nèi)核模式。應(yīng)用程序只能工作在用戶模式下,而驅(qū)動(dòng)程序大多運(yùn)行在內(nèi)核模式下。驅(qū)動(dòng)程序采用了分層結(jié)構(gòu),設(shè)備驅(qū)動(dòng)知道如何與系統(tǒng)的USB驅(qū)動(dòng)和訪問設(shè)備的應(yīng)用程序通信。設(shè)備驅(qū)動(dòng)通過在應(yīng)用層和硬件專用代碼之間的轉(zhuǎn)換來完成它的任務(wù)。應(yīng)用層代碼一般使用一套操作系統(tǒng)支持的函數(shù)。硬件代碼則處理那些訪問外設(shè)電路的必要協(xié)議,包括監(jiān)視狀態(tài)信號和在合適的時(shí)間切換控制信號。1.Windows操作系統(tǒng)對USB的支持Windows的USB設(shè)備驅(qū)動(dòng)須遵照微軟公司在Windows98和更新的版本中為用戶定義的Win32的驅(qū)動(dòng)模式。這些驅(qū)動(dòng)以WDM(Windows設(shè)備驅(qū)動(dòng)程序模型)驅(qū)動(dòng)為主,擴(kuò)展名為.sys。與其他的底層驅(qū)動(dòng)程序一樣,WDM驅(qū)動(dòng)程序不能驅(qū)動(dòng)應(yīng)用程序,因?yàn)樗?fù)責(zé)在一個(gè)特權(quán)層實(shí)現(xiàn)和操作系統(tǒng)的通信。WDM驅(qū)動(dòng)可以允許或拒絕一個(gè)應(yīng)用程序?qū)σ粋€(gè)設(shè)備提出的訪問。例如,WDM驅(qū)動(dòng)程序可以允許任一應(yīng)用程序來使用一個(gè)游戲桿,或者允許一個(gè)應(yīng)用程序保留游戲桿獨(dú)自使用。Windows為其他底層設(shè)備驅(qū)動(dòng)程序和WDM驅(qū)動(dòng)程序所保留的能力還包括DMA傳輸和對硬件中斷的響應(yīng)。WDM定義了一個(gè)基本模型,處理所有類型的數(shù)據(jù)。例如,USB類驅(qū)動(dòng)程序?yàn)樗蠻SB設(shè)備提供了一個(gè)抽象的模型,提供了所有客戶驅(qū)動(dòng)程序使用的接口。這樣就使得同一類型的設(shè)備具有相同類型的驅(qū)動(dòng)程序模型,從而大大降低了開發(fā)的工作量。在Windows早期的版本中,使用不同的設(shè)備驅(qū)動(dòng)模型。例如,VxDs(虛擬設(shè)備驅(qū)動(dòng))。而現(xiàn)在的Win32設(shè)備驅(qū)動(dòng)程序模型是設(shè)計(jì)用來為運(yùn)行在Windows98/2000和其他更高的版本下的任一設(shè)備,提供一個(gè)通用的驅(qū)動(dòng)程序模型。Win32驅(qū)動(dòng)程序有兩種工作模式:用戶模式和內(nèi)核模式。應(yīng)用程序只能工作在用戶模式下,而驅(qū)動(dòng)程序大多運(yùn)行在內(nèi)核模式下。在用戶模式下,操作系統(tǒng)限制訪問內(nèi)存和其他系統(tǒng)資源,不允許訪問設(shè)定為被保護(hù)的內(nèi)存區(qū)域。因此PC機(jī)可同時(shí)運(yùn)行多個(gè)程序,而能互不干擾。在該模式下,運(yùn)行的代碼如果不通過操作系統(tǒng)的某種機(jī)制,就不能進(jìn)入內(nèi)核模式。從理論上講,即使一個(gè)應(yīng)用程序崩潰了,其他應(yīng)用程序也不會(huì)受到影響(當(dāng)然,事實(shí)上不會(huì)那樣工作)。在奔騰和其他x86處理器中,用戶模式對應(yīng)于3級環(huán)。在內(nèi)核模式下,代碼自由訪問系統(tǒng)資源,包括執(zhí)行內(nèi)存管理指令和控制訪問I/O端口。在奔騰和其他x86處理器中,內(nèi)核模對應(yīng)于0級環(huán)。圖4-6表明了用戶和內(nèi)核模式在USB通信中的主要組成。圖4-6Windows98的USB分層驅(qū)動(dòng)模型2.驅(qū)動(dòng)程序的分層結(jié)構(gòu)USB通信使用分層驅(qū)動(dòng)模型,每層處理一部分通信任務(wù)。把通信分成層是有效的,因?yàn)檫@樣可以使不同的設(shè)備在一些任務(wù)上使用相同的驅(qū)動(dòng)。當(dāng)所有設(shè)備都連到USB上,有一套可以被所有設(shè)備訪問、包括在操作系統(tǒng)中的、用來處理USB專用通信的驅(qū)動(dòng)是明智的。當(dāng)然也可以選擇,讓每個(gè)設(shè)備驅(qū)動(dòng)直接與USB硬件通信,這樣就會(huì)出現(xiàn)很多重復(fù)勞動(dòng)。如圖4-7所示,Windows對構(gòu)成一個(gè)USB主機(jī)的不同軟件部分進(jìn)行了清楚的劃分。圖4-7USB驅(qū)動(dòng)程序體系結(jié)構(gòu)應(yīng)用程序通過訪問一系列API函數(shù),與設(shè)備驅(qū)動(dòng)程序交互。設(shè)備驅(qū)動(dòng)程序把應(yīng)用程序的請求轉(zhuǎn)換成IRP(I/O請求包)的標(biāo)準(zhǔn)形式。設(shè)備驅(qū)動(dòng)程序通過Windows所定義的一個(gè)軟件接口來同根集線器驅(qū)動(dòng)程序進(jìn)行通信。而USB根基線器驅(qū)動(dòng)程序則要通過USB驅(qū)動(dòng)接口USBDI來實(shí)現(xiàn)同通用串行總線驅(qū)動(dòng)程序(USBD)的通信。然后,USBD會(huì)選擇兩種主控制器驅(qū)動(dòng)程序之一來同其下方的主控制器進(jìn)行通信。最后,主控制器驅(qū)動(dòng)程序會(huì)直接實(shí)現(xiàn)對USB物理總線的訪問(通過PCI枚舉器軟件)。USB驅(qū)動(dòng)程序軟件堆棧內(nèi)的層間通信使用了一個(gè)稱之為IRP的機(jī)制。首先,客戶以IRP的標(biāo)準(zhǔn)形式向USBD請求數(shù)據(jù)傳輸。IRP在不同層的驅(qū)動(dòng)程序之間傳遞,從而在不同的分層結(jié)構(gòu)之間實(shí)現(xiàn)了通信。處于圖中的各層驅(qū)動(dòng)程序,分別承擔(dān)一定的通信任務(wù),并一起保證了USB外設(shè)到主機(jī)的通信。設(shè)備驅(qū)動(dòng)程序USB設(shè)備驅(qū)動(dòng)程序,它位于根集線器驅(qū)動(dòng)程序之上。Windows操作系統(tǒng)給出了WindowsUSB接口,設(shè)備驅(qū)動(dòng)程序通過該接口訪問其下層的USB軟件。當(dāng)一個(gè)應(yīng)用程序啟動(dòng)一個(gè)API調(diào)用后,Windows把調(diào)用傳給合適的設(shè)備驅(qū)動(dòng),驅(qū)動(dòng)把要求轉(zhuǎn)換為USB總線類驅(qū)動(dòng)能理解的格式。IRP包含被稱為USB請求塊(URB)的結(jié)構(gòu),這個(gè)結(jié)構(gòu)為配置設(shè)備和傳輸數(shù)據(jù)任務(wù)指定協(xié)議。URB記錄在Windows的DDK文檔中。Cypress公司為了方便用戶開發(fā)USB接口,在CY7C68013的開發(fā)包中提供了一個(gè)通用驅(qū)動(dòng)程序,該程序可不加修改,經(jīng)DDK編譯后直接使用。根集線器驅(qū)動(dòng)器如圖4-7所示,主控制器驅(qū)動(dòng)程序處于USBD的下方,而根集線器驅(qū)動(dòng)程序卻位于USBD之上。根集線器驅(qū)動(dòng)程序處理根集線器端口和這個(gè)端口的任何下行設(shè)備的初始化。Windows包含了集線器驅(qū)動(dòng)usbhub.sys,因此該驅(qū)動(dòng)不需要由設(shè)備開發(fā)者編程。每一個(gè)支持USB系統(tǒng)的主機(jī)中,都會(huì)有一個(gè)根集線器提供兩個(gè)USB端口,即位于主機(jī)箱上的兩個(gè)USB端口。一個(gè)USB系統(tǒng)中的所有USB設(shè)備,包括USB功能設(shè)備和USB集線器都必須以一定的方式直接進(jìn)入,或通過USB集線器以菊花鏈?zhǔn)降男切徒尤胍粋€(gè)USB根集線器。在Windows環(huán)境中,所有的設(shè)備驅(qū)動(dòng)程序都可以通過指向根集線器驅(qū)動(dòng)程序的接口,來和所有接入的USB設(shè)備進(jìn)行通信。另外還有一種方法就是通過USBDI而直接同USBD進(jìn)行交互。USBD通用串行總線驅(qū)動(dòng)程序(USBD)是USB系統(tǒng)中負(fù)責(zé)管理通用串行總線的工作,位于主機(jī)上的一個(gè)軟件。它在集線器驅(qū)動(dòng)的主機(jī)控制器驅(qū)動(dòng)之間翻譯通信請求、處理總線列舉、電源管理,以及USB事務(wù)的其他方面。這些通信不要求設(shè)備開發(fā)者編程。Windows系統(tǒng)包含了總線類驅(qū)動(dòng)usbd.sys。在Windows系統(tǒng)中。USBD屬于WDM驅(qū)動(dòng)。主機(jī)控制器驅(qū)動(dòng)主機(jī)控制器驅(qū)動(dòng)與主機(jī)控制器硬件通信,而后者連接到總線上。Microsoft提供了對兩種接口的支持,即在圖中所指出的通用主控制器驅(qū)動(dòng)程序(UniversalHostControllerDriver,或簡稱為UHCD)和開放主控制器接口(OpenHostControllerInterface,或簡稱為OpenUCI)。這是不同的USB供應(yīng)商所提出的用于管理一個(gè)系統(tǒng)中的USB主控制器的兩個(gè)軟件接口。主機(jī)控制器驅(qū)動(dòng)不需要設(shè)備開發(fā)者編程。符合開放主機(jī)控制器接口標(biāo)準(zhǔn)的控制器使用openhci.sys驅(qū)動(dòng),符合通用主機(jī)控制器接口標(biāo)準(zhǔn)的控制器使用uhci.sys驅(qū)動(dòng)。兩種驅(qū)動(dòng)都為USB硬件與USB總線類驅(qū)動(dòng)通信提供一條途徑。兩種驅(qū)動(dòng)采用不同的方式來完成主機(jī)控制器的功能。UHCD把更多的通信負(fù)荷放在軟件上,使用更簡單、更便宜的硬件。OHCI把更多的通信負(fù)荷放在硬件上,使用更簡單的軟件控制。盡管這兩種驅(qū)動(dòng)具有不同的實(shí)現(xiàn),但任何區(qū)別對驅(qū)動(dòng)開發(fā)者和應(yīng)用程序的程序員都是透明的。(三)應(yīng)用程序的設(shè)計(jì)PC機(jī)上的應(yīng)用程序是USB數(shù)據(jù)采集系統(tǒng)的重要組成部分,因?yàn)橛脩絷P(guān)心的是操作是否高效,以及如何處理和分析采集到的大量數(shù)據(jù)。這就要求應(yīng)用程序有友好的界面和強(qiáng)大的數(shù)據(jù)處理能力。主機(jī)端應(yīng)用程序的設(shè)計(jì)主要是實(shí)現(xiàn)從高速數(shù)據(jù)采集處理板讀取處理后的數(shù)據(jù)、存儲(chǔ)、顯示處理結(jié)構(gòu)以及向數(shù)據(jù)采集處理板發(fā)送控制命令,其作用在于與操作系統(tǒng)相互作用,加之該軟件需要一個(gè)圖形用戶界面來控制所用的函數(shù),在Windows系統(tǒng)(98/2000)下,采用VC++來編制應(yīng)用程序。利用CreateFile得到USB句柄,用DeviceIoControl來向設(shè)備驅(qū)動(dòng)程序發(fā)送請求,完成在EZ-USBFX2中的數(shù)據(jù)批傳輸?shù)淖x取與寫入。程序?qū)嵗缦拢篐ANDLEDeviceHandle;DeviceHandle=CreateFile(zusb0,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN__EXISTING,0,NULL);//得到設(shè)備ezusb0的句柄//DeviceIoControl(DeviceHandle,IOCTL_EZUSB_BULK_WRITE,LPVOIDlpInBuffer,//輸入數(shù)據(jù)存儲(chǔ)地址指針//Sizeof(BULK_TRANSFER_CONTROL),LPVOIDlpOutBuffer,//輸出數(shù)據(jù)存儲(chǔ)地址指針//DWORDnOutBufferSize,//輸出緩存大小//LPDWORDlpBytesReturned,//接收輸出數(shù)據(jù)字節(jié)計(jì)數(shù)器變量的指針//NULL);//寫數(shù)據(jù)到EZ-USBFX2設(shè)備//DeviceIoControl(DeviceHandle,IOCTL_EZUSB_BULK_READ,LPVOIDlpInBuffer,//輸入數(shù)據(jù)存儲(chǔ)地址地//Sizeof(BULK_TRANSFER_CONTROL),LPVOIDlpOutBuffer,//輸出數(shù)據(jù)存儲(chǔ)地址指針//DWORDnOutBufferSize,//輸出緩存大小//LPDWORDlpBytesReturned,//接收輸出數(shù)據(jù)字節(jié)計(jì)數(shù)器變量的指針//NULL);//從EZ-USBFX2設(shè)備中讀數(shù)據(jù)//ColseHandle(DeviceHandle);//關(guān)閉USB句柄//實(shí)際的應(yīng)用程序框圖如圖4-8所示。圖4-8應(yīng)用程序流程圖(四)常見故障分析1.硬件設(shè)計(jì)完成后,連接電纜,然后運(yùn)行固件程序,但主機(jī)并未發(fā)現(xiàn)新設(shè)備。這種現(xiàn)象一般是硬件電路的問題,需要檢查D+、D?信號線是否接反、輸入時(shí)鐘信號是否正確以及復(fù)位電路是否正確等。2.運(yùn)行固件程序后,主機(jī)顯示“發(fā)現(xiàn)新硬件”,但沒有出現(xiàn)加載驅(qū)動(dòng)的窗口。這種現(xiàn)象說明枚舉沒有成功。枚舉分兩個(gè)階段,第一個(gè)階段包括5個(gè)標(biāo)準(zhǔn)請求:獲得設(shè)備描述符(8006000100000040),設(shè)置地址(000500xx00000000),獲得全部設(shè)備描述符(8006000100000012),獲得配置描述符(8006000200000009),獲得包括接口和端點(diǎn)信息的配置描述符(80060002000000xx),括號內(nèi)為8字節(jié)Setup包內(nèi)容的16進(jìn)制表示,其中設(shè)置地址中的xx表示設(shè)備的地址,它是一個(gè)1~127內(nèi)的數(shù)值,由主機(jī)確定。最后一個(gè)xx是全部配置描述符的長度或者為FF。這5個(gè)標(biāo)準(zhǔn)請求正確完成后,主機(jī)上會(huì)彈出發(fā)現(xiàn)新硬件,加載驅(qū)動(dòng)的對話框。枚舉不成功最可能的原因是描述符錯(cuò)誤或者發(fā)送給主機(jī)的數(shù)據(jù)長度與主機(jī)要求的不符,也有可能因?yàn)橛布娐吩O(shè)計(jì)不好而造成干擾過大,使得傳輸?shù)臄?shù)據(jù)出現(xiàn)錯(cuò)誤,因此要著重檢查描述符及請求處理程序。3.主機(jī)彈出加載驅(qū)動(dòng)窗口,但出現(xiàn)了“指定位置不包含硬件信息”錯(cuò)誤。這種現(xiàn)象最可能的原因:固件程序里設(shè)備描述符中的PID和VID與INF文件中的不一致,將二者統(tǒng)一后即可解決。4.主機(jī)彈出加載驅(qū)動(dòng)窗口,但加載驅(qū)動(dòng)后設(shè)備不可用。出現(xiàn)這種現(xiàn)象可能是枚舉的第二階段沒有成功,或者加載的驅(qū)動(dòng)程序與設(shè)備不匹配。枚舉第二階段一般只要設(shè)置接口(000900xx00000000,其中xx是接口號,如果設(shè)備只有一個(gè)接口,那么該值為01)成功,設(shè)備即可正常工作。對于這種情況需要調(diào)試驅(qū)動(dòng),可用調(diào)試驅(qū)動(dòng)的軟件如Softice來跟蹤驅(qū)動(dòng)的加載過程,其中著重檢查建立管道列表的程序部分,通常問題就能解決。5.設(shè)備驅(qū)動(dòng)加載成功,無法讀寫數(shù)據(jù)或者讀寫數(shù)據(jù)出現(xiàn)錯(cuò)誤。導(dǎo)致這種現(xiàn)象的原因有可能是固件程序、驅(qū)動(dòng)程序、應(yīng)用程序的問題,因此需進(jìn)行聯(lián)合調(diào)試。通常的方法是在固件程序的相應(yīng)代碼段設(shè)置斷點(diǎn),運(yùn)行應(yīng)用程序,然后用Softice等工具跟蹤到驅(qū)動(dòng)程序,這樣就可以找到問題出現(xiàn)在數(shù)據(jù)傳輸通道的哪一部分,然后進(jìn)行相應(yīng)的修改。五系統(tǒng)工作過程上電后,ADS5422一直工作,采樣產(chǎn)生的數(shù)據(jù)是否存儲(chǔ)到IDT72V2113中,由TMS320C6203B的DX0引腳狀態(tài)來決定。TMS320C6203B進(jìn)行初始化,外部擴(kuò)展總線的XCE3設(shè)置為同步FIFO讀操作模式。DMA通道0配置為每次傳輸1幀,每幀1024個(gè)半字,同步事件設(shè)置為外部中斷4,觸發(fā)極性為高電平,初始化定時(shí)器0,定時(shí)間隔為22ms。當(dāng)外部同步信號到來時(shí),啟動(dòng)定時(shí)器0,手動(dòng)啟動(dòng)DMA通道0,同時(shí)設(shè)置DX0為低電平。ADS5422采樣產(chǎn)生的數(shù)據(jù)開始寫入IDT72V2113,當(dāng)定時(shí)器0中斷到來時(shí),設(shè)置DX0為高電平,關(guān)閉IDT72V2113的寫使能,采樣數(shù)據(jù)不再存儲(chǔ)到IDT72V2113內(nèi)。隨著數(shù)據(jù)不斷寫入IDT72V2113,當(dāng)其內(nèi)部的數(shù)據(jù)量大于1023個(gè)半字時(shí),IDT72V2113的將空標(biāo)志信號(PAE)由低電平變?yōu)楦唠娖?,使得TMS320C6203B的外部中斷信號有效,從而觸發(fā)DMA傳輸,TMS320C6203B的DMA通道0通過外部擴(kuò)展總線(XB)讀取1024個(gè)半字的數(shù)據(jù),存儲(chǔ)于內(nèi)部RAM中,傳輸結(jié)束后向TMS320C6203B發(fā)送中斷,通知TMS320C6203B處理數(shù)據(jù)。待其處理完數(shù)據(jù)后,通過USB2.0接口發(fā)送處理結(jié)果,然后重新啟動(dòng)DMA通道0,進(jìn)行下一次DMA傳輸。如此循環(huán),直到處理完所有數(shù)據(jù)。當(dāng)下一個(gè)外部同步信號到來時(shí),進(jìn)行下一輪數(shù)據(jù)采集處理過程。六結(jié)束語通過對USB2.0接口和DSP組成的高速數(shù)據(jù)采集系統(tǒng)學(xué)習(xí)和研究,使我對其有了更深的了解。同時(shí)也學(xué)習(xí)了分析電路、設(shè)計(jì)電路的方法和步驟,培養(yǎng)了一定的制圖能力。在設(shè)計(jì)中雖然還存在一定的問題,但設(shè)計(jì)基本上達(dá)到了要求。在設(shè)計(jì)過程中,通過大量的查閱資料,認(rèn)真研究教材,并向指導(dǎo)教師請教很多問題,使自己對課題有了更為深刻的理解?;赨SB2.0接口和DSP組成的高速數(shù)據(jù)采集系統(tǒng)可以得到精確的數(shù)據(jù),克服了使用高精度傳感器價(jià)格昂貴的缺點(diǎn),節(jié)省了開銷。對這種技術(shù)無論是在理論上還是在知識方面都還不是很成熟,所以有必要對這樣的數(shù)據(jù)采集系統(tǒng)做更進(jìn)一步的研究。致謝詞參考文獻(xiàn)[1]陳啟美,丁傳鎖主編.計(jì)算機(jī)USB接口技術(shù)[M].南京:南京大學(xué)出版社,2003.[2]趙訓(xùn)威主編.基于TMS320C6200系列DSP芯片的應(yīng)用于開發(fā)[M].北京:人民郵電出版社,2002.[3]李肇慶,劉建存主編.USB接口技術(shù)[M].北京:國防工業(yè)出版社,2004.[4]王成儒,李英偉編著.USB2.0原理與工程開發(fā)[M].北京:國防工業(yè)出版社,2003.[5]肖踞雄主編.USB技術(shù)及應(yīng)用設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.[6]肖世文編著.USB2.0硬件設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.[7]董方武編著.微機(jī)接口技術(shù)[M].北京:中國水利水電出版社,2001.[8][美]JohnHyde著,孫耀國譯.USB設(shè)計(jì)應(yīng)用實(shí)例[M].北京:中國鐵道出版社,2003.[9][美]G.B.克雷伊頓著,楊雙林譯.數(shù)據(jù)轉(zhuǎn)換技術(shù)[M].北京:電子工業(yè)出版社,1997.[10][美]StevenL.Mandell著,尤曉東,周靖譯.計(jì)算機(jī)信息處理[M].北京:機(jī)械工業(yè)出版社,1999.附錄一英文資料(英文)USBHost:HardwareandSoftwareTheUSBinterconnectsupportsdatatrafficbetweenahostandaUSBdevice.ThischapterdescribesthehostinterfacesnecessarytofacilitateUSBcommunicationbetweenasoftwareclient,residentonthehost,andafunctionimplementedonadevice.Theimplementationdescribedinthischapterisnotrequired.ThisimplementationisprovidedasanexampletoillustratethehostsystembehaviorexpectedbyaUSBdevice.AhostsystemmayprovideadifferenthostsoftwareimplementationaslongasaUSBdeviceexperiencesthesamehostbehavior.OverviewoftheUSBHost.Verticalarrowsindicatetheactualcommunicationonthehost.Thecorrespondinginterfacesonthedeviceareimplementation-specific.AllcommunicationsbetweenthehostanddeviceultimatelyoccuronthephysicalUSBwire.However,therearelogicalhost-deviceinterfacesbetweeneachhorizontallayer.Thesecommunications,betweenclientsoftwareresidentonthehostandthefunctionprovidedbythedevice,aretypifiedbyacontractbasedontheneedsoftheapplicationcurrentlyusingthedeviceandthecapabilitiesprovidedbythedevice.Thisclient-functioninteractioncreatestherequirementsforalloftheunderlyinglayersandtheirinterfaces.ThereisonlyonehostforeachUSB.Themajorlayersofahostconsistofthefollowing:USBbusinterface,USBSystem,Client.TheUSBbusinterfacehandlesinteractionsfortheelectricalandprotocollayers.Fromtheinterconnectpointofview,asimilarUSBbusinterfaceisprovidedbyboththeUSBdeviceandthehost,asexemplifiedbytheSerialInterfaceEngine(SIE).Onthehost,however,theUSBbusinterfacehasadditionalresponsibilitiesduetotheuniqueroleofthehostontheUSBandisimplementedastheHostController.TheHostControllerhasanintegratedroothubprovidingattachmentpointstotheUSBwire.TheUSBSystemusestheHostControllertomanagedatatransfersbetweenthehostandUSBdevices.TheinterfacebetweentheUSBSystemandtheHostControllerisdependentonthehardwaredefinitionoftheHostController.TheUSBSystem,inconcertwiththeHostController,performsthetranslationbetweentheclient’sviewofdatatransfersandtheUSBtransactionsappearingontheinterconnect.ThisincludestheadditionofanyUSBfeaturesupportsuchasprotocolwrappers.TheUSBSystemisalsoresponsibleformanagingUSBresources,suchasbandwidthandbuspower,sothatclientaccesstotheUSBispossible.TheUSBSystemhasthreebasiccomponents:HostControllerDriver,USBDriver,HostSoftware.TheHostControllerDriverexiststomoreeasilymapthevariousHostControllerimplementationsintotheUSBSystem,suchthataclientcaninteractwithitsdevicewithoutknowingtowhichHostControllerthedeviceisconnected.TheUSBDriverprovidesthebasichostinterface(USBDI)forclientstoUSBdevices.TheinterfacebetweentheHCDandtheUSBDisknownastheHostControllerDriverInterface(HCDI).ThisinterfaceisneveravailabledirectlytoclientsandthusisnotdefinedbytheUSBSpecification.AparticularHCDIis,however,definedbyeachoperatingsystemthatsupportsvariousHostControllerimplementations.TheUSBDprovidesdatatransfermechanismsintheformofI/ORequestPackets,whichconsistofarequesttotransportdataacrossaspecificpipe.Inadditiontoprovidingdatatransfermechanisms,theUSBDisresponsibleforpresentingtoitsclientsanabstractionofaUSBdevicethatcanbemanipulatedforconfigurationandstatemanagement.Aspartofthisabstraction,theUSBDownsthedefaultpipethroughwhichallUSBdevicesareaccessedforthepurposesofstandardUSBcontrol.ThisdefaultpiperepresentsalogicalcommunicationbetweentheUSBDandtheabstractionofaUSBdevice.Insomeoperatingsystems,additionalnon-USBSystemSoftwareisavailablethatprovidesconfigurationandloadingmechanismstodevicedrivers.Insuchoperatingsystems,thedevicedrivershallusetheprovidedinterfacesinsteadofdirectlyaccessingtheUSBDImechanisms.TheclientlayerdescribesallthesoftwareentitiesthatareresponsiblefordirectlyinteractingwithUSBdevices.Wheneachdeviceisattachedtothesystem,theseclientsmightinteractdirectlywiththeperipheralhardware.ThesharedcharacteristicsoftheUSBplaceUSBSystemSoftwarebetweentheclientanditsdevice;thatis,aclientcannotdirectlyaccessthedevice’shardware.Overall,thehostlayersprovidethefollowingcapabilities:DetectingtheattachmentandremovalofUSBdevices,ManagingUSBstandardcontrolflowbetweenthehostandUSBdevices,ManagingdataflowbetweenthehostandUSBdevices,Collectingstatusandactivitystatistics,ControllingtheelectricalinterfacebetweentheHostControllerandUSBdevices,includingtheprovisionofalimitedamountofpower.HostControllerRequirements.Inallimplementations,HostControllersperformthesamebasicdutieswithregardtotheUSBanditsattacheddevices.Thesebasicdutiesaredescribedbelow.TheHostControllerhasrequirementsfromboththehostandtheUSB.Thefollowingisabriefoverviewofthefunctionalityprovided.Eachcapabilityisdiscussedindetailinsubsequentsections.StateHandling:Asacomponentofthehost,theHostControllerreportsandmanagesitsstates,Serializer/Deserializer:Fordatatransmittedfromthehost,theHostControllerconvertsprotocolanddatainformationfromitsnativeformattoabitstreamtransmittedontheUSB.Fordatabeingreceivedintothehost,thereverseoperationisperformed,DataProcessing:TheHostControllerprocessesrequestsfordatatransmissiontoandfromthehost,ProtocolEngine:TheHostControllersupportstheprotocolspecifiedbytheUSB,TransmissionErrorHandling:AllHostControllersexhibitthesamebehaviorwhendetectingandreactingtothedefinederrorcategories,RemoteWakeup:AllHostControllersmusthavetheabilitytoplacethebusintotheSuspendedstateandtorespondtobuswakeupevents,RootHub:TheroothubprovidesstandardhubfunctiontolinktheHostControllertooneormoreUSBports,HostSystemInterface:Providesahigh-speeddatapathbetweentheHostControllerandhostsystem.OverviewofSoftwareMechanisms.TheHCDandtheUSBDpresentsoftwareinterfacesbasedondifferentlevelsofabstraction.Theyare,however,expectedtooperatetogetherinaspecifiedmannertosatisfytheoverallrequirementsoftheUSBSystem.TherequirementsfortheUSBSystemareexpressedprimarilyasrequirementsfortheUSBDI.ThedivisionofdutiesbetweentheUSBDandtheHCDisnotdefined.However,theonerequirementoftheHCDIthatmustbemetisthatitsupports,inthespecifiedoperatingsystemcontext,multipleHostControllerimplementations.TheHCDprovidesanabstractionoftheHostControllerandanabstractionoftheHostController’sviewofdatatransferacrosstheUSB.TheUSBDprovidesanabstractionoftheUSBdeviceandofthedatatransfersbetweentheclientoftheUSBDandthefunctionontheUSBdevice.Overall,theUSBSystemactsasafacilitatorfortransmittingdatabetweentheclientandthefunctionandasacontrolpointfortheUSB-specificinterfacesoftheUSBdevice.Aspartoffacilitatingdatatransfer,theUSBSystemprovidesbuffermanagementcapabilitiesandallowsthesynchronizationofthedatatransmittaltotheneedsoftheclientandthefunction.DeviceConfiguration.Differentoperatingsystemenvironmentsperformdeviceconfigurationusingdifferentsoftwarecomponentsanddifferentsequencesofevents.TheUSBSystemdoesnotassumeaspecificoperatingsystemmethod.However,therearesomebasicrequirementsthatmustbefulfilledbyanyUSBSystemimplementation.Insomeoperatingsystems,existinghostsoftwareprovidestheserequirements.Inothers,theUSBSystemprovidesthecapabilities.TheUSBSystemassumesaspecializedclientoftheUSBD,calledahubdriver,thatactsasaclearinghousefortheadditionandremovalofdevicesfromaparticularhub.Oncethehubdriverreceivessuchnotifications,itwillemployadditionalhostsoftwareandotherUSBDclients,inanoperatingsystemspecificmanner,torecognizeandconfigurethedevice.CommonDataDefinitions.Inordertoallowtheclienttoreceiverequestresultsasdirectlyaspossiblefromitsdevice,itisdesirabletominimizetheamountofprocessingandcopyingrequiredbetweenthedeviceandtheclient.Tofacilitatethis,somecontrolaspectsoftheIRParestandardizedsuchthatdifferentlayersinthestackmaydirectlyusetheinformationprovidedbytheclient.TheparticularformatforthisdataisdependentontheactualizationoftheUSBDIintheoperatingsystem.Somedataelementsmayinfactnotbedirectlyvisibletotheclientatallbutaregeneratedasaresultoftheclientrequest.Thefollowingdataelementsdefinetherelevantinformationforarequest:Identificationofthepipeassociatedwiththerequest.Identifyingthispipealsodescribesinf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024可信計(jì)算保障人工智能安全
- (一模)萍鄉(xiāng)市2025年高三第一次模擬考試英語試卷(含答案解析)
- 橋體廣告施工方案
- 限高門架施工方案
- 全職用工合同范例
- 柔性鋼管知識培訓(xùn)課件
- 個(gè)人山頭出租合同范例
- 農(nóng)用田租地合同范例
- 書銷售居間合同范例
- 倉庫多功能利用的實(shí)踐計(jì)劃
- 思想道德與法治知到章節(jié)答案智慧樹2023年寧波大學(xué)
- 農(nóng)田土地翻耕合同
- 鐵路混凝土工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)(TB 10424-2018 )培訓(xùn)教材
- 2023年全國醫(yī)學(xué)博士英語統(tǒng)考真題及參考答案
- 浙江新聞獎(jiǎng)副刊類參評作品推薦表
- 人才培養(yǎng)方案執(zhí)行情況及總結(jié)
- 煤層氣開采地面工程設(shè)計(jì)方案
- xxx年國企集團(tuán)公司職工代表大會(huì)制度 企業(yè)職工代表大會(huì)制度
- GB/T 22085.2-2008電子束及激光焊接接頭缺欠質(zhì)量分級指南第2部分:鋁及鋁合金
- GB/T 10454-2000集裝袋
- 英語2022年廣州市普通高中畢業(yè)班綜合測試(一)英語試題
評論
0/150
提交評論