我现在用字节模式写U盘大约17KB大小的一个文件,基本上可以操作正确,但有时候会出现0x82的错误,说磁盘未连接。
另外我发觉写过去的文件中间会有一定的误码,这个怎么解决,因为实际应用中我传输的数据是工艺文件,必须完全无误才行。
另外字节模式是不是没有扇区模式好使?用扇区模式好像没有字节模式这样容易操作吧?
写程序等如下: void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { mDelay1uS( ); mDelay1uS( ); /* 至少延时1uS */ CH375_CMD_PORT = mCmd; /*通过并口直接读写CH375而非普通I/O模拟 */ mDelay1uS( ); mDelay1uS( ); /* 至少延时2uS */ }
void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { CH375_DAT_PORT = mData; /*通过并口直接读写CH375而非普通I/O模拟 */ mDelay1uS( ); mDelay1uS( ); /* 至少延时1.2uS */ }
UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; mData =CH375_DAT_PORT; /*通过并口直接读写CH375而非普通I/O模拟 */ return( mData ); }
UINT8 xReadCH375Cmd( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mCmd; mCmd =CH375_CMD_PORT; /*通过并口直接读写CH375而非普通I/O模拟 */ return( mCmd ); } /*多次写数据函数*/ USBCE_CLR; while (DesignFile.SectorProTime<128) { while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); do { i=CH375DiskReady( ); }while( i!= ERR_SUCCESS); strcpy( (char *)mCmdParam.Open.mPathName, "\\1.TXT" ); // delay(10); i = CH375FileOpen( ); if (i == ERR_MISS_DIR || i == ERR_MISS_FILE) { strcpy( (char *)mCmdParam.Open.mPathName, "\\1.TXT" ); i = CH375FileCreate( ); while(i!=0); }else if (i==ERR_SUCCESS) { mCmdParam.ByteLocate.mByteOffset = 0xffffffff; i = CH375ByteLocate( ); while(i!=0); delay(1); for (i=0;i<(MAX_BYTE_IO>>1);i++) { mCmdParam.ByteWrite.mByteBuffer[2*i]=0x00;//WORD_LO(FlashData[j+i]); mCmdParam.ByteWrite.mByteBuffer[2*i+1]=0x01;//WORD_HI(FlashData[j+i]); } mCmdParam.ByteWrite.mByteCount = MAX_BYTE_IO;//128 i = CH375ByteWrite( ); // delay(10); while(i!=0); DesignFile.SectorProTime++; mCmdParam.Close.mUpdateLen = 1; i= CH375FileClose( ); while(i!=0); } CH375Reset(); i=CH375LibInit( ); while( i!=0); // delay(10); }