BRDF測量系統(tǒng)中高速串行接口的設(shè)計
關(guān)鍵詞:BRDF串口通訊光譜儀EZ-USBFX2
Abstract: The paper primarily discusses high-speed serial communication between personal computer and radiometer based on serial interface EZ-USB FX2 in BRDF measuring system. System principle,the description of EZ-USB FX2 CY7C68013, the hard ware design and the software design have been present.
Key Words: BRDF,Serial Communication,Radiometer,EZ-USB FX2
1. 引言
在遙感領(lǐng)域中,遙感信息定量化及多角度遙感的發(fā)展都要求獲取測量目標的BRDF(雙向反射比分布函數(shù))。這就需要一種可同時測量陽光入射輻照度和樣品反射輻亮度的測量系統(tǒng),而一個好的通訊接口的設(shè)計將會在很大程度上提高整個系統(tǒng)的工作效率,也會給使用者帶來極大方便。傳統(tǒng)的主機與外設(shè)的通訊接口一般是基于PCI總線、ISA總線或者是RS-232C串行總線。PCI總線插拔麻煩,且擴展槽有限(一般為5~6個),ISA總線存在同樣的問題,RS-232C串行總線傳輸速度慢(56kbps),且主機的串口數(shù)目也有限。通用串行總線(Universal Serial Bus,簡稱USB)具有安裝方便、高帶寬、易擴展等優(yōu)點。本文探討一下在BRDF測量系統(tǒng)中利用EZ-USB FX2實現(xiàn)高速串行通訊的軟硬件設(shè)計方法。
2. 系統(tǒng)組成
2.1 測量系統(tǒng)的特點
測量系統(tǒng)可以在室外自然條件下完成樣品上半球BRDF數(shù)據(jù)的測量和采集。模塊化設(shè)計,使其可拆卸運輸,組裝方便。系統(tǒng)中的光譜輻亮度計和輻照度計均可作為獨立的儀器使用,配備主動光源后,可在室內(nèi)進行BRDF測量。它可同時測量陽光入射輻照度和樣品反射輻亮度,顯著降低測量周期內(nèi)太陽高度角和大氣條件改變對測量結(jié)果的影響,提高了測量精度。
2.2系統(tǒng)總體框圖
圖1測量系統(tǒng)總體框圖
測量系統(tǒng)總體框圖如圖1所示。該系統(tǒng)由光學探測頭和控制箱兩個主要部分組成,光學探測頭安裝于天頂弧小平臺上,二者由電纜進行連接。測量系統(tǒng)工作時,光輻射信號經(jīng)光柵分光后,由線陣探測器接收所得到的在一定波長范圍內(nèi)的光譜輻射信號,轉(zhuǎn)換成相應(yīng)大小的模擬電信號。所得到的模擬電信號通過長電纜傳輸至控制箱里,再由單片機控制進行A/D轉(zhuǎn)換、多條曲線平均、插值等處理,完成后將多條光譜數(shù)據(jù)存入大容量的靜態(tài)存儲器中。最后,控制箱再通過USB2.0高速串行接口將數(shù)據(jù)傳輸至系統(tǒng)控制主機(PC機)。
3. 通訊接口硬件設(shè)計方案
3.1 EZ-USB FX2 CY7C68013功能介紹
EZ-USB FX2 CY7C68013是世界上第一款集成USB2.0的微處理器,它集成了USB2.0收發(fā)器、SIE(串行接口引擎)、增強的8051微控制器和可編程的外圍接口。該芯片的結(jié)構(gòu)圖如圖2所示。
圖2 EZ-USB FX2模塊
FX2這種獨創(chuàng)性結(jié)構(gòu)可使數(shù)據(jù)傳輸率達到56Mbytes/s,即USB2.0允許的最大帶寬。在FX2中,智能SIE可以處理許多USB1.1和USB2.0協(xié)議,從而減少了開發(fā)時間和確保了USB的兼容性。GPIF(General Programmable Interface)和主/從端點FIFO(8位或16位數(shù)據(jù)總線)為ATA、UTOPIA、EPP、PCMCIA和DSP等提供了簡單和無縫連接接口。
其主要特性如下:
●帶有加強的8051內(nèi)核性能,可達到標準8051的5~10倍,且與標準8051的指令完全兼容;
●集成度高,芯片內(nèi)部集成有微處理器、RAM、SIE(串行接口引擎)等多個功能模塊,從而減少了多個芯片接口部分需要時序配合的麻煩;
●具有易用的軟件開發(fā)工具,該芯片開發(fā)系統(tǒng)的驅(qū)動程序和固件的開發(fā)和調(diào)試相互獨立,可加快開發(fā)的速度。
3.2 方案選擇
FX2有三種可用的接口模式:端口模式、GPIF主控模式和Slave FIFOs模式。
在“端口”模式下,所有I/O引腳都可作為8051的通用I/O口?!癎PIF主控”接口模式使用PORTB和PORTD構(gòu)成通向四個FX2端點FIFO( EP2 EP4?EP6 EP8)的16位數(shù)據(jù)接口。GPIF作為內(nèi)部的主控制器與FIFO直接相連,并產(chǎn)生用戶可編程的控制信號與外部接口進行通信。同時,GPIF還可以通過RDY引腳采樣外部信號并等待外部事件。在Slave FIFOs模式下,外部邏輯或外部處理器直接與FX2端點FIFO相連。在這種模式下,GPIF不被激活,因為外部邏輯可直接控制FIFO。這種模式下,外部主控端既可以是異步方式,也可以是同步方式,工作時鐘可選為內(nèi)部產(chǎn)生或外部輸入,其它控制信號也可靈活地設(shè)置為高有效或低有效。為了充分利用EZ-USB FX2內(nèi)部的特殊機制來達到更高的傳輸速率,我們采用Slave FIFO模式。在整個傳輸過程中,并不要求8051對數(shù)據(jù)進行處理,采用自動打包的方式(置AUTOIN=1),數(shù)據(jù)經(jīng)過FIFO直接發(fā)送到PC機。圖3所示是EZ-USB FX2在Slave FIFOs模式下與外部電路連接的示意圖。
圖3 EZ-USB FX2在“Slave FIFOs模式”
4. 系統(tǒng)軟件設(shè)計
4.1 設(shè)備固件(Firmware)設(shè)計
CYPRESS公司的EZ-USB FX2開發(fā)套件提供給用戶一個固件函數(shù)庫(Ezusb.lib)和固件框架(Frame work),兩者均是基于KEIL C51進行開發(fā)的。固件函數(shù)庫提供了一系列的函數(shù)來加速USB固件程序的開發(fā),使用時只需在程序中包含EZUSB.H和EZREGS.H兩個頭文件,并在項目中鏈接Ezusb.lib就可以直接使用固件庫中的各個函數(shù)了。
在使用固件框架來進行特定的固件開發(fā)時,固件框架已經(jīng)幫我們實現(xiàn)了初始化、重枚舉、源管理等功能。對用戶而言,只需要在固件架構(gòu)的預(yù)留位置處添加代碼,就可以完成特定的功能,從而開發(fā)出一個功能完善的USB外設(shè)。在TD_init()函數(shù)中添加功能代碼,完成初始化以及端點配置等工作,并在TD_poll()函數(shù)中添加其它代碼來完成各種輔助功能。
固件初始化代碼如下:?
void TD_Init(void)
{
CPUCS = ((CPUCS bmCLKSPD) | bmCLKSPD1) ; //設(shè)置CPU時鐘為48Mhz
EP2CFG = OxAO; // EP2為bulk傳輸方式,方向OUT,尺寸512,4倍緩沖
EP4CFG = 0x00; // EP4 未使用
EP6CFG = OxEO; // EP6為bulk傳輸方式,方向IN,尺寸512,4倍緩沖
FIFORESET=0x80;//設(shè)置NAKALL bit
FIFORESET=0x02;
FIFORESET=0x06;//復(fù)位EP6 FIFO
FIFORESET=0x00;//清空NAKALL位,恢復(fù)至一般操作模式
EP2FIFOCFG=0x01;//設(shè)置EP2 FIFO
EP2FIFOCFG = 0x11; //設(shè)置EP2 FIFO自動輸出模式
EP6FIFOCFG = 0x09; //設(shè)置EP6 FIFO自動輸入模式
EP6AUTOINLENH=0x06;//EP6每次自動傳輸1024字節(jié)
……
}
void TD_Poll(void)
{
//因為設(shè)置為自動傳輸模式,所以此函數(shù)中不必添加任何代碼
}
4.2主機應(yīng)用程序設(shè)計
應(yīng)用程序設(shè)計由兩個部分組成:動態(tài)鏈接庫和應(yīng)用程序。動態(tài)鏈接庫負責與內(nèi)核態(tài)的USB功能驅(qū)動程序通信并接收應(yīng)用程序的各種操作請求,而應(yīng)用程序則負責對所采集的數(shù)據(jù)進行實時顯示、分析和存盤。應(yīng)用程序使用VC++6.0進行開發(fā)。
EZ-USB FX2開發(fā)套件提供了主機端驅(qū)動程序(ezusb.sys),可適用于絕大多數(shù)實際應(yīng)用。在編寫主機應(yīng)用程序的時候,只需調(diào)用相應(yīng)的WIN32 API函數(shù)向驅(qū)動程序提交各種申請,就能由驅(qū)動程序來完成相應(yīng)的讀、寫數(shù)據(jù)等各種功能。
void TransferThread(PTHREAD_CONTROL threadControl)
{
threadControl->status = DeviceIoControl (threadControl->hDevice,
threadControl->Ioctl,
threadControl->InBuffer,
threadControl->InBufferSize,
threadControl->OutBuffer,
threadControl->OutBufferSize,
threadControl->BytesReturned,
NULL);
// 調(diào)用DeviceIocontrol()函數(shù)
if (threadControl->completionEvent)
SetEvent(threadControl->completionEvent);
return;
}
應(yīng)用程序首先調(diào)用API函數(shù)Createfile()打開設(shè)備,并返回設(shè)備的句柄,然后調(diào)用DeviceIocontrol()函數(shù),通過返回的句柄把申請服務(wù)的代碼(IOCTL)和相應(yīng)的輸入輸出緩沖區(qū)提交給驅(qū)動程序,由驅(qū)動程序完成相應(yīng)的服務(wù)。
5. 結(jié)論
本文介紹了BRDF測量系統(tǒng),給出了在此系統(tǒng)中利用串行接口芯片EZ-USB FX2實現(xiàn)PC機與光譜儀之間高速串行通訊的軟硬件設(shè)計方法。經(jīng)調(diào)試運行證明,該設(shè)計方案可以實現(xiàn)PC機與光譜儀之間的高速串行通訊。
本文作者創(chuàng)新點:
BRDF測量系統(tǒng)對遙感信息定量化及多角度遙感的發(fā)展都有很大幫助.在此系統(tǒng)中,利用Cypress公司提供的開發(fā)套件開發(fā)USB2.0高速串行接口可以在很大程度上節(jié)省學習時間,加快開發(fā)速度。所開發(fā)的高速串行接口具有可靠性高、抗干擾性強、連接簡單,便于數(shù)據(jù)傳輸和處理等優(yōu)點,因而具有良好的應(yīng)用前景和很大的實用價值。
參考文獻:
[1] 栗兆劍,高岳,白力?;赩isual C++.NET的照度信號串口通信[J].微計算機信息, 2004,20-8:66-67,32。
[2] 馬明建。數(shù)據(jù)采集與處理技術(shù)[M].西安交通大學出版社。2005(3)。
[3] 龔建偉,熊光明。Visual C++/Turbo C串口通信編程實踐[M].電子工業(yè)出版社。2004(10)
[4] 王宇明.遙感技術(shù)及其應(yīng)用[M].人民交通出版社。1991(7)。
評論