美章網 資料文庫 USB接口設計論文范文

    USB接口設計論文范文

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

    USB接口設計論文

    1EZ⁃usbFX2CY7C68013A固件程序設計

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

    1.1固件框架固件程序框架主要包括設備初始化,處理標準USB設備請求和USB掛起時的電源管理等。程序框架使用KeilC51編寫,它是現成的直接可以編譯為HEX文件的8051程序代碼,使用者只需要改寫USB描述表,在一些固定函數下添加功能代碼,主要是EZ⁃USB芯片的初始化配置和實現USB外設功能的代碼。固件框架的流程圖如圖2所示[4]。復位后固件先初始化一些全局變量,然后調用初始化函數TD_Init(),該函數初始化USB設備到沒有配置的狀態,并打開中斷。循環1s進行一次設備重枚舉,直到端點0收到一SETUP包,然后進入while循環語句,開始TD_Poll任務處理函數。依次執行下列過程:(1)TD_Poll()用戶任務調度函數;(2)如果發現USB設備請求,則分析該請求并執行;(3)如果收到USB掛起信號,則調用TD_Suspend()掛起函數,內核掛起,直到出現USB遠程喚醒信號,調用TD_Resume(),內核喚醒,從新進入while循環。固件框架包含的文件如表1所示。

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

    2固件程序的裝載

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

    3驅動程序及INF文件的編寫

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

    4與應用程序的接口

    圖3是驅動程序流程圖,從圖中可以看到功能驅動程序的位置。用戶通過一種規范的方式調用WIN32API函數來訪問硬件,不用考慮如何控制硬件的具體細節。USB開發過程主要應知道應用程序調用驅動程序的接口函數,如下介紹,應用程序直接調用這些函數來實現與硬件設備的數據交換。CREATEFILE通過設備名打開設備,獲得設備句柄,有設備句柄就可以讀寫設備。通過下面語句獲得設備句柄。DEVICEIOCONTROL讀寫控制設備,應用程序調用此函數并加以不同的I/O控制碼參數,完成應用程序與驅動程序將的數據交換。主要用到的I/O控制碼有:IOCTL_EZUSB_BULK_READ該控制碼從指定的批量管道中讀取數據。讀操作阻塞調用進程,直到數據傳送完成。IOCTL_EZUSB_BULK_WRITE該控制碼向指定的批量管道中寫入數據。寫操作阻塞調用進程,直到數據傳送完成。CLOSEHANDLE通過句柄關閉設備,設備請求完成后通過此函數關閉。

    5結語

    本文基于實際的USB接口應用開發,較詳細地介紹了EZ⁃USBFX2芯片的固件編寫,代碼下載方式,設備驅動程序安裝,上位機程序對硬件的控制方法,并給出相應的代碼。采用EZ⁃USBFX2芯片開發USB接口在很大程度上降低了開發的難度,縮短開發周期,從而大大提高用戶的開發效率。

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

    主站蜘蛛池模板: 国产亚洲日韩一区二区三区 | 亚洲一区二区在线视频| 国产一区二区精品久久岳√| 国产成人午夜精品一区二区三区| 麻豆视频一区二区三区| 亚洲福利视频一区二区三区| 99国产精品一区二区| 国产一区二区三区小说| 国产内射999视频一区| 一区二区三区杨幂在线观看 | 亚洲欧美日韩一区二区三区| 免费观看一区二区三区| 一区二区三区无码高清| 国内精品视频一区二区八戒| 久久精品一区二区三区资源网| 一区二区三区国模大胆| 国产产一区二区三区久久毛片国语| 亚洲一区二区三区国产精品无码| 无码人妻一区二区三区在线视频 | A国产一区二区免费入口| 日本无卡码免费一区二区三区| 国产一区在线mmai| 末成年女AV片一区二区| 麻豆AV一区二区三区| 日韩人妻无码一区二区三区99| 成人免费av一区二区三区| 国模私拍福利一区二区| 日韩一区二区三区射精| 精品国产a∨无码一区二区三区| 日韩好片一区二区在线看| 久久久久久人妻一区精品| 无码欧精品亚洲日韩一区| 狠狠色婷婷久久一区二区| 亚洲一区二区三区国产精品| 日韩免费一区二区三区在线播放| 国产一区二区三区影院| 国产激情一区二区三区在线观看| 日韩视频一区二区| 一区二区三区精品高清视频免费在线播放 | 久久精品一区二区三区四区| 国产一区二区三区在线看|