摘 要: 針對特殊測試環(huán)境下傳統(tǒng)數(shù)據(jù)采集系統(tǒng)存儲、傳輸數(shù)據(jù)的不便,設(shè)計了一種基于雙模式USB接口的數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)以CH375為USB接口芯片,STC12C5A60S2單片機為處理器,構(gòu)成主從單片機系統(tǒng),用于某型數(shù)字式隨動系統(tǒng)的性能測試。該系統(tǒng)采用USB主/從雙模式的采集方案,可將數(shù)據(jù)保存于USB移動存儲設(shè)備或直接上傳至PC機,大大提高了測試效率。
關(guān)鍵詞: 數(shù)據(jù)采集; 雙模式; USB;多處理器
現(xiàn)代軍事、工業(yè)自動化設(shè)備功能不斷完善、集成化程度越來越高,這就對配套的數(shù)據(jù)采集以及檢測系統(tǒng)提出了更高要求。特別是條件惡劣、野外以及空間狹小封閉的測試環(huán)境中,不僅要求系統(tǒng)能夠快速穩(wěn)定地完成數(shù)據(jù)采集,同時更需要將采集的數(shù)據(jù)保存于大容量存儲設(shè)備中,方便后續(xù)的分析處理[1]。目前,由于高速率、低成本、易擴展的優(yōu)點,USB總線已成為計算機與外設(shè)之間數(shù)據(jù)交換的主流總線協(xié)議。采用USB接口的各種大容量移動存儲設(shè)備具有高速、抗震、穩(wěn)定的優(yōu)點,特別適用于以上的數(shù)據(jù)采集場合。
本文采用USB總線接口芯片CH375設(shè)計了具有主/從雙模式的多單片機數(shù)據(jù)采集系統(tǒng),既能完成與上位機的實時通訊,也可在環(huán)境條件惡劣時作為便攜式系統(tǒng)完成采集數(shù)據(jù)在USB移動存儲設(shè)備上的轉(zhuǎn)存。
1 雙模式USB接口芯片CH375簡介
CH375是南京沁恒有限公司生產(chǎn)的USB總線通用接口芯片,支持USB-HOST主機方式與USB-DEVICE/SLAVE設(shè)備方式,并可動態(tài)切換。CH375具有8 bit數(shù)據(jù)總線,讀、寫、片選控制以及中斷輸出,可以方便地掛接到單片機等控制器的系統(tǒng)總線上。主機模式下,芯片還提供了串行通訊方式,控制器可以通過串口操作USB移動存儲設(shè)備。此外,CH375內(nèi)置了處理Mass-Storange海量存儲設(shè)備的專用通訊協(xié)議固件,支持常用的USB全速設(shè)備,兼容USB2.0設(shè)備(U盤、閃盤以及USB移動硬盤)[2]。外部控制器可以通過該芯片直接以扇區(qū)為單位進行讀寫操作控制。如果需要處理與PC機兼容的文件系統(tǒng),可以利用廠家提供的C語言子程序庫實現(xiàn)USB存儲設(shè)備的文件級接口,從而降低開發(fā)難度、節(jié)約成本。
2 硬件系統(tǒng)設(shè)計[3]
本文介紹的數(shù)據(jù)采集系統(tǒng)用于某型數(shù)字式隨動系統(tǒng)的性能測試,其硬件框圖如圖1所示。
系統(tǒng)硬件主要由主控單片機、信號調(diào)理模塊、USB通訊模塊、從控單片機組以及鍵盤顯示模塊五部分構(gòu)成。工作時,先由主控單片機向從控單片機組發(fā)出測試開始指令,從控單片機組完成與被測隨動系統(tǒng)數(shù)控電路的通訊,一方面測試通訊情況是否正常,另一方面維持隨動系統(tǒng)正常工作。通訊測試結(jié)果經(jīng)串行口由從控機組送回主控機,作為性能測試的部分結(jié)果數(shù)據(jù)。隨動系統(tǒng)正常運行后,信號調(diào)理模塊將被測信號濾波整理,分批送入主控單片機的ADC輸入端,主控單片機經(jīng)CH375將被測數(shù)據(jù)寫入USB存儲設(shè)備或發(fā)送至PC機直接處理。
基于USB主機模式下文件級子程序庫編程的需要,主控單片機采用宏晶科技有限公司的STC12C5A60S2。該單片機工作頻率可達35 MHz,具有1280 B片內(nèi)RAM數(shù)據(jù)存儲器與60 KB片內(nèi)Flash程序存儲器,8通道10 bit高速ADC,2個全雙工異步串行口[4],完全滿足數(shù)據(jù)采集與CH375主/從雙模式的控制要求。
USB主機接口電路如圖2所示。CH375芯片工作于并口方式,將其TXD引腳接地,并行接口掛接到單片機系統(tǒng)總線上。其8 bit雙向數(shù)據(jù)總線D0~D7直接與單片機的P0數(shù)據(jù)總線相連,地址輸入線A0,讀、寫選通引腳RD、WR和片選信號CS,分別連接至單片機的P5.0~5.3引腳。中斷請求輸出INT連接到單片機的中斷輸入INT0引腳,中斷請求為低電平有效。
從控單片機組共有4片STC12C5A60S2,每片第一串口與主控機相連,實現(xiàn)主、從機數(shù)據(jù)與控制傳輸。其中3片經(jīng)并行口、1片經(jīng)第二串行口與隨動數(shù)控電路通訊。從控機與隨動系統(tǒng)數(shù)控電路進行并口通訊的各信號線包括:8 bit數(shù)據(jù)總線D0~D7,通訊啟動信號START,應(yīng)答信號ACK,同步信號SYN,中斷信號INT。
系統(tǒng)工作模式由主控單片機外接鍵盤動態(tài)切換。開機后默認工作于主機模式,等待USB存儲設(shè)備連接。單片機檢測存儲設(shè)備連接并判斷符合要求后,系統(tǒng)可正常測試采集數(shù)據(jù),并轉(zhuǎn)存于外接存儲設(shè)備,供后期導(dǎo)入PC機分析處理。測試條件允許時,也可將系統(tǒng)設(shè)置為與PC機直接相連的從機模式。這時,數(shù)據(jù)采集過程完全由上位機控制,可實現(xiàn)較為復(fù)雜的性能參數(shù)與故障分析測試,提高工作效率。
3 雙模式系統(tǒng)軟件設(shè)計
使用51系列兼容單片機C語言編程軟件Keil uVision3編寫單片機程序,完成數(shù)據(jù)采集、通訊控制、數(shù)據(jù)處理等功能。主程序流程如圖3所示。
3.1 主機模式程序設(shè)計
廠家提供了適用于單片機操作U盤的文件級子程序庫CH375HF6.LIB,將主機模式下處理USB存儲設(shè)備的API進行了封裝,支持FAT12、FAT16和FAT32文件系統(tǒng)[5]。該文件級子程序庫的所有API函數(shù)在調(diào)用后都有操作狀態(tài)返回,但不一定有應(yīng)答數(shù)據(jù),API參數(shù)在CH375HF6.H文件內(nèi)進行說明。調(diào)用的API子程序主要有:芯片初始化CH375Init( ),查詢設(shè)備準(zhǔn)備好CH375DiskReady(),查詢存儲設(shè)備信息CH375DiskQuery(),新建文件CH375FileCreate(),打開文件CH375FileOpen(),寫文件數(shù)據(jù)CH375ByteWrite(),關(guān)閉文件CH375FileClose()等[6]。操作U盤存儲采集數(shù)據(jù)的程序流程如圖4所示。
采用Keil編寫U盤操作程序時,需要將CH375HF6.LIB庫文件和CH375HF6.H添加到項目中。主機模式單片機程序基本框架如下:
CH375_WR_CMD_PORT(CMD_SET_USB_MODE);
//設(shè)置USB工作模式
CH375_WR_DAT_PORT(6);
//模式代碼,已啟用的USB主機模式 DelayuS(20);
//延時
while(CH375DiskConnect( )!=ERR_SUCCESS)
//查詢U盤是否連接
DelaymS(200); //延時,等待U盤工作正常
while(CH375DiskReady( )!=ERR_SUCCESS)
//檢查U盤是否準(zhǔn)備好
……
CH375DiskQuery( );
//查詢U盤信息:總?cè)萘?、剩余容量、文件系統(tǒng)
……
while ( i!=ERR_SUCCESS )
{strcpy( mCmdParam.Open.mPathName, "\\TEST" );
//目錄名
i=CH375FileOpen( );} //打開目錄
while(i!=ERR_SUCCESS)
{strcpy(mCmdParam.Open.mPathName,TestData);
//輸入文件名
i=CH375FileOpen( ); } //打開文件
……
mCmdParam.Write.mSectorCount=SecCount;
//寫入所有扇區(qū)的數(shù)據(jù)
current_buffer=& FILE_DATA_BUF[0];
//設(shè)置存放數(shù)據(jù)的緩沖區(qū)的起始地址
CH375FileWrite( ); //向文件寫入數(shù)據(jù)
……
CH375FileClose( ); //關(guān)閉文件
3.2 從機模式
此模式下,單片機通過CH375與PC機進行通訊,完成采集方案下載與數(shù)據(jù)上傳,程序流程圖如圖5所示。
單片機重新初始化CH375并設(shè)置為設(shè)備工作模式。測試芯片正常連接后,系統(tǒng)可接收PC機發(fā)送的數(shù)據(jù)。主控單片機根據(jù)下載的采集方案進行采集測試,并將結(jié)果數(shù)據(jù)存入采集緩沖區(qū),待緩沖區(qū)滿,則向PC機請求上傳。采集結(jié)束,數(shù)據(jù)全部上傳,系統(tǒng)完成一個從機模式采集工作過程。從機模式單片機程序基本框架如下:
CH375Init(); //初始化CH375
DelaymS(50); //延時
CH375_WR_CMD_PORT(CMD_SET_USB_MODE);
//設(shè)置USB工作模式
CH375_WR_DAT_PORT(2);
//模式代碼,已啟用的內(nèi)置固件USB設(shè)備模式 DelayuS(20);
//延時
CH375_WR_CMD_PORT(CMD_CHECK_EXIST);
//測試工作狀態(tài)
CH375_WR_DAT_PORT(0x57); //寫入測試數(shù)據(jù) DelayuS(10);
//延時
If(CH375_RD_DAT_PORT( )==0xA8);
//讀出測試數(shù)據(jù)是否按位取反,判斷工作狀態(tài)
……
CH375_WR_CMD_PORT(CMD_GET_STATUS);
//中斷子程序中,讀取中斷狀態(tài)命令
int_sn=CH375_RD_DAT_PORT( ); //讀中斷號 ……
if (int_sn ==USB_INT_USB_EP2_OUT)
CH375_WR_CMD_PORT(CMD_RD_USB_DATA);
//讀取上位機測試方案數(shù)據(jù)并釋放緩沖區(qū)
……
test_all( ); //按下載方案測試采集數(shù)據(jù)
……
While (flag_upload == 0) //數(shù)據(jù)上傳未結(jié)束
{
……
CH375_WR_CMD_PORT(CMD_WR_USB_DATA 7);
//批量上傳采集數(shù)據(jù)
CH375_WR_DAT_PORT(n); //寫入上傳字節(jié)數(shù)
for (i=0;i<n;i++) //每次上傳n字節(jié)
CH375_WR_DAT_PORT(*test_buf ++);
//上傳采集結(jié)果,指針自動加1
……
}
……
if (int_sn ==USB_INT_USB_EP2_IN)
//中斷子程序中,中斷號為端點2發(fā)送數(shù)據(jù)完畢
CH375_WR_CMD_PORT(CMD_UNLOCK_USB);
//釋放緩沖區(qū)
基于CH375雙模式USB接口芯片,設(shè)計完成了主/從雙模式的數(shù)據(jù)采集測試系統(tǒng)。充分利用接口即插即用、便攜式的特點,解決了特殊環(huán)境下的測試?yán)щy問題。同時,系統(tǒng)具有雙模式、多單片機的優(yōu)勢,能夠滿足高標(biāo)準(zhǔn)的測試需求,具有廣闊的應(yīng)用前景。
參考文獻
[1] 薛小鈴,李麗華.一種U盤存儲的數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].閩江學(xué)院學(xué)報, 2008,29(5):44-47.
[2] 南京沁恒電子有限公司.USB總線接口芯片CH375中文手冊[EB /OL].[2005].http://wch.cn/download/ch375ds1.pdf
[3] 蔣樂濤.某型數(shù)字化隨動系統(tǒng)分析及調(diào)測系統(tǒng)設(shè)計[D]. 南京:南京理工大學(xué),2008.
[4] 宏晶科技有限公司.STC12C5A60S2系列單片機器件手冊[EB/OL].[2009.6]. http://www.mcu-memory.com/
datasheet/stc/STC-AD-PDF/STC12C5A60S2.pdf
[5] 湯劍靈,高玉.USB通信芯片CH375在數(shù)據(jù)交換中的應(yīng)用[J].電子工程師,2007,33(10).
[6] 位耀東,馬海濤,董春波.基于雙模式USB接口的便攜式比色計設(shè)計[J].微計算機信息,2009,25(6-2).