胡之冉
(蘇州百得科技有限公司,江蘇 蘇州 215021)
LABVIEW通過動態(tài)鏈接庫實現(xiàn)對CY7C68013的控制
胡之冉
(蘇州百得科技有限公司,江蘇 蘇州 215021)
USB接口為主機(jī)與外設(shè)之間的數(shù)據(jù)傳輸提供了一種高效方便的雙向數(shù)據(jù)通道。已被廣泛的應(yīng)用在工業(yè)控制與數(shù)據(jù)采集等領(lǐng)域。本文采用CY7C68013芯片組成的最小系統(tǒng)實現(xiàn)了一個基于USB的控制系統(tǒng)。
LABVIEW軟件; USB接口;動態(tài)鏈接庫
USB作為電腦與外設(shè)傳遞數(shù)據(jù)的一種常見接口,具有熱插拔,較快的數(shù)據(jù)傳輸率等優(yōu)點得到了廣泛的應(yīng)用。在工業(yè)控制應(yīng)用中,采用基于USB接口的攝像頭及數(shù)據(jù)采集卡等硬件來構(gòu)建便攜式測試系統(tǒng)已經(jīng)成為了一種趨勢。本文采用USB專用芯片,通過芯片生產(chǎn)商提供的API函數(shù)庫,實現(xiàn)了一個USB控制系統(tǒng),提高了開發(fā)效率。
USB的通訊協(xié)議比較復(fù)雜,在工程應(yīng)用中往往采用現(xiàn)成的USB專用芯片,通過芯片生產(chǎn)商提供的API函數(shù)庫及固件程序框架來實現(xiàn)USB硬件通信功能。本文采用CY7C68013芯片組成的最小系統(tǒng)來實現(xiàn)USB通信控制系統(tǒng),系統(tǒng)中使用該芯片的輸入輸出端口B作為外圍電路的控制端口。系統(tǒng)采用美國國家儀器的LabVIEW軟件開發(fā)上位應(yīng)用程序,采用構(gòu)建動態(tài)鏈接庫的方式來實現(xiàn)上位應(yīng)用程序與USB固件程序的數(shù)據(jù)通信。通過上位應(yīng)用程序向USB控制設(shè)備發(fā)出指令,將控制信號發(fā)送到CY7C68013的B端口實現(xiàn)控制外圍設(shè)備。
USB通信系統(tǒng)軟件通常由USB固件程序、驅(qū)動程序及上位應(yīng)用軟件三個部分組成。上位應(yīng)用程序通過驅(qū)動程序?qū)?shù)據(jù)傳遞給USB固件程序,由固件程序解析數(shù)據(jù)完成操作。
2.1 動態(tài)庫軟件的實現(xiàn)
動態(tài)鏈接庫是一個包含由多個程序同時使用代碼和數(shù)據(jù)的模塊,不可以獨立執(zhí)行。本文中使用VC6.0集成開發(fā)環(huán)境來生成動態(tài)鏈接庫,通過向?qū)傻脑创a包含了動態(tài)鏈接庫基本的框架,用戶只需編寫硬件相關(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)過修改完成最終的程序。
(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 上位軟件的實現(xiàn)
LabVIEW是美國NI公司推出的基于圖形化的編程軟件,采用框圖編程方法,由類似儀表的控件界面及類似流程的框圖代碼組成。系統(tǒng)源代碼程序框圖如圖1,程序框圖中使用函數(shù)調(diào)用結(jié)點來調(diào)用編譯好的動態(tài)鏈接庫函數(shù)。
圖1 LabVIEW框圖源代碼
本文實現(xiàn)了一個由CY7C68013芯片組成的USB最小控制系統(tǒng)。文中使用的動態(tài)連接庫編程的方式提高了代碼的重用性能,為滿足不同上層軟件開發(fā)提供了方便。
以本文所介紹的代碼為基礎(chǔ),經(jīng)過適當(dāng)修改可以進(jìn)一步實現(xiàn)虛擬示波器等更為具體的測控系統(tǒng),具有一定應(yīng)用空間。
[1]鄧焱,王磊. LabVIEW7.1測試技術(shù)與儀器應(yīng)用. 機(jī)械工業(yè)出版社,2004,08,01.
[2]雷振山. LabVIEW 7 Express 實用技術(shù)教程. 中國鐵道出版社,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-),男,工程碩士,研究方向為自動化控制,從事制造工程方面的工作。
2015-11-24