U盘文件读写模块, 连接方式: 并口+查询 /* 检查U盘是否准备好,大多数U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 */ for ( i = 0; i < 5; i ++ ) { mDelaymS( 100 ); printf( "Ready ?\n" ); if ( ExecCommand( CMD_DiskReady, 0 ) == ERR_SUCCESS ) break; /* 查询磁盘是否准备好 */ } [Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot]
这个不通过,可以吗?
这步不通过,你下面的读写什么的可以成功吗?有部分少数U盘这步返回的一直是不成功。
/* 读取原文件 */ printf( "Open\n" ); memcpy( mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C", MAX_PATH_LEN ); /* 文件名,该文件在C51子目录下 */ i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN ); /* 打开文件,输入参数置为最大值,省得再计算参数长度 if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) 这个i值一直返回的是3FH? 就是索引地址63D读出来的数是3FH 为什么啊?谢谢
那前面的DISK-READY返回的是多少啊?
while ( 1 ) { /* 使用查询方式看U盘是否连接 */ i = ExecCommand( CMD_QueryStatus, 0 ); /* 查询当前模块的状态 */ mStopIfError( i ); if ( mCmdParam.Status.mDiskStatus >= DISK_CONNECT ) break; /* U盘已经连接 */ 这个返回的是02H 然后测试U盘是否准备好,i每次都是5.
mCmdParam.Status.mDiskStatus为02H的话说明已经检测到U盘连接了,你测一下你插上U盘后U盘两端的电压是多大,有些U盘电压太底的话,U盘就不工作;还有就是如果U盘内部晶振误差太大的话,DISK—READY也过不了,你可以换个U盘试试。
哦我试试,谢谢大哥们了^
U盘两端电压是5.2V,D+3.12V 没有问题啊!!!!!!??? 但还是不行
我也遇到了他这种情况,我的DISK-READY返回值是3FH,为什么呢???
要不你直接先用我们的例子程序跑跑看,看是否存在这问题,换个U盘还是一样吗?
试了,换了! 还是一样啊?
和仿真器有关吗?