美章網(wǎng) 資料文庫 USB接口設(shè)計(jì)論文范文

USB接口設(shè)計(jì)論文范文

本站小編為你精心準(zhǔn)備了USB接口設(shè)計(jì)論文參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。

USB接口設(shè)計(jì)論文

1EZ⁃usbFX2CY7C68013A固件程序設(shè)計(jì)

CY7C68013A固件程序是指在EZ⁃USB芯片內(nèi)部RAM中運(yùn)行的程序代碼,固件程序是USB接口設(shè)計(jì)的核心部分。固件代碼的作用就是控制芯片執(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⁃USBFX2固件程序開發(fā)包中提供了固件程序的基本框架,這為用戶開發(fā)基于EZ⁃USBFX2芯片的USB設(shè)備提供了很大的方便。

1.1固件框架固件程序框架主要包括設(shè)備初始化,處理標(biāo)準(zhǔn)USB設(shè)備請求和USB掛起時(shí)的電源管理等。程序框架使用KeilC51編寫,它是現(xiàn)成的直接可以編譯為HEX文件的8051程序代碼,使用者只需要改寫USB描述表,在一些固定函數(shù)下添加功能代碼,主要是EZ⁃USB芯片的初始化配置和實(shí)現(xiàn)USB外設(shè)功能的代碼。固件框架的流程圖如圖2所示[4]。復(fù)位后固件先初始化一些全局變量,然后調(diào)用初始化函數(shù)TD_Init(),該函數(shù)初始化USB設(shè)備到?jīng)]有配置的狀態(tài),并打開中斷。循環(huán)1s進(jìn)行一次設(shè)備重枚舉,直到端點(diǎn)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掛起信號(hào),則調(diào)用TD_Suspend()掛起函數(shù),內(nèi)核掛起,直到出現(xiàn)USB遠(yuǎn)程喚醒信號(hào),調(diào)用TD_Resume(),內(nèi)核喚醒,從新進(jìn)入while循環(huán)。固件框架包含的文件如表1所示。

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

2固件程序的裝載

CY7C68013A芯片集成增強(qiáng)型8051內(nèi)核,內(nèi)部無ROM等永久性存儲(chǔ)器,每次上電后需要從新將固件程序載入到片內(nèi)RAM中。EZ⁃USBFX2固件程序有3種加載方式:(1)如果沒有片外存儲(chǔ)器連接到EZ⁃USBFX2上,或者所讀取的首字節(jié)不是0xC0或0xC2,則芯片枚舉為缺省的USB設(shè)備,其中描述符,VID,PID由芯片內(nèi)部硬件邏輯提供。然后固件程序與描述符表由主機(jī)下載,EZ⁃USBFX2開始執(zhí)行下載的代碼,首先模擬物理電路的斷開與連接,此時(shí)EZ⁃USBFX2將再次進(jìn)行設(shè)備枚舉,這稱為重枚舉,重枚舉將根據(jù)下載的代碼對設(shè)備進(jìn)行從新定義。(2)如果USB檢測到一個(gè)E2PROM,其首字節(jié)為0xC0時(shí),芯片也枚舉為缺省的USB設(shè)備,但VID與PID值將從此EEPROM中讀取,USB描述符由芯片內(nèi)部提供。這種模式稱為“C0”加載。主機(jī)根據(jù)讀得的VID與PID值,由固件下載驅(qū)動(dòng)程序?qū)⒅付ǖ墓碳绦蛳螺d到EZ⁃USBFX2,然后再重枚舉。(3)如果USB檢測到一個(gè)E2PROM,其首字節(jié)為0xC2時(shí),固件程序?qū)拇薊2PROM中自動(dòng)下載到FX2芯片上,CPU通過復(fù)位后運(yùn)行下載的程序代碼。這種模式稱為“C2”加載。其中第一種方式主要是開發(fā)階段使用,它需要主機(jī)上有CYPRESS公司提供的開發(fā)軟件USBCONTROLPANEL,每次手動(dòng)將程序下載到USB上。第二種方法需要開發(fā)者另外再編寫一個(gè)固件下載驅(qū)動(dòng)程序,而且也需要在電路中外加一小容量的E2PROM。第3種方法是將固件程序燒寫到E2PROM中,每次上電自動(dòng)加載,這種方式簡單直接。本設(shè)計(jì)采用第3種方式。

