CH37BReady成功,但读取失败

CH375B 芯片,单片机是STC12C5A60S2,60K ROM,256 字节内部RAM,1K内部扩展RAM,主机模式。 初始化芯片,初始化U盘都成功,Ready测试也成功了,但读取U盘容量为有时返回0X1F 有时返回0X14,返回0x14时容量为0,文件系统读取也为0。运行读取引导扇区时进入读取状态就出不来了,可以看到U盘的指示灯再闪,U盘就热了,但这样持续几分钟还在闪。 U盘是金士顿8G的,FAT32。也换了多个个优盘测试有金士顿8G,FAT32的和闪迪8G,FAT32的,但情况都一样。

测试程序是CH375EVT\PUB\MCS51C\MISCELL\CH375EV0.C 谁能给我些查找问题的方向,给我些建议吗?谢谢。

你拿这个例子程序去测试下,出现返回0X1F的话需要发送命令重试的。UploadImages/20129288311859.rar


我试了,就一次正确的读出了0扇区,再下面就不行了。 我在读取函数中加了显示出每次读取块长度C的值,您请看 for ( mBlockCount = iSectorCount * 8; mBlockCount != 0; mBlockCount -- ) { /* 数据块计数 */ c = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( c == USB_INT_DISK_READ ) { /* 等待中断并获取状态,USB存储器读数据块,请求数据读出 */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 从CH375缓冲区读取数据块 */ c = CH375_RD_DAT_PORT( ); /* 后续数据的长度 */ k=c; while ( c -- ) *oDataBuffer++ = CH375_RD_DAT_PORT( ); /* 根据长度读取数据并保存 */ printf("c=%x\n",k);//查看每次要读取数据长度 CH375_WR_CMD_PORT( CMD_DISK_RD_GO ); /* 继续执行USB存储器的读操作 */ }

返回: c=4000 c=4000 c=7400 c=6600 c=4000 c=4000 c=0

有时候返回其他的,但程序就是走不出来了。


你要把读取的物理扇区地址给出,把读取的扇区数给出,不要改我们的函数流程,如果读不对,就多换几个U盘,或者检查硬件,软件不该的话就不是软件的问题。顺便说下,你想用我们的片子干什么?可以用我们的库啊


读取扇区地址0 扇区数1 程序流程没有改 我的目的就是能读写优盘,创建文件就行 我想是硬件或优盘的问题,因为第一次就读出来了,可就那一次,以后就不行了,但优盘灯一直在闪。有几次返回了0x17


如果目的就是能读写优盘,创建文件,而不是移植自己的文件系统的话,那么建议你去我们官网上下载CH375EVT,CH375LIBZIP,里面都有51下操作U盘的多个例子程序,直接建工程,改接口地址就能使用


用了库文件CH375HFT.C CH375HT4.LIB CH375HT4.LIB 运行到fileopen时返回0x92或0x17


CH375B芯片,FAt32文件系统U盘 单片机是STC12C5A60S2,60K ROM,256 字节内部RAM,1K内部扩展RAM,主机模式。


FAT32文件系统使用LIB6的库或者LIB5的库,建议使用LIB5的库,你的单片机速度比较快,所以三个读写子函数需要加延时才能操作。


您好 这是我用Lib5的库返回的信息 不知道是什么意思

Wait Udisk Ready ? Sector size 5140 Too large sector size


磁盘扇区过大,但是应该是512的整数倍


不知道这是什么原因,如果我设置Sector size为512 则会返回0x17,请问是什么问题?


0x17/* USB控制传输的数据太多, 缓冲区溢出 */ 用WINHEX这个软件看你的磁盘扇区大小 您自动获取磁盘的扇区大小,如果CH375vSectorSize的值和WINHEX看到的值不一样说明你单片机和375接口通讯有问题


我换了 5V的电压供电 可以读出数据 读引导扇区 和winhex读出的数据类似 但和winhex读的比较中间有好几个字节没有读出来 不是连续的 偶尔漏掉一个字节 最后结尾标志55 AA后面几个字节数据


有时候会返回错误 0x17 有时候可以读取


您好 我又换了一个硬件模块,读写都好了,是第一个模块供电和一些电容的问题。 这个好的模块 我在往文件里写数据时当有汉字时偶尔出现乱码,另外在串口打印时也是这样比如本来是“今天的ADC数据到此结束”却成了“今天的ADC示莸酱私崾?”,“每簇扇区数”成了“每簇扇区?” 不知道又是哪的问题,请您指导。


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