胡之冉
(蘇州百得科技有限公司,江蘇 蘇州 215021)
LABVIEW通過(guò)動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)對(duì)CY7C68013的控制
胡之冉
(蘇州百得科技有限公司,江蘇 蘇州 215021)
USB接口為主機(jī)與外設(shè)之間的數(shù)據(jù)傳輸提供了一種高效方便的雙向數(shù)據(jù)通道。已被廣泛的應(yīng)用在工業(yè)控制與數(shù)據(jù)采集等領(lǐng)域。本文采用CY7C68013芯片組成的最小系統(tǒng)實(shí)現(xiàn)了一個(gè)基于USB的控制系統(tǒng)。
LABVIEW軟件; USB接口;動(dòng)態(tài)鏈接庫(kù)
USB作為電腦與外設(shè)傳遞數(shù)據(jù)的一種常見接口,具有熱插拔,較快的數(shù)據(jù)傳輸率等優(yōu)點(diǎn)得到了廣泛的應(yīng)用。在工業(yè)控制應(yīng)用中,采用基于USB接口的攝像頭及數(shù)據(jù)采集卡等硬件來(lái)構(gòu)建便攜式測(cè)試系統(tǒng)已經(jīng)成為了一種趨勢(shì)。本文采用USB專用芯片,通過(guò)芯片生產(chǎn)商提供的API函數(shù)庫(kù),實(shí)現(xiàn)了一個(gè)USB控制系統(tǒng),提高了開發(fā)效率。
USB的通訊協(xié)議比較復(fù)雜,在工程應(yīng)用中往往采用現(xiàn)成的USB專用芯片,通過(guò)芯片生產(chǎn)商提供的API函數(shù)庫(kù)及固件程序框架來(lái)實(shí)現(xiàn)USB硬件通信功能。本文采用CY7C68013芯片組成的最小系統(tǒng)來(lái)實(shí)現(xiàn)USB通信控制系統(tǒng),系統(tǒng)中使用該芯片的輸入輸出端口B作為外圍電路的控制端口。系統(tǒng)采用美國(guó)國(guó)家儀器的LabVIEW軟件開發(fā)上位應(yīng)用程序,采用構(gòu)建動(dòng)態(tài)鏈接庫(kù)的方式來(lái)實(shí)現(xiàn)上位應(yīng)用程序與USB固件程序的數(shù)據(jù)通信。通過(guò)上位應(yīng)用程序向USB控制設(shè)備發(fā)出指令,將控制信號(hào)發(fā)送到CY7C68013的B端口實(shí)現(xiàn)控制外圍設(shè)備。
USB通信系統(tǒng)軟件通常由USB固件程序、驅(qū)動(dòng)程序及上位應(yīng)用軟件三個(gè)部分組成。上位應(yīng)用程序通過(guò)驅(qū)動(dòng)程序?qū)?shù)據(jù)傳遞給USB固件程序,由固件程序解析數(shù)據(jù)完成操作。
2.1 動(dòng)態(tài)庫(kù)軟件的實(shí)現(xiàn)
動(dòng)態(tài)鏈接庫(kù)是一個(gè)包含由多個(gè)程序同時(shí)使用代碼和數(shù)據(jù)的模塊,不可以獨(dú)立執(zhí)行。本文中使用VC6.0集成開發(fā)環(huán)境來(lái)生成動(dòng)態(tài)鏈接庫(kù),通過(guò)向?qū)傻脑创a包含了動(dòng)態(tài)鏈接庫(kù)基本的框架,用戶只需編寫硬件相關(guān)的代碼即可。發(fā)送數(shù)據(jù)函數(shù)如下:
USBDLL_API void USBCMD(char data)
{
ept->Target = TGT_DEVICE;
ept->ReqType = REQ_VENDOR;
ept->Direction = DIR_TO_DEVICE;
ept->ReqCode = 0xA1;
ept->Value = 0;
ept->Index = 0;
PUCHAR buf=new UCHAR[2];
ZeroMemory(buf, 2);
LONG buflen = 2;
buf[0]=0xA1;
buf[1]=data;
ept->XferData(buf,buflen);
}
2.2 固件軟件的編寫
Cypress公司官網(wǎng)上提供的開發(fā)工具包已經(jīng)包含了固件程序框架,本文基于原廠提供的框架經(jīng)過(guò)修改完成最終的程序。
(1)在periph.c文件中添加用戶自定義命令
BOOL DR_CMD1(void)
{
EP0BUF[0]=0xA1;
EP0BCH=0;
EP0BCL=2;
EZUSB_Delay(10);
IOB=EP0BUF[1];
EP0CS |= bmHSNAK;return(1);
}
(2)在lp.h文件的頭部添加用戶指令常量
#define SC_CMD1 0xa1
(3)修改cydown.c文件的指令解析函數(shù)
void SetupCommand(void)
{
void*dscr_ptr;
switch(SETUPDAT[1])
{
……..
case SC_CMD1:
DR_CMD1();
break;
……..
}
}
2.3 上位軟件的實(shí)現(xiàn)
LabVIEW是美國(guó)NI公司推出的基于圖形化的編程軟件,采用框圖編程方法,由類似儀表的控件界面及類似流程的框圖代碼組成。系統(tǒng)源代碼程序框圖如圖1,程序框圖中使用函數(shù)調(diào)用結(jié)點(diǎn)來(lái)調(diào)用編譯好的動(dòng)態(tài)鏈接庫(kù)函數(shù)。
圖1 LabVIEW框圖源代碼
本文實(shí)現(xiàn)了一個(gè)由CY7C68013芯片組成的USB最小控制系統(tǒng)。文中使用的動(dòng)態(tài)連接庫(kù)編程的方式提高了代碼的重用性能,為滿足不同上層軟件開發(fā)提供了方便。
以本文所介紹的代碼為基礎(chǔ),經(jīng)過(guò)適當(dāng)修改可以進(jìn)一步實(shí)現(xiàn)虛擬示波器等更為具體的測(cè)控系統(tǒng),具有一定應(yīng)用空間。
[1]鄧焱,王磊. LabVIEW7.1測(cè)試技術(shù)與儀器應(yīng)用. 機(jī)械工業(yè)出版社,2004,08,01.
[2]雷振山. LabVIEW 7 Express 實(shí)用技術(shù)教程. 中國(guó)鐵道出版社,2004, 04.
(P-02)
LABVIEW achieves CY7C68013 control via dynamic link library
TP273
1009-797X(2016)02-0093-02
A
10.13520/j.cnki.rpte.2016.02.035
胡之冉(1976-),男,工程碩士,研究方向?yàn)樽詣?dòng)化控制,從事制造工程方面的工作。
2015-11-24