亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于EZ?USB FX2的數(shù)據(jù)采集系統(tǒng)USB接口設(shè)計

        2015-04-12 00:00:00王東李公平潘小東方登富
        現(xiàn)代電子技術(shù) 2015年4期

        摘 要: 以CYPRESS公司的EZ?USB FX2芯片為基礎(chǔ),對工業(yè)CT數(shù)據(jù)采集系統(tǒng)的USB接口設(shè)計所涉及的幾個方面進(jìn)行了詳細(xì)的介紹。該設(shè)計中為了能提高數(shù)據(jù)傳輸?shù)乃俣?,EZ?USB芯片采用Slave FIFO接口方式,在此方式下,USB內(nèi)核不參與數(shù)據(jù)的傳輸。CY7C68013A芯片內(nèi)部包含有4 KB的可配置端點緩沖區(qū),這是大容量數(shù)據(jù)傳輸端點,可配置成不需要8051固件參與就同外圍電路完成高速數(shù)據(jù)傳輸端。CYPRESS公司提供的EZ?USB固件程序開發(fā)包中包含有固件程序的基本框架。在此介紹CY7C68013A芯片的結(jié)構(gòu)和特點,分析EZ?USB FX2固件程序框架,并給出固件程序?qū)嵗a,描述固件代碼裝載方式,應(yīng)用程序調(diào)用驅(qū)動程序的接口函數(shù)。采用EZ?USB芯片開發(fā)USB接口,大大降低開發(fā)難度,提高開發(fā)效率。

        關(guān)鍵詞: USB 2.0; EZ?USB; FX2; 固件程序

        中圖分類號: TN919?34; TP334.7 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)04?0073?04

        0 引 言

        在錐束工業(yè)CT系統(tǒng)中,數(shù)據(jù)采集系統(tǒng)用來獲取探測器輸出信號,轉(zhuǎn)換為數(shù)字信號上傳給計算機(jī)做圖像重建,同時下傳計算機(jī)的控制命令,是工業(yè)CT的關(guān)鍵部件。通用串行總線(Universal Serial Bus,USB)以其易插拔,無需配置,真正的即插即用等特性獲得了廣泛的認(rèn)可,USB 2.0標(biāo)準(zhǔn)其高速傳輸模式的速率可達(dá)480 Mb/s,可以滿足數(shù)據(jù)采集系統(tǒng)的速率要求。本文設(shè)計采用CYPRESS公司的EZ?USB FX2系列芯片作為數(shù)據(jù)采集系統(tǒng)與計算機(jī)間的USB接口芯片,具體型號為CY7C68013A[1?2]。數(shù)據(jù)采集卡整體結(jié)構(gòu)如圖1所示,本文只介紹USB接口軟硬件設(shè)計部分。

        USB接口設(shè)計主要涉及USB固件程序編寫,裝載,設(shè)備驅(qū)動程序的安裝,應(yīng)用程序與驅(qū)動程序間的接口等方面。CYPRESS公司提供包含有固件程序框架,通用的設(shè)備驅(qū)動程序的應(yīng)用開發(fā)包,降低了USB接口的開發(fā)難度。下面就USB接口開發(fā)所涉及的幾個方面進(jìn)行詳細(xì)介紹。

        1 EZ?USB硬件介紹

        CY7C68013A接口芯片是CYPRESS公司EZ?USB FX2系列芯片中的一種類型,它集成了USB2.0協(xié)議的微處理器,支持12 Mb/s的全速傳輸與480 Mb/s的高速傳輸,完全適用于USB2.0并向下兼容USB1.1。芯片內(nèi)部集成增強(qiáng)型8051內(nèi)核,指令周期為4個時鐘周期,時鐘頻率可配置為12 MHz,24 MHz,48 MHz。集成智能SIE(串行引擎接口),由USB 2.0收發(fā)器與SIE完成USB協(xié)議的封包與解包功能[1]。CY7C68013A芯片內(nèi)部包含3個固定的,64 B的端點緩沖區(qū),分別是EP0,EP1IN,EP1OUT。EP0是默認(rèn)的控制傳輸端點,EP1IN和EP1OUT支持塊傳輸,中斷傳輸與同步傳輸,此三端點只能由8051內(nèi)核訪問。還有4 KB的可配置端點緩沖區(qū),分別是EP2,EP4,EP6,EP8,它們是大容量寬帶的數(shù)據(jù)傳輸端點,不需要8051固件參與就同外圍電路完成高速的數(shù)據(jù)傳輸[3]。這4個端點可以靈活的配置容量,滿足多種數(shù)據(jù)傳輸要求。

        2 EZ?USB FX2 CY7C68013A固件程序設(shè)計

        CY7C68013A固件程序是指在EZ?USB芯片內(nèi)部RAM中運行的程序代碼,固件程序是USB接口設(shè)計的核心部分。固件代碼的作用就是控制芯片執(zhí)行指定的設(shè)備功能,即處理上位機(jī)下傳的各種USB設(shè)備請求,控制芯片與外圍電路進(jìn)行數(shù)據(jù)傳輸。EZ?USB芯片內(nèi)部集成增強(qiáng)型8051內(nèi)核,USB芯片的固件程序?qū)嶋H上就是單片機(jī)程序文件,可以采用匯編語言或C語言編寫。CYPRESS公司提供的EZ?USB FX2固件程序開發(fā)包中提供了固件程序的基本框架,這為用戶開發(fā)基于EZ?USB FX2芯片的USB設(shè)備提供了很大的方便。

        2.1 固件框架

        固件程序框架主要包括設(shè)備初始化,處理標(biāo)準(zhǔn)USB設(shè)備請求和USB掛起時的電源管理等。程序框架使用Keil C51編寫,它是現(xiàn)成的直接可以編譯為HEX文件的8051程序代碼,使用者只需要改寫USB描述表,在一些固定函數(shù)下添加功能代碼,主要是EZ?USB芯片的初始化配置和實現(xiàn)USB外設(shè)功能的代碼。固件框架的流程圖如圖2所示[4]。

        復(fù)位后固件先初始化一些全局變量,然后調(diào)用初始化函數(shù)TD_Init(),該函數(shù)初始化USB設(shè)備到?jīng)]有配置的狀態(tài),并打開中斷。循環(huán)1 s進(jìn)行一次設(shè)備重枚舉,直到端點0收到一SETUP包,然后進(jìn)入while循環(huán)語句,開始TD_Poll任務(wù)處理函數(shù)。

        依次執(zhí)行下列過程:

        (1) TD_Poll() 用戶任務(wù)調(diào)度函數(shù);

        (2) 如果發(fā)現(xiàn)USB設(shè)備請求,則分析該請求并執(zhí)行;

        (3) 如果收到USB掛起信號,則調(diào)用TD_Suspend()掛起函數(shù),內(nèi)核掛起,直到出現(xiàn)USB遠(yuǎn)程喚醒信號,調(diào)用TD_Resume(),內(nèi)核喚醒,從新進(jìn)入while循環(huán)。固件框架包含的文件如表1所示。

        表1 固件框架文件列表

        2.2 固件代碼編寫

        USB固件程序主要的功能有2個:一是PC機(jī)的Windows系統(tǒng)能夠檢測與識別相應(yīng)設(shè)備;二是數(shù)據(jù)的上傳與下傳。Cypress公司為EZ?USB FX2系列芯片提供的固件程序框架極大的簡化了固件開發(fā)。一般的固件開發(fā)只需要修改用戶調(diào)度函數(shù)文件Periph.c與USB描述符列表文件Dscr.a51,這兩個文件在Keil C51編程器中都可打開。Periph.c文件中只需要修改TD_Init()與TD_Poll()函數(shù)。在本設(shè)計中為了能進(jìn)行高速的數(shù)據(jù)傳輸,EZ?USB芯片采用Slave FIFO接口方式。此方式下,USB內(nèi)核不參與數(shù)據(jù)的傳輸,所以TD_Poll()函數(shù)不用寫代碼,設(shè)置成空函數(shù)就可以了。這樣USB固件程序的開發(fā)主要任務(wù)就是改寫TD_Init()函數(shù)與USB描述符列表文件Dscr.a51。在本設(shè)計中配置端點6傳輸方向為IN,傳輸方式為塊傳輸,緩沖大小設(shè)置為1 024 B,深度為2級,作用是上傳采集的數(shù)據(jù)。配置端點2傳輸方向為OUT,傳輸方式為塊傳輸,緩沖大小設(shè)置為1 024 B,深度為2級,作用是下傳FPGA的命令配置參數(shù)。固件程序的編譯使用Keil μVision2集成編譯環(huán)境,集成編譯環(huán)境中包括有C51編譯器,A51匯編器等工具與調(diào)試器。代碼中還需包含頭文件FX2.h與Fx2regs.h,庫文件Ezusb.lib。對修改后的代碼進(jìn)行編譯與鏈接,最后生成HEX文件。HEX文件可直接下載到EZ?USB中運行。HEX文件也可根據(jù)需要通過CYPRESS公司提供的EZ?USB FX2固件開發(fā)包中的Hex2bit.exe應(yīng)用工具生成IIC文件,IIC文件用于燒寫到EEPROM中。

        初始化函數(shù)代碼及注釋如下:

        3 固件程序的裝載

        CY7C68013A芯片集成增強(qiáng)型8051內(nèi)核,內(nèi)部無ROM等永久性存儲器,每次上電后需要從新將固件程序載入到片內(nèi)RAM中。EZ?USB FX2固件程序有3種加載方式:

        (1) 如果沒有片外存儲器連接到EZ?USB FX2上,或者所讀取的首字節(jié)不是0xC0或0xC2,則芯片枚舉為缺省的USB設(shè)備,其中描述符,VID,PID由芯片內(nèi)部硬件邏輯提供。然后固件程序與描述符表由主機(jī)下載,EZ?USB FX2開始執(zhí)行下載的代碼,首先模擬物理電路的斷開與連接,此時EZ?USB FX2將再次進(jìn)行設(shè)備枚舉,這稱為重枚舉,重枚舉將根據(jù)下載的代碼對設(shè)備進(jìn)行從新定義。

        (2) 如果USB檢測到一個E2PROM,其首字節(jié)為0xC0時,芯片也枚舉為缺省的USB設(shè)備,但VID與PID值將從此EEPROM中讀取,USB描述符由芯片內(nèi)部提供。這種模式稱為“C0”加載。主機(jī)根據(jù)讀得的VID與PID值,由固件下載驅(qū)動程序?qū)⒅付ǖ墓碳绦蛳螺d到EZ?USB FX2,然后再重枚舉。

        (3) 如果USB檢測到一個E2PROM,其首字節(jié)為0xC2時,固件程序?qū)拇薊2PROM中自動下載到FX2芯片上,CPU通過復(fù)位后運行下載的程序代碼。這種模式稱為“C2”加載。

        其中第一種方式主要是開發(fā)階段使用,它需要主機(jī)上有CYPRESS公司提供的開發(fā)軟件USB CONTROL PANEL,每次手動將程序下載到USB上。第二種方法需要開發(fā)者另外再編寫一個固件下載驅(qū)動程序,而且也需要在電路中外加一小容量的E2PROM。第3種方法是將固件程序燒寫到E2PROM中,每次上電自動加載,這種方式簡單直接。本設(shè)計采用第3種方式。

        4 驅(qū)動程序及INF文件的編寫

        設(shè)備驅(qū)動程序是應(yīng)用程序和硬件之間的連接,應(yīng)用程序通過驅(qū)動程序與設(shè)備通信,數(shù)據(jù)交換,從而獲取數(shù)據(jù)和對設(shè)備進(jìn)行控制。CYPRESS公司為EZ?USB FX2提供一通用的驅(qū)動程序CYUSB.SYS,其功能完備,使用者不需要修改直接使用[5]。

        USB設(shè)備都具有一個VID和PID,此處的VID和PID與在固件程序轉(zhuǎn)載階段的值不同,這兩個值是用來安裝設(shè)備驅(qū)動程序的,VID和PID放到設(shè)備描述符表中,通過設(shè)備請求讀入到Windows系統(tǒng)中。同時,Windows操作系統(tǒng)通過INF文件將一VID和PID綁定到某一設(shè)備驅(qū)動程序。當(dāng)設(shè)備連接到主機(jī)上時,讀得設(shè)備的VID和PID,通過存儲在INF文件中的信息找到設(shè)備驅(qū)動。此后,Windows會將設(shè)備的VID和PID值保存到注冊表,設(shè)備再次連接時,系統(tǒng)就會在注冊表中查找設(shè)備驅(qū)動程序信息。具體操作方法是將驅(qū)動安裝的模板INF文件的MODEL節(jié)中的VID與PID值修改成與USB設(shè)備的VID和PID值相同。相應(yīng)STRING節(jié)中也修改。

        [Cypress]

        %VID_04B5PID_1015.DeviceDesc%=CYUSB, USB\VID_04B5PID_1015

        5 與應(yīng)用程序的接口

        圖3是驅(qū)動程序流程圖,從圖中可以看到功能驅(qū)動程序的位置。用戶通過一種規(guī)范的方式調(diào)用WIN32API函數(shù)來訪問硬件,不用考慮如何控制硬件的具體細(xì)節(jié)。USB開發(fā)過程主要應(yīng)知道應(yīng)用程序調(diào)用驅(qū)動程序的接口函數(shù),如下介紹,應(yīng)用程序直接調(diào)用這些函數(shù)來實現(xiàn)與硬件設(shè)備的數(shù)據(jù)交換。CREATEFILE 通過設(shè)備名打開設(shè)備,獲得設(shè)備句柄,有設(shè)備句柄就可以讀寫設(shè)備。通過下面語句獲得設(shè)備句柄。

        DEVICEIOCONTROL 讀寫控制設(shè)備,應(yīng)用程序調(diào)用此函數(shù)并加以不同的I/O控制碼參數(shù),完成應(yīng)用程序與驅(qū)動程序?qū)⒌臄?shù)據(jù)交換。

        主要用到的I/O控制碼有:IOCTL_EZUSB_BULK_

        READ 該控制碼從指定的批量管道中讀取數(shù)據(jù)。讀操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。IOCTL_EZUSB_

        BULK_WRITE 該控制碼向指定的批量管道中寫入數(shù)據(jù)。寫操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。CLOSEHANDLE 通過句柄關(guān)閉設(shè)備,設(shè)備請求完成后通過此函數(shù)關(guān)閉。

        6 結(jié) 語

        本文基于實際的USB接口應(yīng)用開發(fā),較詳細(xì)地介紹了EZ?USB FX2芯片的固件編寫,代碼下載方式,設(shè)備驅(qū)動程序安裝,上位機(jī)程序?qū)τ布目刂品椒?,并給出相應(yīng)的代碼。采用EZ?USB FX2芯片開發(fā)USB接口在很大程度上降低了開發(fā)的難度,縮短開發(fā)周期,從而大大提高用戶的開發(fā)效率。

        參考文獻(xiàn)

        [1] 薛圓圓,趙建領(lǐng).USB應(yīng)用開發(fā)實例詳解[M].北京:人民郵電出版社,2009.

        [2] 茍新運,張禹,季仲梅.USB 2.0接口芯片CY7C68013的固件程序開發(fā)[J].微計算機(jī)信息,2005,21(4):182?183.

        [3] 錢峰.EZ?USB FX2單片機(jī)原理、編程及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.

        [4] 呼媛,李自田,胡炳梁,等.EZ?USB FX2固件與設(shè)備驅(qū)動程序開發(fā)[J].微計算機(jī)信息,2010,26(20):162?164.

        [5] 王輝,張小超,李良.基于EZ?USB FX2芯片的USB驅(qū)動程序設(shè)計[C]//中國農(nóng)業(yè)機(jī)械學(xué)會2006年學(xué)術(shù)年會論文集.北京:中國農(nóng)業(yè)學(xué)會,2006:1074?1076.

        [6] 黃建斌,邱河波,戴祥.基于EZ?USBFX2的LED點陣圖文顯示屏[J].現(xiàn)代電子技術(shù),2010,33(2):34?37.

        免费一区二区高清不卡av| 久久精品无码一区二区三区不 | 丝袜美腿视频一区二区| 中文字幕中乱码一区无线精品| 97人妻精品一区二区三区免费| 真实夫妻露脸爱视频九色网 | 亚洲精品国产美女久久久| 久久久久亚洲av无码专区网站| 精品亚洲少妇一区二区三区| 亚洲天堂免费成人av| 99久久国产精品免费热| 国产日韩欧美一区二区东京热| 国产 字幕 制服 中文 在线| 国产精品成人午夜久久| 亚洲成av人片在线天堂无| 日韩人妻免费一区二区三区| 亚洲综合中文字幕日韩| 中文字幕亚洲欧美在线不卡| 永久免费人禽av在线观看| 无码人妻丰满熟妇片毛片| 国产三级黄色在线观看| 亚洲精品女优中文字幕| 日韩极品视频免费观看| 午夜裸体性播放| 夜夜爽一区二区三区精品| 麻豆国产成人AV网| 日本人妻高清免费v片| 无码精品国产一区二区三区免费| 日韩人妻无码精品久久久不卡| 真人男女做爰无遮挡免费视频| 加勒比东京热综合久久| 日韩女同在线免费观看| 国产欧美亚洲精品第一页| 国产高清乱理伦片| 日本一道dvd在线中文字幕| 亚州中文字幕乱码中文字幕| 26uuu在线亚洲欧美| 久久久久国产一区二区| 一区二区三区日本大片| 亚洲av区一区二区三区| 国产精品久久久久久久久久红粉|