U盤文件讀寫模塊, 連接方式: 并口+查詢 /* 檢查U盤是否準(zhǔn)備好,大多數(shù)U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */ for ( i = 0; i < 5; i ++ ) { mDelaymS( 100 ); printf( "Ready ?\n" ); if ( ExecCommand( CMD_DiskReady, 0 ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準(zhǔn)備好 */ } [Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot]
這個(gè)不通過(guò),可以嗎?
這步不通過(guò),你下面的讀寫什么的可以成功嗎?有部分少數(shù)U盤這步返回的一直是不成功。
/* 讀取原文件 */ printf( "Open\n" ); memcpy( mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C", MAX_PATH_LEN ); /* 文件名,該文件在C51子目錄下 */ i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN ); /* 打開文件,輸入?yún)?shù)置為最大值,省得再計(jì)算參數(shù)長(zhǎng)度 if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) 這個(gè)i值一直返回的是3FH? 就是索引地址63D讀出來(lái)的數(shù)是3FH 為什么啊?謝謝
那前面的DISK-READY返回的是多少?。?/p>
while ( 1 ) { /* 使用查詢方式看U盤是否連接 */ i = ExecCommand( CMD_QueryStatus, 0 ); /* 查詢當(dāng)前模塊的狀態(tài) */ mStopIfError( i ); if ( mCmdParam.Status.mDiskStatus >= DISK_CONNECT ) break; /* U盤已經(jīng)連接 */ 這個(gè)返回的是02H 然后測(cè)試U盤是否準(zhǔn)備好,i每次都是5.
mCmdParam.Status.mDiskStatus為02H的話說(shuō)明已經(jīng)檢測(cè)到U盤連接了,你測(cè)一下你插上U盤后U盤兩端的電壓是多大,有些U盤電壓太底的話,U盤就不工作;還有就是如果U盤內(nèi)部晶振誤差太大的話,DISK—READY也過(guò)不了,你可以換個(gè)U盤試試。
哦我試試,謝謝大哥們了^
U盤兩端電壓是5.2V,D+3.12V 沒有問(wèn)題啊!!!!!!??? 但還是不行
我也遇到了他這種情況,我的DISK-READY返回值是3FH,為什么呢???
要不你直接先用我們的例子程序跑跑看,看是否存在這問(wèn)題,換個(gè)U盤還是一樣嗎?
試了,換了! 還是一樣啊?
和仿真器有關(guān)嗎?