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í)接口器件開(kāi)啟紅外收發(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è)下降沿開(kāi)始,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編寫(xiě),計(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ù)的完整性要求較高,故采用塊傳輸方式。
固件程序的編寫(xiě)采用Keil公司的KeilC51編譯器(V6.10)。它為8051微控制器的軟件開(kāi)發(fā)提供C語(yǔ)言環(huán)境,同時(shí)保留匯編代碼高效、快速的特點(diǎn),相對(duì)于傳統(tǒng)的匯編開(kāi)發(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(),開(kāi)啟中斷,此時(shí)固件程序不斷檢測(cè)控制端口0是否收到SETUP包。一旦收到,固件程序就開(kāi)始調(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核是否有重新開(kāi)始事件,沒(méi)有時(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)的位置加入用戶編寫(xiě)的代碼,這樣既清晰又便于理解,就可在無(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ù)呐渲?、接口和端點(diǎn),確定傳輸方式。這一過(guò)程完成后,PC機(jī)與USB設(shè)備之間就可傳輸數(shù)據(jù)。
3.3應(yīng)用程序設(shè)計(jì)
應(yīng)用程序是測(cè)試系統(tǒng)軟件的核心,其對(duì)USB設(shè)備的操作功能為:開(kāi)啟或關(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í)用性。