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