999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

摘 要: 以CYPRESS公司的EZ?USB FX2芯片為基礎,對工業(yè)CT數(shù)據(jù)采集系統(tǒng)的USB接口設計所涉及的幾個方面進行了詳細的介紹。該設計中為了能提高數(shù)據(jù)傳輸?shù)乃俣龋珽Z?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,描述固件代碼裝載方式,應用程序調(diào)用驅(qū)動程序的接口函數(shù)。采用EZ?USB芯片開發(fā)USB接口,大大降低開發(fā)難度,提高開發(fā)效率。

關鍵詞: USB 2.0; EZ?USB; FX2; 固件程序

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

0 引 言

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

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

1 EZ?USB硬件介紹

CY7C68013A接口芯片是CYPRESS公司EZ?USB FX2系列芯片中的一種類型,它集成了USB2.0協(xié)議的微處理器,支持12 Mb/s的全速傳輸與480 Mb/s的高速傳輸,完全適用于USB2.0并向下兼容USB1.1。芯片內(nèi)部集成增強型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是默認的控制傳輸端點,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固件程序設計

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

2.1 固件框架

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

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

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

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

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

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

表1 固件框架文件列表

2.2 固件代碼編寫

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

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

3 固件程序的裝載

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

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

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

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

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

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

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

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

[Cypress]

%VID_04B5PID_1015.DeviceDesc%=CYUSB, USB\VID_04B5PID_1015

5 與應用程序的接口

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

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

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

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

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

6 結(jié) 語

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

參考文獻

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

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

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

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

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

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

主站蜘蛛池模板: 在线永久免费观看的毛片| 欧美不卡视频一区发布| 亚洲天堂在线视频| 国产一级二级在线观看| 欧美午夜视频在线| 国产一区亚洲一区| 成人在线亚洲| 国产丰满大乳无码免费播放| 日韩免费中文字幕| 国产真实乱子伦视频播放| 欧美一区二区丝袜高跟鞋| 欧美性猛交一区二区三区| 国产a v无码专区亚洲av| 国产精品久久久久久影院| 欧美天堂久久| 国产成人综合久久精品尤物| 国内精自视频品线一二区| 日韩视频免费| 国产精品美女自慰喷水| 1024你懂的国产精品| 亚洲精品无码日韩国产不卡| 999精品在线视频| 国产91蝌蚪窝| 国内丰满少妇猛烈精品播| 激情综合婷婷丁香五月尤物| 欧美精品aⅴ在线视频| 欧美日韩午夜| 国产第一色| 欧美一道本| 91www在线观看| a毛片免费在线观看| 久久伊人操| 久久综合丝袜日本网| 国产综合另类小说色区色噜噜 | 亚洲人成网18禁| 最新日韩AV网址在线观看| 国产高清在线观看91精品| 日韩国产另类| 中文字幕2区| 婷婷丁香色| 欧美成人精品一级在线观看| 成AV人片一区二区三区久久| 亚洲中文字幕日产无码2021| 日韩毛片免费观看| 制服丝袜亚洲| 波多野结衣一区二区三区四区视频| 人妻中文字幕无码久久一区| 四虎永久免费在线| 亚洲一级无毛片无码在线免费视频| 欧美日本在线| 成人伊人色一区二区三区| 女人av社区男人的天堂| 日韩色图区| 亚洲第一成年网| 国产精品亚洲五月天高清| 国产农村精品一级毛片视频| 免费人成视频在线观看网站| 国产精品主播| 免费观看国产小粉嫩喷水| 国产成人在线无码免费视频| 亚洲精品国产综合99久久夜夜嗨| 亚洲人成在线精品| 欧美激情福利| 日韩在线2020专区| 亚洲国产系列| 久久成人免费| 一级成人a毛片免费播放| 日韩第九页| 动漫精品中文字幕无码| 熟女日韩精品2区| 天天躁夜夜躁狠狠躁躁88| 国产一级片网址| 国产办公室秘书无码精品| 国产黄网永久免费| 欧美精品亚洲精品日韩专| 久久精品亚洲热综合一区二区| Aⅴ无码专区在线观看| 波多野结衣一级毛片| 丝袜国产一区| 色天天综合久久久久综合片| 亚洲欧美精品一中文字幕| 黄色在线网|