<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>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 基于CH371的USB接口的虛擬示波器設計

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

作者: 時(shí)間:2018-08-09 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.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://寫(xiě)入上傳數據緩沖區

ch371_buf++; up_buf++;

}

}

CH371_LENGTH=len; file://寫(xiě)入本次數據的長(cháng)度

}

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://讀取狀態(tài)信息寄存器,判斷數據傳輸狀態(tài)

save_length=CH371_LENGTH; file://保持下傳數據長(cháng)度

down_buf=save_buffer;

ch371_buf=CH371_BUFFER;

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

{

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

down_buf++; ch371_buf++;

}

}

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

}

計算機端軟件:

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

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

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

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

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

Option Explicit ' 變量定義

Dim myReq As DEMO_REQ

Dim mOpen As Integer

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

Dim mLength As Long

mIndex = 0

mOpen = CH371OpenDevice(mIndex) ' 窗體加載時(shí)打開(kāi)設備

If mOpen = -1 Then

MsgBox 無(wú)法打開(kāi)CH371設備 ' 加載失敗提示

End If

myReq.mCommand = HFF ' 用戶(hù)定義命令

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

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

mLength = Len(myReq)

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

……

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

……

End Sub

四、結束語(yǔ)

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


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評論


相關(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>