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