<button id="6ymue"><menu id="6ymue"></menu></button>
    • <s id="6ymue"></s>
    • 美章網 資料文庫 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接口在很大程度上降低了開發的難度,縮短開發周期,從而大大提高用戶的開發效率。

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

      主站蜘蛛池模板: 天天躁日日躁狠狠躁一区| 日本精a在线观看| 欧美亚洲综合视频| 免费在线不卡视频| a级毛片高清免费视频在线播放| 4480yy私人影院亚洲| 狠狠色综合7777久夜色撩人| 男朋友说我要冲你是什么意思| 婷婷激情狠狠综合五月| 亚洲成年网站在线观看| 豪妇荡乳1一5白玉兰| 天堂8中文在线最新版在线| 亚洲第一区视频在线观看| aaaaaaa一级毛片| 最新69成人精品毛片| 再来一次好吗动漫免费观看| ...91久久精品一区二区三区| 最近中文字幕在线中文视频| 国产在线一区二区| a级毛片在线免费看| 2021国产成人午夜精品| 护士撩起裙子让你桶的视频| 亚洲狠狠婷婷综合久久蜜芽 | 另类小说图片综合网| 88av在线播放| 成人区视频爽爽爽爽爽| 亚洲入口无毒网址你懂的| 精品无码人妻一区二区三区品 | 免费国产高清视频| 黑人3p波多野结衣在线观看| 天天爱天天做久久天天狠狼| 久久夜色精品国产亚洲| 欧美黑人疯狂性受xxxxx喷水| 国产欧美日韩另类精彩视频| 久久国产免费一区二区三区| 波多野结衣不打码视频| 国产MD视频一区二区三区| 69式互添免费视频| 天天爱天天色天天干| 久久99精品久久久久久不卡| 欧美国产日产片|