求助:Ch375主机模式,有时无法写数据。没有重复性。

求助:Ch375主机模式,有时无法写数据。没有重复性。

在主机模式下,建立新文件,然后向文件中写入512数据。发现,有时候正确,新建的文件里面有正确数据。有时候错误,文件每次都可以成功创建,但是里面数据是空的。试了很多次,频繁出现错误。这是为什么呀?哪位前辈遇到过类似问题,请指点。多谢了。

代码如下: if(CH375DiskStatus == DISK_CONNECT) { i=CH375DiskReady(); if(i==ERR_SUCCESS) { strcpy(mCmdParam.Create.mPathName,"/DATA.TXT"); CH375FileCreate(); mCmdParam.Locate.mSectorOffset=0xffffffff; CH375FileLocate(); mCmdParam.Write.mSectorCount=1; CH375FileWrite(); CH375FileClose(); } } while(1) {}

ding. please help me~~~


创建文件之后是不需要在用LOCATE的函数的,可以直接的调用写函数,如果数据有错误的话,你可以检查下你的文件缓冲区


多谢,我调试一下看看。


还是有毛病


那你先在你写进去数据的时候先将RAM里面的数据检测下看是不是你要写的数据,或者在一开始操作的时候就进行下RAM的测试


我用的是片内XRAM。 有时候有问题,有时候就没问题,好像拔u盘晚一些就可能正常。拔得快一些就会错误。


这个可能是由于U盘的写延时造成的,U内部先缓存一部份数据(例如16K),缓存满了以后才会真正写到FLASH。 你在关闭文件后,延时几十个毫秒。


延时了,不管用,再说了,就算拔得再快,那也是关闭文件几秒钟后才拔的。


郁闷


实际可以这样操作,一般的U盘在操作的时候,U盘的灯都会在闪烁,当你操作完成之后,你可以去看下U盘的灯是否还在闪烁,如果还在闪烁的话,建议你不要拔出U盘,直到U盘的灯不在闪烁了在拔下来就可以了,还有就是在你对U盘的所有操作完成之后,等待U盘拔出的前面,你可以去打开一个随即的文件,这个文件可以不存在,实际就是重新的读写U盘的物理扇区,强制的要求U盘来更新数据,这样的话可以减少U盘写延时的时间。实际这个问题并不是我们芯片的问题,而是U盘本身的问题。


好的 我再试试。


问题解决了,usb供电有问题。我刚开始试的时候是用带mp3功能的u盘试的,里面有电池,在传输数据时电压波动,有时usb总线复位,出现错误。单独供电后就正常了。谢谢大家的帮忙。


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