基于雙模式USB接口的多處理器數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
系統(tǒng)工作模式由主控單片機(jī)外接鍵盤(pán)動(dòng)態(tài)切換。開(kāi)機(jī)后默認(rèn)工作于主機(jī)模式,等待USB存儲(chǔ)設(shè)備連接。單片機(jī)檢測(cè)存儲(chǔ)設(shè)備連接并判斷符合要求后,系統(tǒng)可正常測(cè)試采集數(shù)據(jù),并轉(zhuǎn)存于外接存儲(chǔ)設(shè)備,供后期導(dǎo)入PC機(jī)分析處理。測(cè)試條件允許時(shí),也可將系統(tǒng)設(shè)置為與PC機(jī)直接相連的從機(jī)模式。這時(shí),數(shù)據(jù)采集過(guò)程完全由上位機(jī)控制,可實(shí)現(xiàn)較為復(fù)雜的性能參數(shù)與故障分析測(cè)試,提高工作效率。
3 雙模式系統(tǒng)軟件設(shè)計(jì)
使用51系列兼容單片機(jī)C語(yǔ)言編程軟件Keil uVision3編寫(xiě)單片機(jī)程序,完成數(shù)據(jù)采集、通訊控制、數(shù)據(jù)處理等功能。主程序流程如圖3所示。本文引用地址:http://yuyingmama.com.cn/article/187811.htm

3.1 主機(jī)模式程序設(shè)計(jì)
廠家提供了適用于單片機(jī)操作U盤(pán)的文件級(jí)子程序庫(kù)CH375HF6.LIB,將主機(jī)模式下處理USB存儲(chǔ)設(shè)備的API進(jìn)行了封裝,支持FAT12、FAT16和FAT32文件系統(tǒng)[5]。該文件級(jí)子程序庫(kù)的所有API函數(shù)在調(diào)用后都有操作狀態(tài)返回,但不一定有應(yīng)答數(shù)據(jù),API參數(shù)在CH375HF6.H文件內(nèi)進(jìn)行說(shuō)明。調(diào)用的API子程序主要有:芯片初始化CH375Init( ),查詢?cè)O(shè)備準(zhǔn)備好CH375DiskReady(),查詢存儲(chǔ)設(shè)備信息CH375DiskQuery(),新建文件CH375FileCreate(),打開(kāi)文件CH375FileOpen(),寫(xiě)文件數(shù)據(jù)CH375ByteWrite(),關(guān)閉文件CH375FileClose()等[6]。操作U盤(pán)存儲(chǔ)采集數(shù)據(jù)的程序流程如圖4所示。

采用Keil編寫(xiě)U盤(pán)操作程序時(shí),需要將CH375HF6.LIB庫(kù)文件和CH375HF6.H添加到項(xiàng)目中。主機(jī)模式單片機(jī)程序基本框架如下:
CH375_WR_CMD_PORT(CMD_SET_USB_MODE);
//設(shè)置USB工作模式
CH375_WR_DAT_PORT(6);
//模式代碼,已啟用的USB主機(jī)模式 DelayuS(20);
//延時(shí)
while(CH375DiskConnect( )!=ERR_SUCCESS)
//查詢U盤(pán)是否連接
DelaymS(200); //延時(shí),等待U盤(pán)工作正常
while(CH375DiskReady( )!=ERR_SUCCESS)
//檢查U盤(pán)是否準(zhǔn)備好
……
CH375DiskQuery( );
//查詢U盤(pán)信息:總?cè)萘?、剩余容量、文件系統(tǒng)
……
while ( i!=ERR_SUCCESS )
{strcpy( mCmdParam.Open.mPathName, TEST );
//目錄名
i=CH375FileOpen( );} //打開(kāi)目錄
while(i!=ERR_SUCCESS)
{strcpy(mCmdParam.Open.mPathName,TestData);
//輸入文件名
i=CH375FileOpen( ); } //打開(kāi)文件
……
mCmdParam.Write.mSectorCount=SecCount;
//寫(xiě)入所有扇區(qū)的數(shù)據(jù)
current_buffer= FILE_DATA_BUF[0];
//設(shè)置存放數(shù)據(jù)的緩沖區(qū)的起始地址
CH375FileWrite( ); //向文件寫(xiě)入數(shù)據(jù)
……
CH375FileClose( ); //關(guān)閉文件













評(píng)論