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

?
采用Keil編寫U盤操作程序時,需要將CH375HF6.LIB庫文件和CH375HF6.H添加到項目中。主機模式單片機程序基本框架如下:
CH375_WR_CMD_PORT(CMD_SET_USB_MODE);
//設置USB工作模式
CH375_WR_DAT_PORT(6);
//模式代碼,已啟用的USB主機模式 DelayuS(20);
//延時
while(CH375DiskConnect( )!=ERR_SUCCESS)
//查詢U盤是否連接
DelaymS(200); //延時,等待U盤工作正常
while(CH375DiskReady( )!=ERR_SUCCESS)
//檢查U盤是否準備好
……
CH375DiskQuery( );
//查詢U盤信息:總容量、剩余容量、文件系統(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ù)據(jù)的緩沖區(qū)的起始地址
CH375FileWrite( ); //向文件寫入數(shù)據(jù)
……
CH375FileClose( ); //關閉文件
3.2 從機模式
此模式下,單片機通過CH375與PC機進行通訊,完成采集方案下載與數(shù)據(jù)上傳,程序流程圖如圖5所示。

?
電子發(fā)燒友App











評論