<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于NI-VISA與LabVIEW的USB接口應用設計

基于NI-VISA與LabVIEW的USB接口應用設計

作者: 時(shí)間:2008-01-11 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要 通用串行總線(xiàn)()作為一種靈活的高速總線(xiàn)技術(shù),非常適合作為主機和外設之問(wèn)的通信,但其結構復雜。本文以一個(gè)采集多點(diǎn)溫度的實(shí)際系統為倒,闡述應用系統的總體設計思想及其層次結構,在實(shí)現方法上避開(kāi)傳統的Windows編程技術(shù),另辟蹊徑地給出使用來(lái)驅動(dòng)接口以應用進(jìn)行應用編程的方法。
關(guān)鍵詞 USB RAW設備


USB(Universal Serial Bus)接口是近年來(lái)應用在PC領(lǐng)域的新型接口技術(shù)。它基于單一的總線(xiàn)接口技術(shù)來(lái)滿(mǎn)足多種應用領(lǐng)域的需求;它的即插即用、支持熱插拔、易于擴展等特性極大地方便了用戶(hù)的使用,已逐漸成為現代數據傳輸的發(fā)展趨勢。
傳統的開(kāi)發(fā)USB應用系統的步驟是,先用WindowsDDK(設備驅動(dòng)程序開(kāi)發(fā)包)或第三方開(kāi)發(fā)工具(如DriverStudio)開(kāi)發(fā)USB驅動(dòng)程序,然后用Visual C++編寫(xiě)DLL(動(dòng)態(tài)連接庫),最后再調有DLL來(lái)開(kāi)發(fā)應用程序。顯然,這對Windows編程不熟悉的人來(lái)說(shuō)有一定的難度,何況USB驅動(dòng)程序的開(kāi)發(fā)難度很大。本文介紹一種簡(jiǎn)單、快速開(kāi)發(fā)USB接口應用系統的方法。它直接在環(huán)境下通過(guò)開(kāi)發(fā)能驅動(dòng)用戶(hù)USB系統的應用程序,完全避開(kāi)了以前開(kāi)發(fā)USB驅動(dòng)程序的復雜性,大大縮短了開(kāi)發(fā)周期。


1 NI-VISA簡(jiǎn)介
NI-VISA(Virtual Instrument Software Architec-ture,以下簡(jiǎn)稱(chēng)為“VISA”)是美國國家儀器NI(National Instrument)公司開(kāi)發(fā)的一種用來(lái)與各種儀器總線(xiàn)進(jìn)行通信的高級應用編程接口。VISA總線(xiàn)I/O軟件是一個(gè)綜合軟件包,不受平臺、總線(xiàn)和環(huán)境的限制,可用來(lái)對USB、GPIB、串口、VXI、PXI和以太網(wǎng)系統進(jìn)行配置、編程和調試。VISA是虛擬儀器系統I/O接口軟件?;谧缘紫蛏辖Y構模型的VISA創(chuàng )造了一個(gè)統一形式的I/O控制函數集。一方面,對初學(xué)者或是簡(jiǎn)單任務(wù)的設計者來(lái)說(shuō),VISA提供了簡(jiǎn)單易用的控制函數集,在應用形式上相當簡(jiǎn)單;另一方面,對復雜系統的組建者來(lái)說(shuō),VISA提供了非常強大的儀器控制功能與資源管理。


