摘要: 本文介紹了基于Windows CE 的PC104模塊與基于MCS51單片機的GPIB接口構成自動測試儀器的實現(xiàn)方法,其中GPIB接口與單片機間的數(shù)據(jù)傳輸和PC104模塊與單片機之間的串行通信是系統(tǒng)實現(xiàn)的關鍵。本文詳細介紹了整個系統(tǒng)的軟件與硬件設計。
關鍵詞:GPIB接口;PC104;Windows CE;串行通信;多線程
1 引言
目前,先進的嵌入式工業(yè)計算機PC104,以其優(yōu)良的品質(zhì)、高可靠性及模塊化。廣泛應用于工業(yè)控制、航空航天、智能儀器儀表、通信數(shù)控、自動化生產(chǎn)設備、數(shù)據(jù)采集、便攜式計算機等領域。在PC104模塊上一般運行實時操作系統(tǒng)(RTOS),Windows CE是一緊湊、高效和可擴展的操作系統(tǒng),它是面向32位移動智能設備的模塊化搶先式多任務實時嵌入式操作系統(tǒng);赪indows CE的PC104模塊能夠方便快速構建新一代內(nèi)存少體積小的智能設備。而GPIB總線又稱IEEE-488總線標準,是組建自動測試系統(tǒng)的通用國際標準接口。作為一種用途廣、功能強的8位數(shù)據(jù)通道并行接口標準,特別適用于實時控制與快速數(shù)據(jù)采集等場合。隨著通用并行接口的發(fā)展與測量自動化上的廣泛應用,為了使儀器能夠與裝配有GPIB接口的儀器構成自動測試系統(tǒng),GPIB接口是必不可少的。本文首先介紹如何將GPIB接口與PC104模塊進行硬件連接,然后講述了單片機中進行數(shù)據(jù)轉換的軟件編程思路和Windows CE下的串行口軟件編程方法。
2 硬件實現(xiàn)
用MCS-51單片機對來自PC104模塊的串口信號和來自通用接口電路上的數(shù)據(jù)進行轉發(fā)是本系統(tǒng)的關鍵。通用接口電路由GPIB接口芯片和信號驅動芯片構成,常用的GPIB接口轉換芯片有幾種,如MC68488,intel 8291、8292、8293及PD7210等,本文以intel 8291為例介紹數(shù)據(jù)轉換的方法。
利用單片機的串口,將接收到的由PC104計算機發(fā)出的來自串行接口芯片的GPIB命令,按IEEE488的規(guī)則,通過GPIB接口芯片發(fā)送到GPIB總線,并將從總線上接收到的數(shù)據(jù)從接口芯片中取回,經(jīng)由串行接口芯片發(fā)送到PC104模塊上的RS-232C串口。其硬件框圖如圖1所示:
3 軟件設計
3.1 MCS-51單片機的GPIB接口通信編程
這部分的軟件編程主要是實現(xiàn)將RS-232接口收到的命令轉化為IEEE488接口的命令,即按IEEE488的規(guī)則將命令送出,同時將從IEEE488接口傳來的數(shù)據(jù)轉發(fā)至串口。
① 設備初始化
為了接口芯片的正常工作,需要正確地初始化GPIB接口芯片。a.系統(tǒng)復位,發(fā)送本地芯片復位命令;b.設置設備地址;c.設置系統(tǒng)時鐘;d.設置中斷條件;e.設置數(shù)據(jù)接收發(fā)送條件;f.設置數(shù)據(jù)接收應答模式;e.發(fā)出立即執(zhí)行命令。還要設置串口通信方式如下,1位起始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗,波特率38400bit/s。傳輸數(shù)據(jù)采用ASCII模式。指令形式的格式為“SYN****@”,其中‘SYN’和‘@’分別表明該指令的起始和結束,‘****’為指令內(nèi)容。
② 基本功能的實現(xiàn)
下面講述了將GPIB接口信號轉發(fā)到串口的方法,從串口到GPIB接口數(shù)據(jù)的傳輸可以用類似的方法實現(xiàn)。對來自GPIB總線上的信號接收采用中斷方式,并在收到停止位時置位結束標志,以通知主程序進行串口數(shù)據(jù)發(fā)送。中斷接收子程序的軟件流程如圖2所示
當主程序根據(jù)結束標志檢測到有新的來自GPIB總線上的數(shù)據(jù)時,通過串行口將數(shù)據(jù)發(fā)送到RS232總線上由PC104接收。在沒有檢測到結束標志時主程序處于等待狀態(tài)。其軟件流程圖如圖3所示:
3.2 Windows CE 下PC104模塊的串口通信編程
Windows CE打開與關閉串口設備與打開與關閉文件的操作相同,所以串口編程使用與文件I/O操作完全相同的函數(shù),即使用文件I/O函數(shù)CreateFile、ReadFile、WriteFile、CloseHandle訪問串口。用CreateFile打開串口,一旦串口被打開和配置后就可以用WriteFile向串口發(fā)送數(shù)據(jù),也可以用ReadFile從串口讀出數(shù)據(jù)。由于Windows CE 下只支持同步文件訪問,不支持重疊I/O。使用多線程管理串口通信可以充分利用資源,提高數(shù)據(jù)處理速度。創(chuàng)建線程監(jiān)聽串口并使用消息傳遞機制通知串口處理函數(shù)讀取接收緩沖區(qū)的數(shù)據(jù)。
PC104串口通信的基本步驟如下:
使用SetupComm函數(shù)設置參數(shù)設備參數(shù),讀寫緩沖區(qū)大小。SetCommMask函數(shù)設定監(jiān)視事件EV_RXCHAR,該事件表示接受到任何字符并放進接受緩沖區(qū)。SetCommTimeouts函數(shù)設置時間超時間隔與總超時時間,將時間超時間隔設為最大,把總超時設為0,導致ReadFile立即返回并完成操作。通過設置超時時間,將需要等待的讀寫操作阻塞在驅動程序內(nèi)部的事件對象中,節(jié)省了在串行發(fā)送和接收操作中的CPU資源。用SetCommState函數(shù)將DCB結構重新配置于串口設備。
③ 如果成功設置串口,啟動監(jiān)視器串口線程,線程函數(shù)為CommProc,并將當前指針This作為參數(shù)傳給CommProc,啟動線程的方法如下:


4 結論
PC104上的串口通信程序在上位機中使用Embeded Visual C++3.0編寫,并下載到安裝有Windows CE的目標機PC104中,按圖1將系統(tǒng)連接好,并將GPIB接口連到裝有GPIB板卡的主控計算機。運行串口通信程序,并在主控計算機中運行控制程序,PC104模塊與主控計算機間通過GPIB總線進行正常通信。采用這種硬件和軟件設計方式構成的測控系統(tǒng)能夠應用于各種儀器和裝置中,并且具有設計簡單、操作方便、通信可靠等優(yōu)點,非常適合各種自動測試系統(tǒng)。





