虛擬示波器的數(shù)據(jù)采集器解析方案
file://********中斷子程序 使用中斷0 寄存器組2********
void ch371_inter() interrupt 0 using 2{
unsigned char *down_buf;
unsigned char *ch371_buf;
unsigned char i;
IE0=0; file://清中斷標(biāo)志
if( (CH371_STATUS0x01) ==0 ){
file://讀取狀態(tài)信息寄存器,判斷數(shù)據(jù)傳輸狀態(tài)
save_length=CH371_LENGTH; file://保持下傳數(shù)據(jù)長度
down_buf=save_buffer;
ch371_buf=CH371_BUFFER;
for(i=0;ifile://判斷下傳數(shù)據(jù)長度并處理
{
*down_buf=*ch371_buf; file://讀取一字節(jié)的下傳數(shù)據(jù)
down_buf++; ch371_buf++;
}
}
else CH371_LENGTH=0x0f; file://置上傳數(shù)據(jù)長度寄存器為15
}
計算機(jī)端軟件:
計算機(jī)端軟件主要功能是模擬一個示波器的界面,實(shí)現(xiàn)數(shù)據(jù)的顯示以及滿足不同需要的分析功能,同時完成對數(shù)據(jù)采集硬件的參數(shù)設(shè)定。在這個設(shè)計中已經(jīng)實(shí)現(xiàn)了基本的功能,虛擬示波器的界面如下圖。進(jìn)一步開發(fā)后可以實(shí)現(xiàn)量程的自動轉(zhuǎn)換、數(shù)據(jù)的深度分析(譬如波形測量、頻譜分析等),甚至可以結(jié)合硬件的升級實(shí)現(xiàn)波形發(fā)生器、邏輯分析儀、掃頻儀、網(wǎng)絡(luò)分析儀等功能。
圖四 虛擬儀器計算機(jī)軟件面板圖
計算機(jī)端有關(guān)USB通信的開發(fā)不需要了解USB底層驅(qū)動,并且芯片生產(chǎn)商已經(jīng)以動態(tài)鏈接庫的形式封裝好了面向功能應(yīng)用的API函數(shù),開發(fā)者可以在多種高級語言中調(diào)用,功能強(qiáng)大且靈活方便。CH371動態(tài)鏈接庫提供的API函數(shù)主要包括:設(shè)備管理API、數(shù)據(jù)傳輸API、中斷查詢API、I2C 操作API和直接控制API。
其中設(shè)備管理API對于一般產(chǎn)品開發(fā)不需要用到;數(shù)據(jù)傳輸API是最重要最常用的一組函數(shù),他提供了多種數(shù)據(jù)傳輸模式;中斷查詢API一般用于USB設(shè)備使用到中斷傳輸?shù)膱龊?,我們這里沒有用到;I2C 操作API用于對CH371控制的I2C器件進(jìn)行讀寫,一般用于存放產(chǎn)品信息,我們這里也沒有用到;直接控制API是用于CH371直接輸入輸出信號,包括設(shè)置、輸入和輸出三部分組成,我們使用這一組API實(shí)現(xiàn)對LED進(jìn)行控制。
在實(shí)際應(yīng)用中筆者使用VB6作為計算機(jī)端應(yīng)用軟件的開發(fā)平臺,首先要將沁恒公司提供的驅(qū)動程序、動態(tài)鏈接庫拷貝到計算機(jī)中,再將動態(tài)鏈接庫的訪問入口及函數(shù)定義入口添加至VB6項目中,就是將提供的VB6實(shí)例程序中的module功能模塊添加到自己的工程項目下即可。此時對USB設(shè)備的通信編程就幾乎和訪問本地硬盤中的文件差不多了,具體差別可以通過分析實(shí)例程序的句法來解決。下面給出計算機(jī)接收與發(fā)送數(shù)據(jù)的相關(guān)程序。
c++相關(guān)文章:c++教程
晶振相關(guān)文章:晶振原理
評論