2 LabVIEW及其調用VISA的條件
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是NI公司開(kāi)發(fā)的一種基于圖形程序的編程語(yǔ)言。用戶(hù)利用創(chuàng )建和調用子程序的方法編寫(xiě)程序,使創(chuàng )建的程序模塊化,而且程序編制簡(jiǎn)單、直觀(guān)。一個(gè)LabVIEW程序分為3部分:前面板、框圖程序和圖標/接線(xiàn)端口。前面板用于模擬真實(shí)儀器的前面板;框圖程序是利用圖形語(yǔ)言對前面板上的控件對象(分為控制量和指示量?jì)煞N)進(jìn)行控制;圖標/接線(xiàn)端口用于把LabVIEW程序定義成一一個(gè)子程序,從而實(shí)現模塊化編程。
當進(jìn)行USB通信時(shí),VISA提供了兩類(lèi)函數供Lab-VIEW調用,USB INSTR設備與USB RAW設備。USBINSTR設備是符合USBTMC協(xié)議的USB設備,可以通過(guò)使用USB INSTR類(lèi)函數控制,通信時(shí)無(wú)需配置NI-VISA;而USB RAW設備是指除了明確符合USBTMC規格的儀器之外的任何USB設備,通信時(shí)要配置NI-VISA。
(1)配置NI-VISA的步驟
①使用Driver DevelopineInt Wizard(驅動(dòng)程序開(kāi)發(fā)向導)創(chuàng )建INF文檔;
②安裝INF文檔,并安裝使用INF文檔的USB設備;
③使用NI-VISA Interactive Control(NI-VISA互動(dòng)控制工具)對設備進(jìn)行測試,以證實(shí)USB設備已正確安裝,并獲得USB設備的各屬性值。
詳細過(guò)程可參考NI官方網(wǎng)站上免費提供的文檔《使用NI-VISA控制USB設備》。
(2)與NI-VISA相配合的LabVIEW橫板中VI子節點(diǎn)
ViOpen,打開(kāi)并指定VISA resource name的設備的連接。
ViProperty,VISA設備的屬性子節點(diǎn),可以設置端點(diǎn)或傳輸方式。
ViWnte,向VISA resource name指定的設備寫(xiě)入數據。
ViRead,從VISA resource name指定的設備讀出數據。
ViClose,結束設備讀寫(xiě)并關(guān)閉與指定設備的連接。
(3)USB RAW設備讀寫(xiě)的操作次序
USB RAW設備的讀寫(xiě)次序如圖l所示。

下面以一個(gè)USB接口的溫度采集系統為例,說(shuō)明基于NI-VISA驅動(dòng)的USB接口應用系統的設計與實(shí)現。


3 系統硬件結構
系統以Philips公司的增強型80C51單片機為核心,如圖2所示。這是一個(gè)多點(diǎn)溫度采集系統,核心器件是含有8 KB非易失Flash程序存儲器的P89C52,與標準80C51完全兼容。USB通信控制芯片采用Philips公司的PDIUSBD12芯片(簡(jiǎn)稱(chēng)“D12”)。它是一款較新型的專(zhuān)用USB通信控制芯片,符合通用串行總線(xiàn)USBl.1版規范,內部集成有串行接口引擎SIE、320字節FIFO存儲器、收發(fā)器和電壓調節器。前端溫度傳感器采用Dallas公司生產(chǎn)的DSl8820。它是一線(xiàn)式數字溫度傳感器,直接以數字量輸出給微處理器,可節省大量的引線(xiàn)和信號調理電路。DSl8820內部有一個(gè)光刻ROM。這個(gè)ROM中存有64位序列號。它可以看作足該DS18820的地址序列碼,所以多路溫度傳感器可以?huà)煸趌條總線(xiàn)上,共同占用單片機的1條I/O線(xiàn)即可實(shí)現接口。在提升單片機I/O線(xiàn)驅動(dòng)能力的前提下,理論上可以任意擴充檢測的溫度點(diǎn)數。

D12與單片機的接口共有兩種方式:多路地址/數據總線(xiàn)方式和單地址/數據總線(xiàn)方式。這里選擇了單地址/數據總線(xiàn)方式,因此,D12的ALE接為低電平,而A0腳與P89C52X2的端口P3.3相連。該端口控制D12的命令和數據狀態(tài):A0=1,表示數據總線(xiàn)上是命令;A0=0,表示數據總線(xiàn)上是數據。D12的數據總線(xiàn)直接與P0口相連,D12的中斷引腳INT_N與P89C52X2的INT0相連。當D12的外部巾斷有一位為1時(shí),INT_N輸出低電平,觸發(fā)P89C52X2的外部中斷。因為系統未采用DMA,所以D12的DMAcK_N引腳接高電平,EOT_N引腳通過(guò)電阻接到USB的+5 V,以正確檢測到USB連接;INT_N引腳加一個(gè)上拉電阻。因為D12有片內上電復位電路,故引腳RESET_N直接與電源引腳VCC相連。溫度傳感器DSl8820工作在外接電源工作方式,DQ引腳直接和P89C52X2的P1.0相連。
3.1 系統的工作原理
根據USB協(xié)議,任何傳輸都是由主機(host)開(kāi)始的,單片機的前臺工作就是等待。主機PC首先要發(fā)送令牌包給USB,D12接收到令牌包就給單片機發(fā)中斷,單片機進(jìn)入中斷服務(wù)程序。首先讀D12的中斷寄存器,判斷USB令牌包的類(lèi)型,然后執行相應的操作,因此,USB單片機程序主要就是中斷服務(wù)程序的編寫(xiě)。在USB單片機程序中要完成對各種令牌包的響應,主要是對端口的編程。
3.2 軟件部分的設計
系統的固件程序從功能上分為兩部分,整個(gè)編程在Keil C環(huán)境下完成。
(1)溫度傳感器D818820的讀取程序
DSl8820單線(xiàn)通信功能是分時(shí)實(shí)現的。它有很?chē)栏竦臅r(shí)序要求,對它的操作必須按協(xié)議進(jìn)行,即初始化→發(fā)ROM操作命令→發(fā)存儲器操作命令→數據處理。
(2)MCU和USB接口的通信程序
本程序使用D12的端點(diǎn)l和端點(diǎn)2進(jìn)行上位汁算機與MCU P89C52之間的命令和數據的傳輸。端點(diǎn)l和端點(diǎn)2設置成模式O(非同步方式)。其中端點(diǎn)1以中斷傳輸方式進(jìn)行命令的傳輸和應答,端點(diǎn)2以批量傳輸方式進(jìn)行數據的傳輸。端點(diǎn)1接收上位機發(fā)送過(guò)來(lái)的讀指令,端點(diǎn)2返回讀成功數據。
系統的固件程序編寫(xiě)以分層結構展開(kāi)。它是一種積木式結構,如圖3所示。

