我現(xiàn)在用字節(jié)模式寫U盤大約17KB大小的一個文件,基本上可以操作正確,但有時候會出現(xiàn)0x82的錯誤,說磁盤未連接。
另外我發(fā)覺寫過去的文件中間會有一定的誤碼,這個怎么解決,因為實際應用中我傳輸?shù)臄?shù)據(jù)是工藝文件,必須完全無誤才行。
另外字節(jié)模式是不是沒有扇區(qū)模式好使?用扇區(qū)模式好像沒有字節(jié)模式這樣容易操作吧?
寫程序等如下: 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寫數(shù)據(jù) */ { CH375_DAT_PORT = mData; /*通過并口直接讀寫CH375而非普通I/O模擬 */ mDelay1uS( ); mDelay1uS( ); /* 至少延時1.2uS */ }
UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫調用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; mData =CH375_DAT_PORT; /*通過并口直接讀寫CH375而非普通I/O模擬 */ return( mData ); }
UINT8 xReadCH375Cmd( void ) /* 外部定義的被CH375程序庫調用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mCmd; mCmd =CH375_CMD_PORT; /*通過并口直接讀寫CH375而非普通I/O模擬 */ return( mCmd ); } /*多次寫數(shù)據(jù)函數(shù)*/ 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); }