不知为什么不能从U盘中读到数据,大家指教一下。

我自己的板子,已经可以确认375可以工作(用测试指令CHECK_EXIST测试通过)。 下面是我做的一个测试,用的是朗科32MU盘。不知为什么,从串口出来的数据一直是0xA2,请大家指点一下,问题出在什么地方,困扰好几天了。谢谢。 void test_u() { uint i,j; strcpy( mCmdParam.Open.mPathName,"\AAA.TXT");  //U盘中的文件名 j=CH375FileOpen();

mCmdParam.ByteLocate.mByteOffset=0; //设定起始位置 j=CH375ByteLocate(); //定位 mCmdParam.ByteRead.mByteCount=1;    //一次只读1字节

for (i=0;i<150;i++) { j=CH375ByteRead(); X_buffer[i]=mCmdParam.ByteRead.mByteBuffer[0]; } for(i=0;i<150;i++) { SBUF=X_buffer[i];while(TI==0);TI=0; } }

1:strcpy( mCmdParam.Open.mPathName,"\AAA.TXT");  //U盘中的文件名 应该为"\\"才对,C语言"\\"翻译成\, 2:你前面有没有执行DISKREADY函数. ' 3:检查你的RAM读写是否正常. 4:你的U盘是否FAT或FAT32格式,或U盘是否错误.


感谢您的回复。晚上我再试试。另外不知是否可以知道您的MSN或QQ,以方便随时请教。 引用回复:1:strcpy( mCmdParam.Open.mPathName,"\AAA.TXT");  //U盘中的文件名 应该为"\\"才对,C语言"\\"翻译成\, 2:你前面有没有执行DISKREADY函数. ' 3:检查你的RAM读写是否正常. 4:你的U盘是否FAT或FAT32格式,或U盘是否错误.


今晚测试如下: 1、将strcpy(mCmdParam.Open.mPathName,"\AAA.TXT")中的“\AAA.TXT”改为“\\AAA.TXT”; 2、在前面执行了diskready 3、因为使用的77E58,应该读写RAM是不会有问题的。 4、确认U盘是FAT格式,U盘在PC上可以正常读写。 做了以上工作后,故障依旧,有意思的是:不插U盘时,读出的数据是0x03,插上U盘时读出的数据中0xA2. 真是怪了。现在的程序如下,请再指点一下。 void test_u() { uint i,j;

for ( i = 0; i < 10; i ++ ) { /* 有的U盘总是返回未准备好,不过可以被忽略 */ mDelay100mS( );feed_dog();     if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查询磁盘是否准备好 */ }

strcpy( mCmdParam.Open.mPathName,"\\AAA.TXT"); j=CH375FileOpen();

mCmdParam.ByteLocate.mByteOffset=0; //设定起始位置 j=CH375ByteLocate(); //定位 mCmdParam.ByteRead.mByteCount=10;//一次读10字节 j=CH375ByteRead(); for (i=0;i<10;i++) { buffer[i]=mCmdParam.ByteRead.mByteBuffer[i]; } } for(i=0;i<10;i++) { SBUF=buffer[i];while(TI==0);TI=0; } 


diskready(),返回应该是成功的吧, 出现0XA2的话,有可能是XRAM有问题,也就是你定义的磁盘缓冲区和文件缓冲区有问题,字节操作的话文件缓冲区用不到,另外你的XRAM是不是单片机默认情况下就打开的,还是要通过设置寄存器后才打开的.你可以试一下XRAM读写对不对.


感谢Nine Inch Nails及其他朋友的回复。问题解决了。 今晚测试了从XRAM读写数据,发现不正确。再细查,发现77E58初始化时没有使能1K的RAM。修改后一切都好了。 下面就好办了。调试其他功能块。

有问题会再次请教的。 再次由衷感谢!!!


好帖子!!


只有登录才能回复,可以选择微信账号登录