①硬件提取層:對單片機的I/O口、數據總線(xiàn)等硬件接口進(jìn)行操作。
②PDIUSBD12命令接口:對D12器件進(jìn)行操作的模塊子程序集。
③中斷服務(wù)程序:當D12向單片機發(fā)出中斷請求時(shí),讀取D12中斷傳輸來(lái)的數據,并設定事件標志“EPP-FLAGS”和Settup包數據緩沖區“CONROL_XFER”傳輸給主循環(huán)程序。
④標準設備請求處理程序:對USB的標準設備請求進(jìn)行處理。
⑤廠(chǎng)商請求處理程序:對用戶(hù)添加的廠(chǎng)商請求進(jìn)行處理。
⑥主程序:發(fā)出USB數據傳輸請求,處理總線(xiàn)事件和調用用戶(hù)自定義功能子程序。
以NI-VISA為驅動(dòng)的主機LabVIEW應用程序的設計,NI-VISA采用3.2版本,LabVIEW采用7.1版本。
整個(gè)應用程序的主框架使用了WHILF循環(huán)來(lái)進(jìn)行不斷的查詢(xún)。在程序的編寫(xiě)過(guò)程中,采用了類(lèi)似Windows程序中的事件驅動(dòng)機制,LabVIEW提供了這樣的結構――事件結構。各個(gè)消息的產(chǎn)生利用了各種界面控件并由Case選擇結構給出。程序框圖如圖4所示。

為了便于說(shuō)明USB操作次序,把圖4中事件結構展開(kāi),有圖5所示的具體USB操作次序。

在圖5中,USB RAW設備通信采用端點(diǎn)1以中斷傳輸方式接收上位機操作命令,協(xié)議可以自己約定。端點(diǎn)2以批量傳輸方式給上位機發(fā)回溫度數據。其中端點(diǎn)數“130”是對應十六進(jìn)制數“0082”的十進(jìn)制數,此數表示端點(diǎn)2批量輸入;而端點(diǎn)數“1”則是對應十六進(jìn)制數“0001”的十進(jìn)制數,此數表示端點(diǎn)1中斷輸出。
因為NI-VISA3.2版本不支持USB屬性“中斷輸出”(interrupt out),因此為了實(shí)現USB端點(diǎn)1的中斷輸出問(wèn)題,這里把USB屬性“批量輸出”(bulk out pipe)和“VI Write”節點(diǎn)組合在一起,來(lái)實(shí)現端點(diǎn)l中斷輸出。從NI-VISA3.3起,可以直接利用“中斷輸出”(interruptout)屬性來(lái)實(shí)現。


結語(yǔ)
經(jīng)實(shí)踐證明,采用基于NI-VISA驅動(dòng)的USB接口應用系統的設計非常容易,開(kāi)發(fā)難度低,對開(kāi)發(fā)者的要求不高;開(kāi)發(fā)出的系統穩定可靠,即使對Windows編程不熟悉的人也可以開(kāi)發(fā)出USB應用系統,它提供了另一種開(kāi)發(fā)USB驅動(dòng)應用程序的捷徑。

c++相關(guān)文章:c++教程


上拉電阻相關(guān)文章:上拉電阻原理


關(guān)鍵詞: NI-VISA LabVIEW USB 接口

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>