CH375寫時(shí)優(yōu)盤數(shù)據(jù)出錯,求高手指點(diǎn)

本人正在做項(xiàng)目,用到貴公司的CH375做優(yōu)盤存儲數(shù)據(jù) 硬件:MEGA128+CH375+金士頓8G優(yōu)盤 測試:連接,U盤準(zhǔn)備,創(chuàng)建文件,關(guān)閉文件,都正常 我循環(huán)打開文件,移動指針到文件結(jié)尾,字節(jié)形式寫入 "12345678900987654321\r\n" ,關(guān)閉文件,延時(shí)。 重復(fù)以上1000次。執(zhí)行時(shí)返回值都為0x00操作正確 但打開文件時(shí)會有6處寫入錯誤。 錯誤如下: 12345678900987654321 123456789009876543209812345678900987654321 12345678900987654321

12345678900987654321 123456789009876900987612345678900987654321 12345678900987654321

12345678900987654321 123312345678900987654312345678900987654321 12345678900987654321

出錯率一般在0.6%左右。

希望高手指點(diǎn)。測試成功才能用到實(shí)際項(xiàng)目中,希望貴公司幫忙解答。[Emot]1[/Emot]

你采用的是什么接口和CH375芯片連接?你可以這樣測試,只寫數(shù)據(jù)不關(guān)閉文件看是否可以?


這個目前還不好確定問題在說明地方,建議你做一下測試: 1:打開文件,移動文件指針,循環(huán)寫1000次,關(guān)閉文件,看現(xiàn)象是否一樣。 2:換個U盤測試一下。 3:把讀寫時(shí)序降低一些,當(dāng)然這個可能沒有關(guān)系,如果是寫的速度快(MAGEG和CH375之間的速度)則數(shù)據(jù)本身也可能出現(xiàn)問題,現(xiàn)在只是數(shù)據(jù)丟失。


感謝大家,我是用的是并行接口也CH375連接,將CH375當(dāng)做外部存儲空間。 在只是寫數(shù)據(jù)不關(guān)閉時(shí)做過測試,也會出現(xiàn)上訴錯誤,但錯誤率小一點(diǎn),0.2%左右。 U盤我也換過,也會出現(xiàn)這些錯誤大約也在0.2%左右比這個U盤好一點(diǎn), 對于速度我使用的是8M晶振,主頻也就是8M,并且在每次讀寫前都要先設(shè)置讀寫外部數(shù)據(jù)的寄存器讀寫后關(guān)閉, 速度應(yīng)該已經(jīng)降低了些。 最近測試時(shí)有時(shí)還會出現(xiàn)一些奇怪的字符,并且我發(fā)現(xiàn)會連續(xù)幾次測試時(shí)都會出現(xiàn)相同的字符, 換個U盤奇怪的字符就沒了。但可能會出現(xiàn)新的奇怪字符。


這個估計(jì)可能和你的硬件還是有關(guān)系的。你把你寫命令,寫數(shù)據(jù)以及讀數(shù)據(jù)三個函數(shù)貼出來看下。


while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); status = CH375DiskConnect( );//判斷連接 USART_Transmit(status);//串口返回狀態(tài) DelayMs(3000); status = CH375DiskReady();//盤準(zhǔn)備好 USART_Transmit(status);//串口返回狀態(tài) DelayMs(3000); for(j=0;j<50;j++)//寫20K數(shù)據(jù) { strcpy(mCmdParam.Open.mPathName,"\\HANHAN.TXT");//設(shè)置文件路徑 status = CH375FileOpen();//盤打開 USART_Transmit(status); //串口返回狀態(tài) mCmdParam.ByteLocate.mByteOffset=0xFFFFFFFF; status = CH375ByteLocate();//移動文件指針 USART_Transmit(status); //串口返回狀態(tài) for(i=0;i<20;i++) { strcpy(mCmdParam.ByteWrite.mByteBuffer,"12345678900987654321\r\n"); mCmdParam.ByteWrite.mByteCount=strlen("12345678900987654321\r\n"); status = CH375ByteWrite();//串口返回狀態(tài) if(status!=0x00)SendStr("WRITE ERROR IN\n",Strlen("WRITE ERROR IN\n")); //串口返回寫出錯 DelayMs(10); } status = CH375FileClose (); USART_Transmit(status); //串口返回狀態(tài) DelayMs(2000); }


還有一個問題可能和你出現(xiàn)的現(xiàn)象有關(guān),就是strcpy這個函數(shù)不建議你使用,你可以直接采用memcpy函數(shù)復(fù)制。51單片機(jī)使用KEIL編譯的時(shí)候strcpy函數(shù)好像就有問題。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频