新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于CH371的USB接口的虛擬示波器設計

        基于CH371的USB接口的虛擬示波器設計

        作者: 時間:2018-08-09 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201808/386134.htm

        if(len!=0)

        {

        up_buf=ret_buffer; file://指向數據的地址

        ch371_buf=CH371_BUFFER; file://指向數據緩沖區

        for(i=0;i {

        *ch371_buf=*up_buf; file://寫入上傳數據緩沖區

        ch371_buf++; up_buf++;

        }

        }

        CH371_LENGTH=len; file://寫入本次數據的長度

        }

        file://********中斷子程序 使用中斷0 寄存器組2********

        void ch371_inter() interrupt 0 using 2{

        unsigned char *down_buf;

        unsigned char *ch371_buf;

        unsigned char i;

        IE0=0; file://清中斷標志

        if( (CH371_STATUS0x01) ==0 ){

        file://讀取狀態信息寄存器,判斷數據傳輸狀態

        save_length=CH371_LENGTH; file://保持下傳數據長度

        down_buf=save_buffer;

        ch371_buf=CH371_BUFFER;

        for(i=0;ifile://判斷下傳數據長度并處理

        {

        *down_buf=*ch371_buf; file://讀取一字節的下傳數據

        down_buf++; ch371_buf++;

        }

        }

        else CH371_LENGTH=0x0f; file://置上傳數據長度寄存器為15

        }

        計算機端軟件:

        計算機端軟件主要功能是模擬一個示波器的界面,實現數據的顯示以及滿足不同需要的分析功能,同時完成對數據采集硬件的參數設定。在這個設計中已經實現了基本的功能,虛擬示波器的界面如下圖。進一步開發后可以實現量程的自動轉換、數據的深度分析(譬如波形測量、頻譜分析等),甚至可以結合硬件的升級實現波形發生器、邏輯分析儀、掃頻儀、網絡分析儀等功能。

        圖四 虛擬儀器計算機軟件面板圖

        計算機端有關USB通信的開發不需要了解USB底層驅動,并且芯片生產商已經以動態鏈接庫的形式封裝好了面向功能應用的API函數,開發者可以在多種高級語言中調用,功能強大且靈活方便。CH371動態鏈接庫提供的API函數主要包括:設備管理API、數據傳輸API、中斷查詢API、I2C 操作API和直接控制API。

        其中設備管理API對于一般產品開發不需要用到;數據傳輸API是最重要最常用的一組函數,他提供了多種數據傳輸模式;中斷查詢API一般用于USB設備使用到中斷傳輸的場合,我們這里沒有用到;I2C 操作API用于對CH371控制的I2C器件進行讀寫,一般用于存放產品信息,我們這里也沒有用到;直接控制API是用于CH371直接輸入輸出信號,包括設置、輸入和輸出三部分組成,我們使用這一組API實現對LED進行控制。

        在實際應用中筆者使用VB6作為計算機端應用軟件的開發平臺,首先要將沁恒公司提供的驅動程序、動態鏈接庫拷貝到計算機中,再將動態鏈接庫的訪問入口及函數定義入口添加至VB6項目中,就是將提供的VB6實例程序中的module功能模塊添加到自己的工程項目下即可。此時對USB設備的通信編程就幾乎和訪問本地硬盤中的文件差不多了,具體差別可以通過分析實例程序的句法來解決。下面給出計算機接收與發送數據的相關程序。

        Option Explicit ' 變量定義

        Dim myReq As DEMO_REQ

        Dim mOpen As Integer

        Private Sub Form_Load( ) ' 窗口加載事件

        Dim mLength As Long

        mIndex = 0

        mOpen = CH371OpenDevice(mIndex) ' 窗體加載時打開設備

        If mOpen = -1 Then

        MsgBox 無法打開CH371設備 ' 加載失敗提示

        End If

        myReq.mCommand = HFF ' 用戶定義命令

        myReq.mBuffer(0) = H11 ' 用戶定義數據

        myReq.mBuffer(1) = H22 ' 用戶定義數據

        mLength = Len(myReq)

        CH371WriteData(mIndex, myReq, mLength) ' 通過CH371發送命令數據

        ……

        CH371ReadData(mIndex, myReq, mLength) ' 通過CH371接收應答數據

        ……

        End Sub

        四、結束語

        使用CH371設計的USB接口的虛擬示波器目前已完成基本功能的驗證,正在后期完善中,而且可以推出面向多種應用的不同級別的系列產品。實踐表明其技術性能良好,功能強大、體積小巧、使用簡便、價格低廉,是廣大電子愛好者、開發者的有力助手。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 丹凤县| 商城县| 平和县| 交口县| 灵丘县| 突泉县| 定陶县| 泽普县| 阳新县| 重庆市| 萍乡市| 永修县| 武宁县| 荥阳市| 江安县| 武宣县| 会宁县| 延安市| 同心县| 拉萨市| 呼和浩特市| 梅州市| 揭阳市| 达拉特旗| 武穴市| 黄冈市| 克拉玛依市| 南溪县| 曲周县| 全州县| 嘉义市| 丁青县| 开阳县| 拜泉县| 甘肃省| 武清区| 汪清县| 缙云县| 石狮市| 平湖市| 青浦区|