基于CY7C68013的高速數據傳輸系統的設計
在USB設備枚舉的過程中,可采用USB調試工具BusHound軟件來抓取它和主機的通信數據進行分析,以檢查硬件和固件程序的工作是否正確。
3 驅動程序設計
為了配合CY7C68013的工作,需要有驅動程序以使上位機程序能正常訪問USB芯片。以Cypress公司提供的參考程序為基礎,增加自定義控制請求即可。
由于驅動程序必須和系統的總線驅動進行通信,系統總線驅動為WDM(Win32 Driver Model)驅動。因此,USB驅動程序采用WDM設備驅動程序[8]。由于USB總線驅動程序(USBD)一般由操作系統提供,負責與實際的硬件打交道,因此,重點是開發USB設備驅動程序(USB Device Driver)。USB設備的WDM驅動程序是通過創建URB(USB請求塊),并向USB總線驅動程序發送包含URB的IRP來實現對USB設備信息的發送和接收。此外,USB設備驅動程序除負責處理應用程序的I/O請求外,還要處理PnP請求。
CY7C68013的驅動程序包括2部分:usbfft.sys,專用于下載芯片的固件程序;loaderfft.sys,上位機和CY7-
C68013進行通訊的部分,用于實現數據收發功能。這2個部分都存放在上位機上,當系統上電或USB連接時,固件部分將自動下載到芯片的RAM中供8051執行。
4 應用程序設計
上位機是人機交互的平臺,需要良好的操作界面。
應用程序是完成數據發送與接收并且對系統進行有效控制的平臺,不僅需要向CY7C68013發送數據,還需要將接收的數據顯示出來并保存。此外為了系統測試的方便,增加了誤碼率和速率測試模塊,以測試系統的整體性能。
本系統上位機的主要功能有:(1)文件的發送;(2)文件的接收;(3)速率測試;(4)誤碼率測試;(5)系統控制,用來獲取CY7C68013描述符以及其內部寄存器的情況,并對整個系統進行控制,如使能CY7C68013的數據輸出功能及片內數據轉移功能等。
系統中定義了6個時間控件來完成數據的發送與接收,timer1、timer3和timer4分別完成文件、誤碼率及速率測試的發送,Timer2、timer6和timer8分別完成文件、誤碼率及速率測試的接收。另外定義了一個時間控件來控制開啟哪一個接收數據時間控件。為了保證有效判斷所接收到的數據是文件、速率測試還是誤碼率測試數據,在timer1、timer3和timer4發送前都先發送一個512 B的前導包。全為1時表示下一個數據包包含著速率測試數據,全為2時表示下一個數據包包含著誤碼率測試數據,全為3時表示下一個數據包包含著文件數據。這樣就能判斷出應該開啟哪一個接收時鐘。
具體的文件數據處理方法是:文件打開后,先將文件緩沖,定義一個二維數組:行512 B,列由文件大小決定。數組的第一個512 B前20 B記錄所發送文件的大小,并且在最開始的5 B以0xAA填充,表明這個數據包是全部文件的開始,當文件大小不足填滿最后的512 B時,數據補0,但數組結尾為0xAA。
采用CY7C68013設計的高速數據傳輸系統,經過測試,達到了設計要求,實現了數據的高速傳輸,為下一步開展數據編碼/譯碼、調制/解調研究打下了良好的基礎。
評論