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

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

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

USB接口設(shè)計論文

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

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

1.1固件框架固件程序框架主要包括設(shè)備初始化,處理標準USB設(shè)備請求和USB掛起時的電源管理等。程序框架使用KeilC51編寫,它是現(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)1s進行一次設(shè)備重枚舉,直到端點0收到一SETUP包,然后進入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遠程喚醒信號,調(diào)用TD_Resume(),內(nèi)核喚醒,從新進入while循環(huán)。固件框架包含的文件如表1所示。

1.2固件代碼編寫USB固件程序主要的功能有2個:一是PC機的Windows系統(tǒng)能夠檢測與識別相應(yīng)設(shè)備;二是數(shù)據(jù)的上傳與下傳。Cypress公司為EZ⁃USBFX2系列芯片提供的固件程序框架極大的簡化了固件開發(fā)。一般的固件開發(fā)只需要修改用戶調(diào)度函數(shù)文件Periph.c與USB描述符列表文件Dscr.a51,這兩個文件在KeilC51編程器中都可打開。Periph.c文件中只需要修改TD_Init()與TD_Poll()函數(shù)。在本設(shè)計中為了能進行高速的數(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è)計中配置端點6傳輸方向為IN,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為2級,作用是上傳采集的數(shù)據(jù)。配置端點2傳輸方向為OUT,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為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⁃USBFX2固件開發(fā)包中的Hex2bit.exe應(yīng)用工具生成IIC文件,IIC文件用于燒寫到EEPROM中。

2固件程序的裝載

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

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

設(shè)備驅(qū)動程序是應(yīng)用程序和硬件之間的連接,應(yīng)用程序通過驅(qū)動程序與設(shè)備通信,數(shù)據(jù)交換,從而獲取數(shù)據(jù)和對設(shè)備進行控制。CYPRESS公司為EZ⁃USBFX2提供一通用的驅(qū)動程序CYUSB.SYS,其功能完備,使用者不需要修改直接使用[5]。USB設(shè)備都具有一個VID和PID,此處的VID和PID與在固件程序轉(zhuǎn)載階段的值不同,這兩個值是用來安裝設(shè)備驅(qū)動程序的,VID和PID放到設(shè)備描述符表中,通過設(shè)備請求讀入到Windows系統(tǒng)中。同時,Win⁃dows操作系統(tǒng)通過INF文件將一VID和PID綁定到某一設(shè)備驅(qū)動程序。當(dāng)設(shè)備連接到主機上時,讀得設(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é)中也修改。

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

圖3是驅(qū)動程序流程圖,從圖中可以看到功能驅(qū)動程序的位置。用戶通過一種規(guī)范的方式調(diào)用WIN32API函數(shù)來訪問硬件,不用考慮如何控制硬件的具體細節(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)用進程,直到數(shù)據(jù)傳送完成。IOCTL_EZUSB_BULK_WRITE該控制碼向指定的批量管道中寫入數(shù)據(jù)。寫操作阻塞調(diào)用進程,直到數(shù)據(jù)傳送完成。CLOSEHANDLE通過句柄關(guān)閉設(shè)備,設(shè)備請求完成后通過此函數(shù)關(guān)閉。

5結(jié)語

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

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

主站蜘蛛池模板: 国产一区二区欧美丝袜| 夜夜添无码试看一区二区三区| 亚洲av色无码乱码在线观看| 王爷晚上含奶h嗯额嗯| 国产一区二区三区小向美奈子| 国产乱子精品免费视观看片| 国产超碰人人模人人爽人人喊| www日本黄色| 成年人性生活视频| 久久无码专区国产精品s| 欧美大片在线观看完整版| 亚洲色偷偷色噜噜狠狠99| 精品亚洲麻豆1区2区3区| 国产一级性生活| 麻豆一区二区99久久久久| 国产精品久久久久国产精品| 99久久精品美女高潮喷水| 官场猎艳警花美乳美妇| 中文字幕国产在线观看| 日本成人免费在线视频| 乱人伦xxxx国语对白| 欧美人与牲动交xxxxbbbb| 亚洲欧美日韩在线精品一区二区| 玉蒲团之天下第一| 公和我做好爽添厨房| 美国一级毛片在线| 国产一卡2卡3卡4卡无卡免费视频| 黄网在线免费看| 国产精品R级最新在线观看| 538在线视频观看| 国内精品视频一区二区三区八戒| freefron性中国国产高清| 小雄和三个护士阅读| 三级国产三级在线| 成年美女黄网站色大片免费看| 久久国产加勒比精品无码| 日韩欧美卡一卡二卡新区| 亚洲AV无码国产一区二区三区| 欧美丰满少妇xxxxx| 亚洲国产精品成人精品无码区在线 | 免费国产a理论片|