[求助]CH375先寫再讀,程序就會(huì)跑飛,誰知道為什么

我使用CH375+DSP509,單步運(yùn)行都沒有問題,可只要連續(xù)運(yùn)行,程序就會(huì)跑飛,下面是我的寫程序 /* 將緩沖區(qū)中的多個(gè)扇區(qū)的數(shù)據(jù)塊寫入U(xiǎn)盤 */ Uint16 RBC_Write(Uint32 iLbaStart,Uint16 *mBufferPoint, Uint16 iSectorCount) { // iLbaStart 是寫入的線起始性扇區(qū)號(hào), iSectorCount 是寫入的扇區(qū)數(shù) Uint16 mIntStatus; Uint16 mBlockCount; Uint16 mLength; Uint16 i; Uint8 mWrite; iSectorCount=iSectorCount/512; CH375_CMD_PORT_d_out( CMD_DISK_WRITE); /* 向USB存儲(chǔ)器寫數(shù)據(jù)塊 */ CH375_DAT_PORT_d_out((Uint16)iLbaStart); /* LBA的最低8位 */ CH375_DAT_PORT_d_out((Uint16)( iLbaStart >> 8 )); CH375_DAT_PORT_d_out((Uint16)( iLbaStart >> 16 )); CH375_DAT_PORT_d_out((Uint16)( iLbaStart >> 24 )); /* LBA的最高8位 */ CH375_DAT_PORT_d_out(iSectorCount); /* 扇區(qū)數(shù) */ for ( mBlockCount = iSectorCount * 8; mBlockCount != 0; mBlockCount -- ) /* 數(shù)據(jù)塊計(jì)數(shù) */ { /* 數(shù)據(jù)塊計(jì)數(shù),SectorSize 由CMD_DISK_SIZE 獲得,大多數(shù)U 盤的SectorSize 是512 */ while(1) { mDelay1uS( ); mIntStatus = mWaitInterrupt(); /* 等待中斷并獲取狀態(tài) */ if(mIntStatus==0x1E)break; } if(mIntStatus==0x1E) { /* USB 存儲(chǔ)器寫數(shù)據(jù)塊,請(qǐng)求數(shù)據(jù)寫入 */ CH375_CMD_PORT_d_out(0x2B); /* CH375緩沖區(qū)寫入數(shù)據(jù)塊 */ CH375_DAT_PORT_d_out(0x40); /* 后續(xù)數(shù)據(jù)的長(zhǎng)度 */ mLength=32; while ( mLength -- ) { /* 根據(jù)長(zhǎng)度寫入數(shù)據(jù) */ mWrite=(*mBufferPoint)&0x00FF; CH375_DAT_PORT_d_out(mWrite); /* 寫入數(shù)據(jù)并保存 */ mWrite=((*mBufferPoint)&0xFF00)>>8; CH375_DAT_PORT_d_out(mWrite); mBufferPoint ++; } CH375_CMD_PORT_d_out(0x57); /* 繼續(xù)執(zhí)行USB 存儲(chǔ)器的寫操作 */ } else break; /* 返回錯(cuò)誤狀態(tài) */ } if(mBlockCount==0) { /* 數(shù)據(jù)傳輸完成 */ mIntStatus = mWaitInterrupt(); /* 等待中斷并獲取狀態(tài) */ if(mIntStatus==0x14) { return( 0 ); /* 操作成功 */ } } return( mIntStatus ); /* 操作失敗 */ } 是寫程序有問題嗎

主頻120M,我的基本讀寫時(shí)序如下 /* 向CH375命令端口寫命令數(shù)據(jù) */ void CH375_CMD_PORT_d_out( Uint8 d_out ) { mDelay1uS( ); WriteIO_CH375Cmd(d_out); mDelay2uS( ); /* 至少延時(shí)2uS */ }

/* 向CH375數(shù)據(jù)端口寫數(shù)據(jù) */ void CH375_DAT_PORT_d_out( Uint8 d_out ) { Uint16 i; WriteIO_CH375Data(d_out) ; for(i=0;i<0x150;i++); }

/* 從CH375命令端口讀數(shù)據(jù) */ Uint16 CH375_DAT_PORT_in( ) { Uint16 i,j; for(i=0;i<0x150;i++); j=ReadIO_CH375Data(); return j; } 難道是時(shí)序問題?


這個(gè)時(shí)序還是看不出來,需要你自己看一下寫數(shù)據(jù)的過程中的WR,RD,CS,A0各個(gè)時(shí)序.


恩,謝謝,我看看這幾個(gè)時(shí)序


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

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