现在U盘F16/F32文件系统都分析出来了(正高兴呢^-^),但当发命令54H连续读根目录32个扇区时,只返回512字节数据。 发送命令如下(只返回512Byte数据) CH375_WR_CMD_PORT(0x54); delay(1); /*1ms延时*/ CH375_WR_DAT_PORT(0x16); /*根目录地址,不同的U盘可能不一样*/ CH375_WR_DAT_PORT(0x02); CH375_WR_DAT_PORT(0x00); CH375_WR_DAT_PORT(0x00); CH375_WR_DAT_PORT(0x20); /*连续读根目录32扇区数据*/ 我用的是天郎A10盘。为什么这样???大家是否遇到过??难道每次只能读取一个扇区数据???
天郎A10盘,连续读扇区不能操作?????修改地址后间隔0.5秒重发上面的命令仍不行,什么原因???
那在读完512字节的数据后,返回的状态是USB_INT_SUCCESS还是USB_INT_DISK_READ?
是不是在读完一个扇区的数据后就给你返回了USB_INT_SUCCESS? 好象不大可能。。 发完0X54后,延时1MS这么长,好象不需要吧。
找到了原因,但还没有解决。 CH375_WR_CMD_PORT(0x54); delay(1); /*1ms延时*/ CH375_WR_DAT_PORT(Secaddr_bytes[0]); /*扇区地址*/ CH375_WR_DAT_PORT(Secaddr_bytes[1]); CH375_WR_DAT_PORT(Secaddr_bytes[2]); CH375_WR_DAT_PORT(Secaddr_bytes[3]); CH375_WR_DAT_PORT(0x01); /*扇区数*/ ch=Wait_Interrupt(); 修改地址后间隔0.5秒重发上面的命令收到ch=0x1f; 发完0X54后,不延时1MS仍收到ch=0x1f; 什么原因呢???
0x1f好象是存储器操作失败。 那你刚才说读出了一个扇区,读出来的一个扇区的数据正确吗?
谢谢各位的帮助。问题解决了。 是我的发送命令函数有处地方延时过长。 现在读根目录32个扇区数据都正确,U盘文件名都能正确读出来了。 谢谢各位的支持!!