基于LabVIEW德USB實(shí)時(shí)數據采集處理系統實(shí)現
3.2 USB采集卡的軟件構成本文引用地址:http://dyxdggzs.com/article/201701/337652.htm
在USB 的Firmware中,采取同步傳輸(Isochronous Transactions)和塊傳輸(Bulk Transactions)兩種傳輸方式。同步方式用來(lái)實(shí)時(shí)傳送采集的數據,塊傳輸主要用來(lái)傳輸主機命令信號和USB的狀態(tài)信息。塊傳輸中利用端點(diǎn)(Endpoint)2。兩種傳輸方式的核心中斷程序如下:
void ISR_Sutok(void)interrupt 0 //塊傳輸方式
{
//initialize the couters in the 8051
TMOD=0x05;
TCON=0x10;
TH0=0;
TL0=0;
Thb=0,
TH0=0;
TL0=0;
thb=0;
EZUSB_IRQ_CLEAR();
USBIRQ=bmSUTOK; //Clear SUTOK IRQ
}
void ISR_Sof(void)interrupt 0 //同步傳輸方式
{
if(TCON&0x21){ //Deal with the counter overflow
TH0=0;
Tl0=0;
THB++;
TCON&=0xdf;}
IN8DATA=TH0; //3 Bytes counter result
IN8DATA=TL0;
IN8DATA=THB;
EZUSB_IRQ_CLEAR();
USBIRQ=bmSOF; //Clear SOF IRQ
}
在LabVIEW 應用程序中設計了一Usb.dll文件作為L(cháng)abVIEW與USB的驅動(dòng)程序。由于EZ-USB開(kāi)發(fā)系統中已經(jīng)提供了底層驅動(dòng)程序(GPD)接口函數,用戶(hù)只需調用這些函數即可與USB設備連接。因此在DLL的編制中只需調用它提供的函數,大大節約了開(kāi)發(fā)時(shí)間,提高了開(kāi)發(fā)速度。創(chuàng )建的Usb.dll文件中包含了如下五個(gè)輸出函數,功能說(shuō)明如表1所示。
表1 Usb.dll包含函數的功能說(shuō)明
Control 主機對USB設備的控制
ReadResult 獲取USB發(fā)送到主機的數據
StartIsoStream 啟動(dòng)設備的同步傳輸流
StartThread 得到標準設備的設備描述符
StopThread 關(guān)閉設備的同步傳輸流
其定義如下:
LPSTR_declspec(dllexport)_stdcall Control(int input);
int_declspec(dllexport)_stdcall ReadResult(void);
int_declspec(dllexport)_stdcall StartIsoStream(void);
int_declspec(dllexport)_stdcall StartThread(void);
int_declspec(dllexport)_stdcall StopThread(void);
開(kāi)啟設備和獲取采集數據的過(guò)程如圖2所示。它的主要功能有:開(kāi)啟或關(guān)閉USB設備、檢測USB設備、設置USB數據傳輸管道(pipe)和端點(diǎn)(endpoint)、實(shí)時(shí)從USB接口采集數據、顯示并分析數據。
評論