用ch375B写U盘的问题

写多个扇区,发现每个扇区的前128个字节没问题,后面512-128个字节与发送的不一样,存进去的数据不知道丛哪来的,而且这些数据每次执行读出来都一样.为什么会这样啊?

uchar CH375_WriteOneSector(ulong LBA,uchar *buffer) { uchar cnt = 8; uchar temp = 64; uchar block=64; CH375_CS_L; CH375_WriteCMD(DISK_WRITE); CH375_WriteDAT(LBA); CH375_WriteDAT(LBA>>8); CH375_WriteDAT(LBA>>16); CH375_WriteDAT(LBA>>24); CH375_WriteCMD(1); while(cnt--) { if(CH375_WaitInterrupt() != USB_INT_DISK_WRITE) {printf("CH375 ³ö´íÌø³öl!\r\n");break;} CH375_WriteCMD(WR_USB_DATA7); CH375_WriteDAT(block); while(temp--)CH375_WriteDAT(*buffer++); CH375_WriteCMD(DISK_WR_GO); //delay_us(10); } if(cnt != 0xff || CH375_WaitInterrupt() != USB_INT_SUCCESS) {CH375_CS_H;printf("CH375 д³ö´í!\r\n");return 1;} CH375_CS_H; return 0; }

查下你三个读写函数是否有问题。估计还是你时序上面有问题。


哪3个啊,就用到这一个函数,如果时序有问题,为什么前128个是好的,前面几个就应该出问题了,能给我没问题的代码参考一下吗.


写命令,写数据和读数据。


这些当然做了,否则上面这些事我是怎么做出来的.


我是让你查下这三个读写子函数的时序,我担心你的读写时序有问题,并没有说你没写这三个函数。


我是写完一个扇区读一个扇区每个字节逐个比较,读写都没有延时,这样有问题吗


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