基于LabVIEW的 無線USB高速數(shù)據(jù)傳輸系統(tǒng)
設(shè)備固件(firmware)程序在主機(jī)上調(diào)試編譯完后,枚舉時(shí)下載到RAM內(nèi),它使得USB接口芯片與主機(jī)和外設(shè)中的其他電路能夠通信,因此固件程序包括響應(yīng)主機(jī)要求部分和控制外設(shè)部分。利用Cypress公司提供的固件框架來開發(fā)固件,可以簡化固件開發(fā)過程。
驅(qū)動(dòng)程序是LabVIEW與USB接口的驅(qū)動(dòng)程序,應(yīng)用程序通過驅(qū)動(dòng)程序與系統(tǒng)USBI(USB Device Interface)進(jìn)行通信,由系統(tǒng)產(chǎn)生USB數(shù)據(jù)的傳送動(dòng)作;固件響應(yīng)各種來自系統(tǒng)的USB標(biāo)準(zhǔn)請(qǐng)求,完成數(shù)據(jù)的交換工作和事件處理。
2.2.1 設(shè)備固件程序設(shè)計(jì)
Cypress公司提供了固件框架來開發(fā)框架,在Keil C51下開發(fā),該框架主要由以下幾部分組成:
①FW.C中包含程序框架的MAIN函數(shù),由于Cy―press公司已經(jīng)精心劃分了這部分的功能,所以一般不用改動(dòng)。
②PERIPH.C是用戶函數(shù)掛鉤的相關(guān)定義,這部分需要根據(jù)自己系統(tǒng)的需要實(shí)例化這個(gè)文件,以實(shí)現(xiàn)特定的功能。
③TD_Init函數(shù)是在設(shè)備重枚舉和任務(wù)調(diào)度啟用之前調(diào)用,用來初始化用戶的全局狀態(tài)變量,并負(fù)責(zé)對(duì)USB端點(diǎn)進(jìn)行初始化設(shè)置。在本設(shè)計(jì)中將端點(diǎn)2設(shè)置為1 024個(gè)字節(jié),4重緩沖,自動(dòng)輸入模式。
④TD_Poll函數(shù)是系統(tǒng)中循環(huán)任務(wù)的處理函數(shù),主要負(fù)責(zé)對(duì)各個(gè)端點(diǎn)的狀態(tài)進(jìn)行查詢,處理各種IN和0UT端點(diǎn)的交互。
⑤Ezusb.lib和USBJmpTb.OBJ分別為EZUSB函數(shù)庫的二進(jìn)制文件和USB的中斷向量表。
⑥D(zhuǎn)SCR.a(chǎn)51是描述符文件,包括標(biāo)準(zhǔn)設(shè)備描述符、類描述符和用戶指定的描述符。
2.2.2 LabVIEW中調(diào)用VISA
當(dāng)進(jìn)行USB通信時(shí),VISA提供了兩類函數(shù)供Lab―VIEW調(diào)用:USB INSTR設(shè)備與USB RAW設(shè)備。USBINSTR設(shè)備是符合USBTMC協(xié)議的USB設(shè)備,可以通過使用USB INSTR類函數(shù)控制,通信時(shí)無需配置VISA;而USB RAW設(shè)備是指除了明確符合USBTMC規(guī)格的儀器之外的任何USB設(shè)備,通信時(shí)要配置VISA。該系統(tǒng)是USB RAW設(shè)備,故需要配置VISA。配置VISA的步驟如下:
①使用Driver Development wizard(驅(qū)動(dòng)程序開發(fā)向?qū)?創(chuàng)建INF文檔。打開VISA Driver Developer Wizard,然后選擇USB,進(jìn)入VISA DDW基本設(shè)備信息窗口(在這一步確認(rèn)USB設(shè)備的供應(yīng)商ID和產(chǎn)品ID),接下來填寫USB儀器前綴,用來識(shí)別本設(shè)備所用的相關(guān)文檔,這時(shí)INF文檔就被保存到指定的位置。
②安裝INF文檔及使用INF文檔的USB設(shè)備。
③使用VISA Interactive Control(VISA互動(dòng)控制工具)對(duì)設(shè)備進(jìn)行測試,以證實(shí)USB設(shè)備已正確安裝,并獲得USB設(shè)備的各屬性值。
USB設(shè)備安裝完畢后,就可以與VISA進(jìn)行簡單的通信。VISA支持3種類型的USB管道:控制、批量和中斷。VISA探測到USB儀器時(shí),會(huì)對(duì)儀器進(jìn)行自動(dòng)掃描,尋找各種類型的最低可用端點(diǎn)。VISA探測到最低可用端點(diǎn)后,即將該值賦予適當(dāng)?shù)腣ISA屬性。bulk in端點(diǎn)和bulk out端點(diǎn)分別存儲(chǔ)在VI_ATTR_USB_BULK_IN_PIPE屬性和VI_ATTR_USB_BULK_OUT_PIPE屬性之中。interrupt in端點(diǎn)存放在VI_ATTR_USB_INTR_IN_PIPE屬性之中。如果值為一1,則表示USB設(shè)備不支持這種類型的管道。對(duì)于控制型管道,只有端點(diǎn)O才受到支持。在LabVIEW中,應(yīng)使用“Write VISA Property(寫入VISA屬性)”節(jié)點(diǎn)。VI-SA有4種通過USB管道傳輸數(shù)據(jù)的功能。在能夠使用這些功能與設(shè)備進(jìn)行通信之前,還需要使用VISA USB屬性建立通信協(xié)議。使用VISA USB Contro1 In和VISA USBContro1 0ut來控制管道傳輸數(shù)據(jù),并用此來獲得USBRAW設(shè)備的各種描述符。另外使用VISA Read和VISAWrite選擇批量管道來傳輸目標(biāo)數(shù)據(jù)。通過上述方法成功實(shí)現(xiàn)了LabVIEW與USB驅(qū)動(dòng)程序的數(shù)據(jù)交換,從而實(shí)現(xiàn)了以LabVIEW為平臺(tái)的無線USB高速數(shù)據(jù)傳輸系統(tǒng)。
結(jié) 語
實(shí)驗(yàn)證明,采用無線USB系統(tǒng)進(jìn)行數(shù)據(jù)傳輸,將USB接口和短距離無線通信的優(yōu)點(diǎn)有機(jī)地結(jié)合起來,不僅能實(shí)現(xiàn)較高的數(shù)據(jù)傳輸率,而且改變了數(shù)據(jù)的傳輸方式,由傳統(tǒng)的有線傳輸改為無線傳輸,使傳輸系統(tǒng)更加方便、可靠、高速。除此之外,無線USB憑借其完美的性能和低廉的成本,可以滿足無線領(lǐng)域中非網(wǎng)絡(luò)端的需求,將成為未來無線通信的主流。采用基于NI―VISA驅(qū)動(dòng)USB接口和LabVIEW開發(fā)應(yīng)用程序的設(shè)計(jì)方法,降低了開發(fā)難度,縮短了開發(fā)時(shí)間,使得該系統(tǒng)性價(jià)比較高,通用性較好。隨著USB技術(shù)和短距離無線通信的進(jìn)一步發(fā)展,WUSB會(huì)表現(xiàn)出更好的性能,應(yīng)用范圍將日趨廣泛。集成了無線USB接口和LabVIEW語言的數(shù)據(jù)傳輸系統(tǒng)具有廣闊的發(fā)展前景,易于開發(fā)、數(shù)據(jù)處理簡單。
評(píng)論