[求助]CH375寫U盤

我的設(shè)計是CH375+單片機來接受儀器發(fā)過來的數(shù)據(jù),我想把這些數(shù)據(jù)寫到U盤上,以便在電腦上查看這些數(shù)據(jù)具體是什么,我的單片機是ATmega8,大概有8K字節(jié)的程序存儲空間,1K的RAM數(shù)據(jù)存儲空間,我應(yīng)該參考貴網(wǎng)站的哪些讀寫U盤的資料?。柯闊┩扑]一下,謝謝了。

推薦你使用CH376芯片,這款芯片自帶文件系統(tǒng),支持串口,并口以及SPI接口。單片機讀寫U盤需要FLASH空間在1.5K左右,RAM最少幾十個字節(jié)。資料你可以去下載CH376EVT.ZIP。


我的硬件都已經(jīng)做好了,不能換了,我本來是接打印機的,可是數(shù)據(jù)出了點小問題,主管讓我把這些數(shù)據(jù)寫到U盤上然后用電腦讀出來,看看是哪出錯了。只要能寫到U盤就可以


CH376S的引腳和CH375B的引腳是兼容的??梢灾苯犹鎿Q,如果使用CH375操作U盤,使用我們的庫文件,則代碼空間要在12K以上


關(guān)鍵是我其他的程序都編好了,也都調(diào)試通過了,往U盤寫數(shù)據(jù)只是為了調(diào)試最后一步,寫的數(shù)據(jù)量不是很大,ATmega8不能滿足嗎?


如果使用MEGA8的話,如果采用文件的方式往下寫數(shù)據(jù)的話,F(xiàn)LASH肯定是不夠的,按照3樓所說,的方式來操作。這個和寫的數(shù)據(jù)量多少沒什么直接的關(guān)系。


除非不對文件進行操作。對文件進行操作,要么你換MCU要么換CH376。這個和數(shù)據(jù)量大小沒有關(guān)系。你寫100G的文件和100K的文件,都需要文件系統(tǒng)。


哦,估計我的硬件是不能改了,那我按你們資料寫的直接將U盤當作存儲器來讀寫的話,是不是硬件就能滿足了?還有這樣的話,在計算機端要用什么工具來讀取U盤的數(shù)據(jù)???你們資料上還說可以參考CH375UD.C 編寫計算機程序以特殊方法讀寫無文件格式U 盤中的數(shù)據(jù),CH375UD.C在哪可以下載?。?/p>


如果把U盤當做FLASH存儲器來做的話,硬件和軟件都滿足,計算機上面可以自己寫軟件,或者你可以發(fā)E-MAIL到tech@wch.cn來索取這個軟件。


哦,好的,我已經(jīng)發(fā)郵件了,謝謝。


我想問下,CH375寫U盤的時候,這個mWriteSector寫函數(shù),是把數(shù)據(jù)寫到CH375的緩沖區(qū)中嗎?那它怎么就寫到U盤里了?我把這個函數(shù)貼出來。


unsigned char mWriteSector( unsigned long iLbaStart, unsigned char iSectorCount ) /* iLbaStart 是寫入的線起始性扇區(qū)號, iSectorCount 是寫入的扇區(qū)數(shù) */ { unsigned char mIntStatus; unsigned char *mBufferPoint; unsigned int mBlockCount; unsigned char mLength; CH375_WR_CMD_PORT( CMD_DISK_WRITE ); /* 向USB存儲器寫數(shù)據(jù)塊 */ CH375_WR_DAT_PORT( (unsigned char)iLbaStart ); /* LBA的最低8位 */ CH375_WR_DAT_PORT( (unsigned char)( iLbaStart >> 8 ) ); CH375_WR_DAT_PORT( (unsigned char)( iLbaStart >> 16 ) ); CH375_WR_DAT_PORT( (unsigned char)( iLbaStart >> 24 ) ); /* LBA的最高8位 */ CH375_WR_DAT_PORT( iSectorCount ); /* 扇區(qū)數(shù) */ mBufferPoint = DATA_BUFFER; /* 指向緩沖區(qū)起始地址 */ for ( mBlockCount = iSectorCount * BlockPerSector; mBlockCount != 0; mBlockCount -- ) { /* 數(shù)據(jù)塊計數(shù) */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus == USB_INT_DISK_WRITE ) { /* USB存儲器寫數(shù)據(jù)塊,請求數(shù)據(jù)寫入 */ CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 ); /* 向CH375緩沖區(qū)寫入數(shù)據(jù)塊 */ mLength = CH375_BLOCK_SIZE; CH375_WR_DAT_PORT( mLength ); /* 后續(xù)數(shù)據(jù)的長度 */ while ( mLength ) { /* 根據(jù)長度寫入數(shù)據(jù) */ CH375_WR_DAT_PORT( *mBufferPoint ); /* 將數(shù)據(jù)寫入 */ mBufferPoint ++; mLength --; } /* do { 對于C51,這個DO+WHILE結(jié)構(gòu)比上面的WHILE效率高,速度快 CH375_WR_DAT_PORT( *mBufferPoint ); mBufferPoint ++; } while ( -- mLength );*/ CH375_WR_CMD_PORT( CMD_DISK_WR_GO ); /* 繼續(xù)執(zhí)行USB存儲器的寫操作 */ } else break; /* 返回錯誤狀態(tài) */ } if ( mBlockCount == 0 ) { mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus == USB_INT_SUCCESS ) return( 0 ); /* 操作成功 */ } // if ( mIntStatus == USB_INT_DISCONNECT ) return( mIntStatus ); /* U盤斷開 */ mClearError( ); /* 清除U盤錯誤以便重試 */ return( mIntStatus ); /* 操作失敗 */ }


CH375接到寫扇區(qū)命令后,就發(fā)送了CBW命令,每次接完64個字節(jié),然后把這64個字節(jié)發(fā)送給U盤。這些動作都由CH375芯片自動完成。


哦,那 要寫到U盤里的數(shù)據(jù)應(yīng)該先存放在哪啊?比如說從智能儀器采集的數(shù)據(jù),我現(xiàn)在把從智能儀器接收的數(shù)據(jù)先放到緩沖區(qū)DATA_BUFFER里了,我要把這些數(shù)據(jù)寫到U盤里,應(yīng)該怎么辦啊?


數(shù)據(jù)先放到緩沖區(qū)里面,在調(diào)用mWriteSector函數(shù)就可以往U盤里面寫數(shù)據(jù)。


這樣不會把DATA_BUFFER里的數(shù)據(jù)覆蓋嗎?比如我把從上位機采集到的數(shù)據(jù)先放到DATA_BUFFER里了,然后調(diào)用 mWriteSector函數(shù)以后,不是還是往DATA_BUFFER里寫嗎?這樣原來的數(shù)據(jù)不會被覆蓋嗎?


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

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