USB接口多路高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
USB從接口CY7C68001模塊
CY7C68001集成有USB2.0收發(fā)器(物理層)、USB2.0串行接口引擎SIE(鏈路層)、4kB的FIFO和電壓調(diào)節(jié)器、鎖相環(huán),支持高速(480Mb/s)或全速(12Mb/s)傳輸,3.3V操作電壓,具有同步與異步的FIFO接口,支持USB2.0協(xié)議要求的全部4種傳輸方式(控制傳輸、中斷傳輸、批量傳輸和同步傳輸),可以滿(mǎn)足用戶(hù)對(duì)各種數(shù)據(jù)傳輸方式的需求。片上的串行接口處理器(SIE)能完成大部分的USB協(xié)議操作,使用戶(hù)可以擺脫復(fù)雜的協(xié)議細(xì)節(jié),簡(jiǎn)化用戶(hù)配置代碼,加快程序開(kāi)發(fā)過(guò)程。但是由于不帶MCU內(nèi)核,所以USB應(yīng)用層協(xié)議應(yīng)該由DSP編程實(shí)現(xiàn),USB固件的加載必須靠DSP控制來(lái)完成。
本設(shè)計(jì)將CY7C68001映射為DSP的外設(shè),占用DSP的外擴(kuò)區(qū)域XINTF0空間,地址分配如下:FIFO2,F(xiàn)IFO4,F(xiàn)IFO6,F(xiàn)IFO8和命令口的地址分別為000,001,010,011,100,采用并行異步讀寫(xiě)方式完成二者之間數(shù)據(jù)和命令的交換。當(dāng)CY7C68001的地址線FIFOADR[2:0]為100時(shí),選中CY7C68001的命令口,通過(guò)CY7C68001的命令口,可以訪問(wèn)其內(nèi)部37個(gè)寄存器、Endpoint0緩沖器(64個(gè)字節(jié)FIFO)和描述表(500個(gè)字節(jié)FIFO)等。CY7C68001中斷信號(hào)INT#和4個(gè)狀態(tài)信號(hào)READY、FLAGA、FLAGB、FLAGC分別與DSP的外部中斷1 (XINT1), GPIOA0,GPIOA1,GPIOA2,GPIOA3相連。在實(shí)際應(yīng)用中,由于通信速度達(dá)480Mb/s,所以要對(duì)電源進(jìn)行退耦處理, 另外CY7C68001最好使用24MHz有源晶振以增強(qiáng)系統(tǒng)的抗干擾能力,硬件電路圖如圖4所示。
系統(tǒng)軟件設(shè)計(jì)
傳統(tǒng)的開(kāi)發(fā)USB應(yīng)用系統(tǒng)的步驟是:先用Windows DDK(設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)包)或第三方開(kāi)發(fā)工具(如Driver Studio)開(kāi)發(fā)USB驅(qū)動(dòng)程序,然后用Visual C++編寫(xiě)DLL(動(dòng)態(tài)連接庫(kù)),最后再調(diào)用DLL來(lái)開(kāi)發(fā)應(yīng)用程序。本文介紹一種簡(jiǎn)單快速開(kāi)發(fā)USB接口應(yīng)用系統(tǒng)的方法,它直接在LABVIEW環(huán)境下通過(guò)NI-VISA開(kāi)發(fā)能驅(qū)動(dòng)用戶(hù)USB系統(tǒng)的應(yīng)用程序,完全避開(kāi)了以前開(kāi)發(fā)USB驅(qū)動(dòng)程序的復(fù)雜性,大大縮短了開(kāi)發(fā)周期。
LABVIEW及其對(duì)VISA的調(diào)用
VISA(Virtual Instrument Software Architecture)是一個(gè)用來(lái)與各種儀器總線進(jìn)行通訊的高級(jí)應(yīng)用編程接口(API),不受平臺(tái)、總線和環(huán)境的限制,可用來(lái)對(duì)USB、GPIB、串口、VXI、PXI和以太網(wǎng)系統(tǒng)進(jìn)行配置、編程和調(diào)試。當(dāng)進(jìn)行USB通信時(shí),VISA提供了兩類(lèi)函數(shù)供LABVIEW調(diào)用:USB INSTR設(shè)備與USB RAW設(shè)備。USB INSTR設(shè)備是符合USBTMC協(xié)議的USB設(shè)備,可以通過(guò)使用USB INSTR類(lèi)函數(shù)控制,通信時(shí)無(wú)需配置NI-VISA;而USB RAW設(shè)備是指除了明確符合USBTMC規(guī)格的儀器之外的任何USB設(shè)備,通信時(shí)要配置NI-VISA。
(1)配置NI-VISA的步驟
①使用Driver Development wizard(驅(qū)動(dòng)程序開(kāi)發(fā)向?qū)?創(chuàng)建INF文檔;
②安裝INF文檔,并安裝使用INF文檔的USB設(shè)備;
③使用NI-VISA Interactive Control(NI-VISA互動(dòng)控制工具)對(duì)設(shè)備進(jìn)行測(cè)試,以證實(shí)USB設(shè)備已正確安裝,并獲得USB設(shè)備的各屬性值。
(2)與Nl-VISA相配合的LABVIEW模板中VI子節(jié)點(diǎn)
ViOpen,打開(kāi)并指定VISA resource name的設(shè)備的連接;
ViProperty,VISA設(shè)備的屬性子節(jié)點(diǎn),可以設(shè)置端點(diǎn)或傳輸方式;
ViWrite,向VISA resource name指定的設(shè)備寫(xiě)入數(shù)據(jù);
ViRead,從VISA resource name指定的設(shè)備讀出數(shù)據(jù);
ViClose,結(jié)束設(shè)備讀寫(xiě)并關(guān)閉與指定設(shè)備的連接。
(3)USB RAW設(shè)備讀寫(xiě)的操作
USB RAW設(shè)備的讀寫(xiě)流程圖如圖5所示。
評(píng)論