1引言
隨著測(cè)試技術(shù)和無(wú)線通信技術(shù)的發(fā)展和應(yīng)用,測(cè)試儀器向微型化,、低功耗發(fā)展,,紅外數(shù)據(jù)傳輸成本低廉,簡(jiǎn)單易用,,在很多小型設(shè)備中得到廣泛應(yīng)用,。為避免接口插拔造成儀器損壞,實(shí)現(xiàn)測(cè)試儀器與PC機(jī)間的無(wú)線數(shù)據(jù)傳輸,,減少不必要的線纜連接,,這里設(shè)計(jì)一種基于USB2.0的紅外數(shù)據(jù)傳輸系統(tǒng),該系統(tǒng)具有低功耗,、控制簡(jiǎn)單,、實(shí)施方便,傳輸可靠性高等特點(diǎn),。
2系統(tǒng)硬件設(shè)計(jì)
2.1主要器件選型
Cypress公司的CY7C68013器件包含USB2.0的集成微控制器,。它內(nèi)部集成有1個(gè)增強(qiáng)型的8051,、1個(gè)智能USB串行接口引擎、1個(gè)USB數(shù)據(jù)收發(fā)器,、2個(gè)UART,、3個(gè)8位I/O口、16位地址線,、8.5KBRAM和4KBFIFO等,。增強(qiáng)型的8051內(nèi)核完全與標(biāo)準(zhǔn)8051兼容、而性能可達(dá)到標(biāo)準(zhǔn)8051的3倍以上,。每條指令占4個(gè)時(shí)鐘周期,,在48MHz晶振下工作時(shí),單指令周期為83.3ns,,執(zhí)行速度遠(yuǎn)快于標(biāo)準(zhǔn)的8051單片機(jī),。EZ-USBFX2支持3種接口模式,即GPIF控制器模式,、從屬FIFO模式和端口模式,。GPIF控制器模式和從屬FIFO模式與外圍設(shè)備是8位或16位數(shù)據(jù)并行傳輸,根據(jù)本系統(tǒng)需要,,選擇串行通信的端口模式,。
由于USB傳輸?shù)臄?shù)據(jù)是基帶二進(jìn)制信號(hào),而紅外收發(fā)器傳輸?shù)臄?shù)據(jù)是3/16歸零碼,,因此選用編解碼器HSDL-7001實(shí)現(xiàn)CY7C68013器件與紅外收發(fā)器之間的數(shù)據(jù)轉(zhuǎn)換,。為了實(shí)現(xiàn)系統(tǒng)的小體積,選用TFBS4652型紅外收發(fā)器,,該收發(fā)器是最小的紅外收發(fā)器之一(6.8mmX2.8mmX1.6mm),,質(zhì)量?jī)H為0.05g。最大傳輸速率達(dá)115.2Kbit/s(SIR),,發(fā)光二極管的工作電壓范圍為2.4~3.6V,,溫度為-25~85℃。此外,,該收發(fā)器還具有發(fā)送接收的使能控制端,,當(dāng)系統(tǒng)不工作時(shí),可將此端口置低,,這樣收發(fā)器就處于關(guān)閉狀態(tài),,降低系統(tǒng)消耗。
2.2系統(tǒng)設(shè)計(jì)組成
本傳輸系統(tǒng)主要由USB2.0接口電路(包括接口器件CY7C68013,、電源轉(zhuǎn)換,、串行E2PROM)、紅外編碼解電路和紅外收發(fā)器3部分組成。當(dāng)需將外圍設(shè)備中存儲(chǔ)的數(shù)據(jù)讀取到PC機(jī)時(shí),,PC機(jī)向USB2.0接口器件CY7C68013發(fā)送讀取數(shù)據(jù)的請(qǐng)求命令,,CY7C68013接收到請(qǐng)求命令后,把與外圍設(shè)備通信的校驗(yàn)碼通過(guò)串行通信接口發(fā)送至紅外編解碼HSDL-7001,,然后將接口器件發(fā)送出的串行二進(jìn)制數(shù)據(jù)編碼成3/16歸零碼的脈沖,,3/16歸零碼數(shù)據(jù)通過(guò)串行數(shù)據(jù)線傳送至紅外收發(fā)器,此時(shí)接口器件開啟紅外收發(fā)電器的收發(fā)使能端,,紅外收發(fā)器以紅外光信號(hào)的形式發(fā)射3/16歸零碼脈沖數(shù)據(jù),,完成命令的發(fā)送;當(dāng)外圍設(shè)備連接的紅外收發(fā)器接收到發(fā)送的3/16歸零碼數(shù)據(jù)命令后,,將其送至外圍設(shè)備,,外圍設(shè)備收到命令后響應(yīng)發(fā)送數(shù)據(jù),即完成一次從PC機(jī)到外圍設(shè)備的數(shù)據(jù)通信,。其具體實(shí)現(xiàn)原理如圖1所示。
2.3紅外編解碼電路
圖2為紅外編解碼電路,,主要用到紅外編解碼器HSDL-7001,,該器件遵循IrDA1.0通信協(xié)議物理層規(guī)范,接口與SIR收發(fā)器相兼容,,可與標(biāo)準(zhǔn)的16550UART連接,,具有內(nèi)部或外部2種時(shí)鐘模式,工作電壓范圍為2.7~5.5V,,可發(fā)送/接收1.63μs或3/16脈沖數(shù)據(jù)形式,。其中16XCLK為16倍波特率的時(shí)鐘輸入端,只在外部晶振時(shí)使用,。
OSCOUT,、OSCIN為晶振接口,低電平時(shí)選擇內(nèi)部時(shí)鐘,。TXD引腳接收CY7C68013單片機(jī)串行端口發(fā)送的數(shù)據(jù),,經(jīng)編碼調(diào)制后,以脈沖的方式傳輸?shù)絀R_TXD端口,。紅外光脈沖數(shù)據(jù)轉(zhuǎn)變來(lái)的電平脈沖信號(hào),,經(jīng)IR_RX端口進(jìn)入HSDL-7001,經(jīng)內(nèi)部解調(diào)后,,通過(guò)RX引腳將數(shù)據(jù)發(fā)送到CY7C68013單片機(jī)的串行端口,。引腳A0、A1,、A2用于改變HSDL-7001的波特率選擇,,以匹配外同設(shè)備與PC機(jī)之間數(shù)據(jù)的傳輸。
本系統(tǒng)選用外部晶體振蕩器,選用頻率為1.8432MHz有源晶振,,在數(shù)據(jù)編碼過(guò)程,,HSDL-7001接收TXD傳送的串行數(shù)據(jù),在TXD的每個(gè)下降沿開始,,IRRXD延遲7CYCLES的時(shí)間(16CYCLES為一個(gè)晶振周期),,然后輸出1個(gè)正脈沖,脈寬為3CYCLES,,如果TXD0一直為低電平,,則每個(gè)晶振周期內(nèi),IRRXD都會(huì)輸出1個(gè)寬度為3CYCLES的正脈沖,。如果TXDO為高電平,,則IRTXD輸出低電平,如圖3所示,。
解碼過(guò)程相反,,編碼過(guò)程看作是把TXD脈沖變窄的過(guò)程,而解碼過(guò)程則看作是把脈沖拉寬的過(guò)程,。解碼過(guò)程中,,當(dāng)IRRXD傳送1個(gè)寬度為3CYCLES的負(fù)脈沖,RXD就輸出1個(gè)寬度為16CYCLES的負(fù)脈沖,,如圖4所示,。
3系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件包括固件程序、USB設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序,。整個(gè)軟件包括系統(tǒng)初始化,、采樣控制、數(shù)據(jù)傳輸和波形顯示等部分,。USB設(shè)備端固件及外圍電路的底層控制程序主要采用C51編寫,,計(jì)算機(jī)端客戶應(yīng)用程序采用VisualBasic和VisualC++混合編程。
3.1USB固件設(shè)計(jì)
USB數(shù)據(jù)傳輸有4種方式:塊傳輸,、中斷傳輸,、同步傳輸和控制傳輸。當(dāng)需要快速精確大批量傳輸數(shù)據(jù)時(shí),,一般采用塊傳輸方式,。設(shè)計(jì)中主要考慮本系統(tǒng)要求高速持續(xù)傳輸大容量的數(shù)據(jù),并且對(duì)數(shù)據(jù)的完整性要求較高,,故采用塊傳輸方式,。
固件程序的編寫采用Keil公司的KeilC51編譯器(V6.10)。它為8051微控制器的軟件開發(fā)提供C語(yǔ)言環(huán)境,,同時(shí)保留匯編代碼高效,、快速的特點(diǎn),,相對(duì)于傳統(tǒng)的匯編開發(fā)環(huán)境更加靈活、高效和易于使用,。將代碼在KeilC51環(huán)境中進(jìn)行編譯,。編譯通過(guò)后,將固件代碼下載到USB單片機(jī)中,,就可實(shí)現(xiàn)與外圍設(shè)備的數(shù)據(jù)傳輸,。
在整個(gè)固件程序中,EZ-USBFX2設(shè)備上電或復(fù)位后,,首先初始化所有內(nèi)部狀態(tài)變量,,隨后調(diào)用任務(wù)初始化函數(shù)TD_Init(),開啟中斷,,此時(shí)固件程序不斷檢測(cè)控制端口0是否收到SETUP包,。一旦收到,固件程序就開始調(diào)用用戶函數(shù)TD_Poll(),,其中用戶需要完成的功能代碼在TD_Poll()函數(shù)中,。調(diào)用完成后,重復(fù)檢測(cè)端口O是否收到SETUP包,,若有,,繼續(xù)執(zhí)行設(shè)備請(qǐng)求,調(diào)用TD_Poll()函數(shù),;否則檢測(cè)USB核是否有USB掛起信號(hào),。若有則調(diào)用用戶函數(shù)TD_Suspend(),,其返回值為真時(shí),,檢測(cè)USB核是否有重新開始事件,沒有時(shí),,設(shè)備進(jìn)入掛起狀態(tài),,反之,調(diào)用TD_Resume()進(jìn)行下一次循環(huán),;當(dāng),。TD_Suspend()函數(shù)返回值為假時(shí),直接轉(zhuǎn)入下次循環(huán),。
此外,,固件程序框架中還定義許多中斷處理函數(shù),當(dāng)用到時(shí)可在相應(yīng)的位置加入用戶編寫的代碼,,這樣既清晰又便于理解,,就可在無(wú)需改變整個(gè)程序的前提下,僅通過(guò)改變相應(yīng)的模塊,,來(lái)實(shí)現(xiàn)用戶設(shè)置的功能,,本系統(tǒng)采用串口中斷處理函數(shù)實(shí)現(xiàn)紅外傳輸數(shù)據(jù)的接收,。
3.2驅(qū)動(dòng)程序設(shè)計(jì)
USB系統(tǒng)驅(qū)動(dòng)程序采用分層結(jié)構(gòu)模型(WDM),該模型定義分層的驅(qū)動(dòng)程序,,USB設(shè)備驅(qū)動(dòng)程序不直接與硬件對(duì)話,,而是通過(guò)USB驅(qū)動(dòng)程序接口將USB請(qǐng)求快速提交到總線驅(qū)動(dòng)程序進(jìn)而完成硬件操作。從系統(tǒng)的角度來(lái)說(shuō),,在USB設(shè)備插入主機(jī)后,,主機(jī)檢測(cè)到USB設(shè)備,讀取設(shè)備描述符,,然后主機(jī)根據(jù)設(shè)備描述符中提供的廠商ID和產(chǎn)品ID等,,啟用相應(yīng)USB設(shè)備驅(qū)動(dòng)程序,讀取USB設(shè)備中的配置描述符,、接口描述符和端點(diǎn)描述符,,根據(jù)需要選擇恰當(dāng)?shù)呐渲谩⒔涌诤投它c(diǎn),,確定傳輸方式,。這一過(guò)程完成后,PC機(jī)與USB設(shè)備之間就可傳輸數(shù)據(jù),。
3.3應(yīng)用程序設(shè)計(jì)
應(yīng)用程序是測(cè)試系統(tǒng)軟件的核心,,其對(duì)USB設(shè)備的操作功能為:開啟或關(guān)閉USB設(shè)備,檢測(cè)USB設(shè)備,,設(shè)置USB數(shù)據(jù)傳輸管道,。設(shè)置數(shù)據(jù)端口的初始狀態(tài),通過(guò)USB接口回傳數(shù)據(jù),、存儲(chǔ),、顯示并分析數(shù)據(jù)。
4結(jié)論
本文設(shè)計(jì)的數(shù)據(jù)傳輸系統(tǒng)具有低功耗,、控制簡(jiǎn)單,、實(shí)施方便等特點(diǎn),系統(tǒng)將USB2.O接口技術(shù)與紅外傳輸技術(shù)結(jié)合,,實(shí)現(xiàn)了測(cè)試儀與PC機(jī)之間的無(wú)線數(shù)據(jù)傳輸,,達(dá)到了設(shè)計(jì)應(yīng)用要求。
為了保證傳輸數(shù)據(jù)的正確性,,避免其他光波對(duì)傳輸數(shù)據(jù)的干擾,,系統(tǒng)殼體安裝紅外濾光片:一方面,消除或減少散射輻射或背景輻射的有害影響:另一方面,,分出具有特定波長(zhǎng)區(qū)的紅外波長(zhǎng),。經(jīng)多次試驗(yàn)證明,該系統(tǒng)能夠可靠穩(wěn)定傳輸數(shù)據(jù),,具有很好的實(shí)用性,。