GPIB(General Purpose Interface Bus)接口總線最早由美國HP公司倡導實施,命名為HPIB。由于它良好的接口特性,很快在國際范圍內得到廣泛的應用,并被美國電氣與電子工程學會命名為IEEE488,在英國和日本等國家則稱為GPIB。雖然有多種叫法,但實際上除了機械標準有所不同外,其實質完全相同。它猶如一座橋梁,將配置GPIB總線接口的儀器與計算機緊密地結合起來。用它組成的系統方便、靈活、功能強及適應性好,可方便地應用到科研、工程、醫藥工程、醫藥及測試等領域。 美國NI公司生產的GPIB專用芯片TNT4882具有功能強、體積小、傳輸速度快及易與微處理器接口等特點,備受用戶的青睞。筆者運用TNT4882成功地開發了具備GPIB總線接口的多路程控電源。 圖1 TNT4882引腳圖 1 TNT4882芯片簡介 1.1 TNT4882引腳說明 TNT4882是NT公司開發的100腳PQFQ封裝的GPIB專用集成芯片,是IEEE488.2標準和GPIB收發功能的集成,且具有HS488增強功能。它的引腳如圖1所示。 VDD:電源,接+5V; GND:電源地; XTAL0、XTAL1:外接時鐘振蕩器引腳; DATA15~DATA8(ABUS)、DATA7~DATA0(BBUS):數據線,是TNT4882與外部CPU進行數據輸入/輸出的雙向總線,分為ABUS和BBUS,便于進行8位或16位數據操作; ABUSN:ABUS使能; BBUSN:BBUS使能; ABUS_OEN:當前正在通過ABUS讀數據; BBUS_OEN:當前正在通過BBUS讀數據; CSN:片選; ADDR4~0:內部寄存器地址線; RDN:讀信號; WRN:寫信號; CPUACC:指示TNT4882可以進行總線操作延時; RDY1:指示TNT4882完成當前總線操作; DRQ:DMA申請信號; DACKN:DMA申請應答信號; BURST_RDN:連續讀信號; FIFO_RDY:當前TNT4882內部FIFO至少已有8個有效數據; INTR:中斷申請信號; RAGED:地址映射選擇,有效則映射內部寄存器到不同的地址; MODE:TNT4882工作模式選擇; SWAPN:模式切換; RESETN:復位; TADCS:指示當前TNT4882選中為講者; LADCS:指示當前TNT4882選中為聽者; TRIG:指示當前TNT4882接收到外部觸發信號; DCAS:指示當前TNT4882接收到設備清零信號; REM:指示當前TNT4882進入遙控狀態; GPIB數據線8根:DIO8N~DIO1N,用于GPIB發布地址和命令,傳遞數據; GPIB管理總線5根:ATNN(ATTENTION,注意)線、IFCN(INTERFACE-CLEAR,接口清除)線、RENN(REMOTE ENABLE,程控使能)線、SRQN(SERVICE REQUEST,服務請求)線、NDACN(NOT DATA ACCEPTED,未接收到數據)線; GPIB掛鉤總線3根:DAVN(DATA VALID,數據有效)線、NRFDN(NOT READY FOR DATA,未準備好接收)線、NDACN(NOT DATA ACCEPTED,未接收到數據)線。TNT4882利用以上3條總線進行握手信息和數據傳送,以確保信息和數據的發布與傳送準確無誤。 1.2 TNT4882內部結構 TNT4882有三種模式:單片模式、Turbo+7210模式及Turbo+9914模式,而且Turbo+7210模式和Turbo+9914模式可以轉換到單片模式。單片模式是最簡單、最快速的結構。在設計中,選用單片模式。單片模式內部組成模塊如圖2所示。 單片模式內部結構由1個片內ISA邏輯接口,1個片內讀/寫控制器,1個片內先進先出的緩沖區,1個定時/計數器,1個片內中斷控制器,1個可配置狀態寄存器,1個IEEE488總線監視器,1個IEEE488總線功能接口,1個HS488電路功能接口,1個IEEE488收發器及1個IEEE488總線組成。 2 TNT4882功能控制和數據傳送/接收方式 2.1 TNT4882功能控制 TNT4882功能控制是通過寫命令字的方式實現的。這些命令字包括TNT4882復位、初始化、寄存器的讀/寫及中斷請求等命令。TNT4882內部有40多個用戶可訪問的8位寄存器。對這些寄存器的訪問是通過填在寄存器的讀/寫命令的地址進行的。這些寄存器包括基本配置、FIFO、中斷控制、定時/計數器、狀態寄存器、掛鉤和管理寄存器等。 2.2 TNT4882數據傳送/接收方式 當傳送數據開始時,TNT4882完成初始化。TNT4882初始化結束后,上位機和TNT4882進行數據傳送。上位機傳送計數器用來寄存上位機和FIFO之間所要傳送和接收的字節數。由NTN4882計數GPIB接口傳送和接收的字節。在上位機和FIFO間每傳送一個數據,上位機接口便將上位機傳送計數器的傳送計數值減一,并查詢計數值是否等于零。如果計數值等于零,上位機開始檢測結束條件,判斷是否結束。如果結束,數據傳送完成;否則,等待。 3 TNT4882在多路程控電源中的應用及軟件流程 多路程控電源是為航空航天電子設備及系統的自動測試設備(ATE)的技術需要而設計和研制的,是目前在高性能的航空航天自測系統中不可缺少的配套設備之一。該程控電源的輸出不但可滿足目前國內、國外不同供電體系的技術需要,而且還配套輸出多路的輔助電源,以滿足用戶的特殊需要。考慮到多路程控電源的通用性,且適于國際接口標準,在研制中加一GPIB總線接口,以使我們的多路程控電源能用在不同的控制系統中。多路程控電源硬件圖如圖3所示。 多路程控電源由數據采集、微控制器、電源模塊、GPIB總線接口及上位機組成。多路程控電源輸出的模擬量經變換后送到A/D轉換器進行轉換,轉換成數字量送到微控制器處理,同時微控制器還采集開關信號。微控制器對采集的信號處理后,通過GPIB總線送至上位機,實現上位機對電源狀態的實時監控;同時,上位機可以通過GPIB總線發送控制命令到微控制器,實現上位機對多路程控電源的程控。 3.1 TNT4882與微控制器接口及編程 TNT4882的D0~D7與89C51的P0口直接相連,ADDR0~ADDR5與微控制器的地址A0~A5相連,CS作TNT4882的片選信號,與在線可編程邏輯器件相接。WR、RD與微控制器的讀、與直接相連,對讀、寫寄存器進行讀、寫操作。由于TNT4882的中斷為高電平,與AT89C51的中斷申請極性相反,故需要通過反向后,才可與微控制器的中斷INT連接。 在本多路程控電源系統中,有兩個晶振:一個用于產生微控制器工作時鐘,一個用于產生TNT4882的工作時鐘。圖4是TNT4882與微控制器的接口原理圖。 用MCS51匯編語言編寫的GPIB收、發數據子程序見網絡補充版。 3.2 上位機編程 采用面向儀器與測控過程的交互式C/C++開發平臺——LabWindows/CVI(C for Virtual Instrumentation)語言。它是一種將C語言平臺與測控專業工具庫有機結合起來的開發平臺。它不僅具有集成開發平臺、交互式編程方法、功能面板和庫函數,而且還有簡單明了的友好圖形設計界面、完善的開發系統兼容性以及靈活的程序調試手段,為熟悉C/C++語言的開發人員建立數據采集系統、測量系統、檢測和過程監控系統提供了極大的便利。 多路程控電源與上位機通信的一個應用程序見網絡補充版。 結語 新一代具備GPIB接口總線的多路程控電源,符合IEEE-488.2數據接口標準。只要用標準的GPIB接口電纜與系統連接,就可以靈活地應用到任何系統中去,不受型號等因素的限制,并且具有很好的可擴展性,顯示了它特有的優越性。 |