我读U盘的第一个扇区,最后是55AA,可是我显示出来总是55AAAA; 前面有的数据也重复,不知道怎么回事,高手解答。
可能是读写时序有问题,可以把CH375读写子函数贴出来看看.
如果你是采用并口方式的话,那可能会存在你的并口上面会不会存在干扰问题而导致读取数据出现错误.
用的是模拟并口,D0-D7接P1,CS接地,A0接P3^5,R接P3^6,W接P3^7 ////////////////////375//发送命令函数/////////////////////////////////// void SendCom(byte command) { CH375_D0_D7=command; A0=1;W=0;R=1; W=1;R=1; }
////////////////////375读数据函数/////////////////////////////////// void ReadDat(byte *pbuf,byte num) { byte i; for(i=0;i { A0=0;W=1;R=0; delay(60); *pbuf=CH375_D0_D7; if(i pbuf++; delay(60); W=1;R=1; } } 有错误吗?并且每次读的时候总是哪一个地方丢一个字节。
byte ReadSector(unsigned long begin_num,byte n,byte *buf) { byte i,len; SendCom(DISK_READ); WriteOneDat((byte)begin_num); WriteOneDat((byte)(begin_num>>8)); WriteOneDat((byte)(begin_num>>16)); WriteOneDat((byte)(begin_num>>24)); WriteOneDat(n); for(i=0;i<8;i++) { if(WaitInterrupt()==USB_INT_DISK_READ) { SendCom(READ_USB_DATA); ReadDat(&len,1); ReadDat(buf,len); buf+=64; SendCom(DISK_READ_GO); } else break; } if(WaitInterrupt()!=USB_INT_SUCCESS) { Clr_Scr(); 在lcd上输出Read_Sector_Err return 0; } return 1; }
每次都不输出错误。