ch375緊急求救

我在做u盤讀寫項(xiàng)目時(shí),參考的網(wǎng)上的例子,我明明寫了512字節(jié),但在u盤上看到的是增加了256k的空間,怎么會(huì)事? /************************************************************************ 將緩沖區(qū)中的多個(gè)扇區(qū)的數(shù)據(jù)塊寫入U(xiǎn)盤 iLbaStart 是寫入的線起始性扇區(qū)號(hào), iSectorCount 是寫入的扇區(qū)數(shù) 返回0則成功,否則返回錯(cuò)誤代碼 ************************************************************************/ unsigned char mWriteSector( unsigned long iLbaStart, unsigned char iSectorCount ) { unsigned char mIntStatus;//操作狀態(tài) unsigned char *mBufferPoint;//指向緩沖區(qū)的指針 unsigned int mBlockCount; unsigned char mLength; SendCMD( CMD_DISK_WRITE ); /* 向USB存儲(chǔ)器寫數(shù)據(jù)塊 */ SendDAT( (unsigned char)iLbaStart ); /* LBA的最低8位 */ SendDAT( (unsigned char)( iLbaStart >> 8 ) ); SendDAT( (unsigned char)( iLbaStart >> 16 ) ); SendDAT( (unsigned char)( iLbaStart >> 24 ) ); /* LBA的最高8位 */ SendDAT( iSectorCount ); /* 扇區(qū)數(shù) */ mBufferPoint = wUSBuffer; /* 指向緩沖區(qū)起始地址 */ for ( mBlockCount = iSectorCount * CH375_BLK_PER_SEC; mBlockCount != 0; mBlockCount -- ) { /* 數(shù)據(jù)塊計(jì)數(shù) */ while(P1IN&0x01==0x01);/////////////////////////// mIntStatus = WRC375(CMD_GET_STATUS); if ( mIntStatus == USB_INT_DISK_WRITE ) { /* USB存儲(chǔ)器寫數(shù)據(jù)塊,請(qǐng)求數(shù)據(jù)寫入 */ SendCMD( CMD_WR_USB_DATA7 ); /* 向CH375緩沖區(qū)寫入數(shù)據(jù)塊 */ mLength = CH375_BLOCK_SIZE; SendDAT( mLength ); /* 后續(xù)數(shù)據(jù)的長(zhǎng)度 */ while ( mLength ) { /* 根據(jù)長(zhǎng)度寫入數(shù)據(jù) */ SendDAT( *mBufferPoint ); /* 將數(shù)據(jù)寫入 */ mBufferPoint ++; mLength --; } SendCMD( CMD_DISK_WR_GO ); /* 繼續(xù)執(zhí)行USB存儲(chǔ)器的寫操作 */ } else break; /* 返回錯(cuò)誤狀態(tài) */ } if ( mBlockCount == 0 ) { while(P1IN&0x01==0x01); mIntStatus = WRC375(CMD_GET_STATUS); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus == USB_INT_SUCCESS ) return( 0 ); /* 操作成功 */ } return( mIntStatus ); /* 操作失敗 */ }

你是采用直接操作物理扇區(qū)的例子吧?直接寫扇區(qū)的話,其實(shí)只是將數(shù)據(jù)寫到物理扇區(qū)而已,并不會(huì)減少U盤的容量。你寫的是那個(gè)扇區(qū),可能將U盤的某些重要扇區(qū)(如DBR,F(xiàn)AT表等)修改了。


是啊,我只是想把數(shù)據(jù)寫到u盤中,在把他讀出來,寫入的和讀出的是一樣的,就是容量不對(duì)。那我該怎么辦?。课也幌虢⑽募懭?,難道就不行嗎?


我讀寫的是第100扇區(qū)


其實(shí)你直接操作物理扇區(qū)的話,就象操作其他存儲(chǔ)芯片如65256一樣,只是對(duì)物理扇區(qū)進(jìn)行數(shù)據(jù)讀寫,并不涉及到插到電腦上查看U盤容量的變化,也就是說你不用關(guān)心這個(gè)。


經(jīng)你這么解釋我明白了,謝謝?,F(xiàn)在還有幾個(gè)問題 1、我要是這樣用,是不是有些扇區(qū)不能用?用了的話可能破壞u盤? 2、我實(shí)測(cè)了一下,當(dāng)往u盤寫1M字節(jié),用時(shí)1分鐘,但是往外讀1M字節(jié)用時(shí)15秒,這是怎么回事? 3、以這樣的速度讀寫肯定是很慢的,如果我用文件的方式讀寫u盤,速度會(huì)不會(huì)提高很快?我的電路圖不是按照官方網(wǎng)站上的推薦接的,是不是就不能用官方提供的文件庫(kù)?


補(bǔ)充一點(diǎn):我的單片機(jī)與375通信采用了1M的波特率


1、是的,比如U盤的DBR表,一般為第0個(gè)扇區(qū)。 2、寫的速度要比讀的速度的慢,這是由于U盤本身的物理特性引起的,寫的話涉及到數(shù)據(jù)的保存、塊的擦除等操作; 3、你可以一次讀寫多個(gè)扇區(qū),一般U盤以16K為塊進(jìn)行擦除的,你可以一次操作32個(gè)扇區(qū)。如果采用文件系統(tǒng)的話,由于要處理文件系統(tǒng)相關(guān)東西,速度會(huì)比這個(gè)還慢。另外采用并口通信比串口通信要快些。


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

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