ch375读取扇区返回出错

在读取扇区的子程序中 unsigned char mReadSector( unsigned long int iLbaStart, unsigned char iSectorCount, unsigned char *oDataBuffer ) { unsigned int mBlockCount; unsigned char c;

xWriteCH375Cmd( CMD_DISK_READ ); /*?读取u盘命令*/ xWriteCH375Data( (unsigned char)iLbaStart ); /* LBA低位*/ xWriteCH375Data( (unsigned char)( iLbaStart >> 8 ) ); xWriteCH375Data( (unsigned char)( iLbaStart >> 16 ) ); xWriteCH375Data( (unsigned char)( iLbaStart >> 24 ) ); /* LBA高位*/ xWriteCH375Data( iSectorCount ); /* 扇区数 */ for ( mBlockCount = iSectorCount *8; mBlockCount != 0; mBlockCount -- ) { c = WaitINT( ); /* 等待中断*/ if ( c == USB_INT_DISK_READ ) 。。。。。。 (此处一开始返回的值就不是USB_INT_DISK_READ,而是USB_INT_SUCCESS,不是应该最后一次才是返回USB_INT_SUCCESS的吗?怎么处理了? 数据手册上说前8次中断的返回是USB_INT_DISK_READ,最后一次返回USB_INT_SUCCESS。) }

前面的操作有没有正确的通过?U盘初始化,U盘的容量有没有获取?一定保证这两个能通过才可以继续操作.


U盘初始化通过了。容量获取没有通过。


前期建议您下载CH375EVT.ZIP,用MISCELL下的例程测试,不知道有没有实验


磁盘容量一定要正常获取. 可以采用重试机制,获取失败后发送R_SENSE命令,然后延时200MS后再次获取,循环五次左右,直到获取到容量为止.然后在去进行读写操作,基本上都可以.


经过几天的努力,终于M8读写U盘搞定。创建文件搞定。下一步读写EN25T80了。不知道贵公司有例子没?


EN25T80是什么?您说清楚点.


呵呵。就是一个25系列的大容量存储芯片。不过现在问题解决了,有新的问题了,就是我用ATMEGA 16对U盘写数据的时候,不知道是哪里的问题,只能在文件中写1K大小就写不进去了,经过分析是在等待中断中等待去了。谁有单片机写U盘程序没?给我参考下啊。我都是自己写的函数,不太好。


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