U盤(pán)初始化

想查查U盤(pán)初始化的子程序,但沒(méi)有找到,想問(wèn)一下U盤(pán)初始化到底做了那些事情?能不能貼出一個(gè)子程序?當(dāng)然我是指除了對(duì)控制傳輸之外的。

這是CH375初始化U盤(pán)的子程序: UINT8 mInitDisk( void ) { /* 初始化磁盤(pán) */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB設(shè)備斷開(kāi) */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲(chǔ)器 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出現(xiàn)錯(cuò)誤 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲(chǔ)器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯(cuò)誤 */ mDelaymS( 250 ); if(j==5) return(Status); } CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 獲取USB存儲(chǔ)器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ){ /* 出現(xiàn)錯(cuò)誤 */ for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 獲取USB存儲(chǔ)器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯(cuò)誤 */ } } return( 0 ); /* U盤(pán)已經(jīng)成功初始化 */ }


loveapple ,這個(gè)程序在哪邊找的啊?


到網(wǎng)上下載Ch375EVT.ZIP/PUB/MCS51/MISCELL例子程序中有


請(qǐng)問(wèn)loveapple,在公司例程序里,沒(méi)找到初始化子函數(shù),請(qǐng)問(wèn)在CH375DiskConnect()函數(shù)里是不是調(diào)用了 mInitDisk( )函數(shù)?謝謝!還有我做扇區(qū)讀寫(xiě)實(shí)驗(yàn)時(shí)返回了錯(cuò)誤代碼4F,沒(méi)有查到相關(guān)代碼,請(qǐng)問(wèn)怎么回事啊?


你是使用文件級(jí)子程序庫(kù)對(duì)U盤(pán)進(jìn)行讀寫(xiě)文件操作的嗎?插上U盤(pán)CH375DiskConnect()返回什么狀態(tài),CH375DiskConnect()沒(méi)有處理,CH375DiskReady()有沒(méi)有通過(guò).CH375DiskReady()處理了.


你采用的是什么單片機(jī)?想采用我們的庫(kù)來(lái)讀寫(xiě)U盤(pán),還是參考我們讀物理扇區(qū)的例子自己寫(xiě)文件系統(tǒng)? 如果采用我們子程序庫(kù)的話,U盤(pán)的初始化在CH375DiskReady( )里做了處理,CH375DiskConnect()只是檢測(cè)是否連接。


CH375DiskReady()已經(jīng)通過(guò),我用的是例程序8我把程序貼是主循環(huán)里的程序: while(CH375DiskStatus { if(CH375DiskConnect()==ERR_SUCCESS)break; mDelaymS(100); } LED_OUT_ACT( ); /* LED亮 */ mDelaymS( 200 ); /* 延時(shí),可選操作,有的USB存儲(chǔ)器需要幾十毫秒的延時(shí) */ for ( i = 0; i < 5; i ++ ) { /* 有的U盤(pán)總是返回未準(zhǔn)備好,不過(guò)可以被忽略 */ mDelaymS( 100 ); printf( "Ready ?\n" ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤(pán)是否準(zhǔn)備好 */ } mCopyCodeStringToIRAM( mCmdParam.Open.mPathName,"/MY_ADC.TXT"); i=CH375FileOpen(); if(i==ERR_SUCCESS) { mCmdParam.Locate.mSectorOffset = 0xffffffff; i=CH375FileLocate(); mStopIfError(i); total=CH375vFileSize&511; /*這樣防止就把扇區(qū)的數(shù)據(jù)放到XRAM的頭部,下次再寫(xiě)入的數(shù)據(jù)將會(huì)接著往下寫(xiě)*/ CH375vFileSize+=511; mCmdParam.Read.mSectorCount = 1; i=CH375FileRead (); mStopIfError(i); CH375vFileSize-=511; mCmdParam.Locate.mSectorOffset = 0xffffffff; i = CH375FileLocate( ); mStopIfError( i ); } else if(i==ERR_MISS_FILE) { i=CH375FileCreate(); mStopIfError(i); total=0; } else mStopIfError(i); mFlushBufferToDisk(0); total+=sprintf(FILE_DATA_BUF+total,"TIME=%d:%d:%d TEMP=%d.%d",hor,min,miao,tmp,tmp_d); if(!(min%30))mFlushBufferToDisk(1); /*強(qiáng)制定時(shí)刷新緩沖區(qū),防止數(shù)據(jù)丟失*/ else mFlushBufferToDisk(0); //if(force) mFlushBufferToDisk(1); mCmdParam.Close.mUpdateLen=0; /*不必更新文件長(zhǎng)度,自動(dòng)刷新時(shí)已經(jīng)自動(dòng)更新*/ i=CH375FileClose( ); mStopIfError(i);


我用的是公司提供的LIB及程序庫(kù),大概是這個(gè)地方出現(xiàn)的問(wèn)題 CH375vFileSize+=511; mCmdParam.Read.mSectorCount = 1; i=CH375FileRead(); mStopIfError(i); 執(zhí)行到這個(gè)地方的時(shí)候,程序出現(xiàn)錯(cuò)誤!現(xiàn)在返回錯(cuò)誤代碼5C


你的意思是在i=CH375FileRead中返回錯(cuò)誤代碼嗎?你用的是什么單片機(jī)?晶振是多少?


問(wèn)題一以解決!謝謝大家的幫助!


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频