胡之冉
(蘇州百得科技有限公司,江蘇 蘇州 215021)
LABVIEW通過動態鏈接庫實現對CY7C68013的控制
胡之冉
(蘇州百得科技有限公司,江蘇 蘇州 215021)
USB接口為主機與外設之間的數據傳輸提供了一種高效方便的雙向數據通道。已被廣泛的應用在工業控制與數據采集等領域。本文采用CY7C68013芯片組成的最小系統實現了一個基于USB的控制系統。
LABVIEW軟件; USB接口;動態鏈接庫
USB作為電腦與外設傳遞數據的一種常見接口,具有熱插拔,較快的數據傳輸率等優點得到了廣泛的應用。在工業控制應用中,采用基于USB接口的攝像頭及數據采集卡等硬件來構建便攜式測試系統已經成為了一種趨勢。本文采用USB專用芯片,通過芯片生產商提供的API函數庫,實現了一個USB控制系統,提高了開發效率。
USB的通訊協議比較復雜,在工程應用中往往采用現成的USB專用芯片,通過芯片生產商提供的API函數庫及固件程序框架來實現USB硬件通信功能。本文采用CY7C68013芯片組成的最小系統來實現USB通信控制系統,系統中使用該芯片的輸入輸出端口B作為外圍電路的控制端口。系統采用美國國家儀器的LabVIEW軟件開發上位應用程序,采用構建動態鏈接庫的方式來實現上位應用程序與USB固件程序的數據通信。通過上位應用程序向USB控制設備發出指令,將控制信號發送到CY7C68013的B端口實現控制外圍設備。
USB通信系統軟件通常由USB固件程序、驅動程序及上位應用軟件三個部分組成。上位應用程序通過驅動程序將數據傳遞給USB固件程序,由固件程序解析數據完成操作。
2.1 動態庫軟件的實現
動態鏈接庫是一個包含由多個程序同時使用代碼和數據的模塊,不可以獨立執行。本文中使用VC6.0集成開發環境來生成動態鏈接庫,通過向導生成的源代碼包含了動態鏈接庫基本的框架,用戶只需編寫硬件相關的代碼即可。發送數據函數如下:
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公司官網上提供的開發工具包已經包含了固件程序框架,本文基于原廠提供的框架經過修改完成最終的程序。
(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文件的指令解析函數
void SetupCommand(void)
{
void*dscr_ptr;
switch(SETUPDAT[1])
{
……..
case SC_CMD1:
DR_CMD1();
break;
……..
}
}
2.3 上位軟件的實現
LabVIEW是美國NI公司推出的基于圖形化的編程軟件,采用框圖編程方法,由類似儀表的控件界面及類似流程的框圖代碼組成。系統源代碼程序框圖如圖1,程序框圖中使用函數調用結點來調用編譯好的動態鏈接庫函數。

圖1 LabVIEW框圖源代碼
本文實現了一個由CY7C68013芯片組成的USB最小控制系統。文中使用的動態連接庫編程的方式提高了代碼的重用性能,為滿足不同上層軟件開發提供了方便。
以本文所介紹的代碼為基礎,經過適當修改可以進一步實現虛擬示波器等更為具體的測控系統,具有一定應用空間。
[1]鄧焱,王磊. LabVIEW7.1測試技術與儀器應用. 機械工業出版社,2004,08,01.
[2]雷振山. LabVIEW 7 Express 實用技術教程. 中國鐵道出版社,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