3驅(qū)動(dòng)程序及INF文件的編寫

設(shè)備驅(qū)動(dòng)程序是應(yīng)用程序和硬件之間的連接,應(yīng)用程序通過驅(qū)動(dòng)程序與設(shè)備通信,數(shù)據(jù)交換,從而獲取數(shù)據(jù)和對設(shè)備進(jìn)行控制。CYPRESS公司為EZ⁃USBFX2提供一通用的驅(qū)動(dòng)程序CYUSB.SYS,其功能完備,使用者不需要修改直接使用[5]。USB設(shè)備都具有一個(gè)VID和PID,此處的VID和PID與在固件程序轉(zhuǎn)載階段的值不同,這兩個(gè)值是用來安裝設(shè)備驅(qū)動(dòng)程序的,VID和PID放到設(shè)備描述符表中,通過設(shè)備請求讀入到Windows系統(tǒng)中。同時(shí),Win⁃dows操作系統(tǒng)通過INF文件將一VID和PID綁定到某一設(shè)備驅(qū)動(dòng)程序。當(dāng)設(shè)備連接到主機(jī)上時(shí),讀得設(shè)備的VID和PID,通過存儲(chǔ)在INF文件中的信息找到設(shè)備驅(qū)動(dòng)。此后,Windows會(huì)將設(shè)備的VID和PID值保存到注冊表,設(shè)備再次連接時(shí),系統(tǒng)就會(huì)在注冊表中查找設(shè)備驅(qū)動(dòng)程序信息。具體操作方法是將驅(qū)動(dòng)安裝的模板INF文件的MODEL節(jié)中的VID與PID值修改成與USB設(shè)備的VID和PID值相同。相應(yīng)STRING節(jié)中也修改。

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

圖3是驅(qū)動(dòng)程序流程圖,從圖中可以看到功能驅(qū)動(dòng)程序的位置。用戶通過一種規(guī)范的方式調(diào)用WIN32API函數(shù)來訪問硬件,不用考慮如何控制硬件的具體細(xì)節(jié)。USB開發(fā)過程主要應(yīng)知道應(yīng)用程序調(diào)用驅(qū)動(dòng)程序的接口函數(shù),如下介紹,應(yīng)用程序直接調(diào)用這些函數(shù)來實(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ū)動(dòng)程序?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)閉。

5結(jié)語

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

作者:王東李公平潘小東方登富單位:蘭州大學(xué)核科學(xué)與技術(shù)學(xué)院

主站蜘蛛池模板: 国产中文字幕一区| 好大好爽再深一点在线观看| 亚洲另类古典武侠| 精品一区二区在线观看1080p| 国产在线精品国自产拍影院同性| 7777奇米四色| 天天躁日日躁狠狠躁av麻豆 | 草久在线观看视频| 国产特级毛片AAAAAA| 97色伦综合在线欧美视频| 尤物在线视频观看| 中文无码字幕中文有码字幕| 日韩在线免费看网站| 亚洲中文字幕久在线| 欧美色综合高清视频在线| 免费a级毛片在线播放| 美国式禁忌矿桥| 国产乡下三级全黄三级| 鸡鸡插屁股视频| 国产激情自拍视频| 18禁男女爽爽爽午夜网站免费| 在线日韩理论午夜中文电影| xyx性爽欧美| 成人最新午夜免费视频| 久久99青青精品免费观看| 日韩精品一区二区三区在线观看l| 亚洲国产精品一区二区三区久久 | 丁香六月纪婷婷激情综合| 无码人妻精品丰满熟妇区| 久久精品亚洲日本波多野结衣| 欧美AAAAAA级午夜福利视频| 亚洲成在线观看| 欧美精品在线一区二区三区| 亚洲网站在线看| 理论亚洲区美一区二区三区| 公粗一晚六次挺进我密道视频| 美女张开腿黄网站免费| 国产一卡二卡≡卡四卡免费乱码| 香港经典aa毛片免费观看变态 | 欧美另类xxxx图片| 亚洲成在人线在线播放无码|