請問CH378Q這個芯片扇區(qū)讀寫和字節(jié)讀寫各有什么優(yōu)劣啊?

請問CH378Q這個芯片扇區(qū)讀寫和字節(jié)讀寫各有什么優(yōu)劣啊?

還有你們有字節(jié)讀寫的例程嗎?

08H模式下能達到480Mbps高速USB通訊嗎?


還有個程序問題請麻煩一一回答下.

你好,網(wǎng)上下載的例程里面有一個?EXAM8這么個例程.里面的

mFlushBufferToDisk屬實讓人看不懂?

void mFlushBufferToDisk(UINT8 force)

{

? UINT8? status;


? if (force)? ? ? ? ? ? ? ? ? ? ? ? ? /* 強制刷新 */

? {

? ? status = (total + DEF_SECTOR_SIZE - 1) / DEF_SECTOR_SIZE;? ?/* 將緩沖區(qū)中的字節(jié)數(shù)轉換為扇區(qū)數(shù)(除以DEF_SECTOR_SIZE),長度加上DEF_SECTOR_SIZE-1用于確保寫入最后的零頭數(shù)據(jù) */

? ? if (status)

? ? {

? ? ? /* 有數(shù)據(jù) */

? ? ? status = CH378SecWrite(FileDataBuf, status, NULL);? ? /* 以扇區(qū)為單位向文件寫入數(shù)據(jù),寫入緩沖區(qū)中的所有數(shù)據(jù),含最后的零頭 */

? ? ? mStopIfError(status);


? ? ? /* 有些U盤可能會要求在寫數(shù)據(jù)后等待一會才能繼續(xù)操作,所以,如果在某些U盤中發(fā)生數(shù)據(jù)丟失現(xiàn)象,建議在每次寫入數(shù)據(jù)后稍作延時再繼續(xù) */

? ? ? mDelaymS(1);? ? ? ? ? ? ? ? ? ? ? /* 寫后延時,可選的,大多數(shù)U盤不需要 */

? ? ? memcpy(FileDataBuf, & FileDataBuf[ total & ~(DEF_SECTOR_SIZE - 1) ], total & (DEF_SECTOR_SIZE - 1));? ? ? ? ?/* 將剛才已寫入U盤的零頭數(shù)據(jù)復制到緩沖區(qū)的頭部 */

? ? ? total &= DEF_SECTOR_SIZE - 1;? ? ? ? ? ? ? /* 緩沖區(qū)中只剩下剛才已寫入U盤的零頭數(shù)據(jù),繼續(xù)保留在緩沖區(qū)中是為了方便以后在其后面追加數(shù)據(jù) */

? ? }

? ? NewSize = CH378GetFileSize();? ? ? ? ? ? ? ?/* 讀取當前文件長度,如果沒有零頭數(shù)據(jù),那么文件長度是DEF_SECTOR_SIZE的倍數(shù) */

? ? if (total)

? ? {

? ? ? NewSize -= DEF_SECTOR_SIZE - total;? ? ? ? ? /* 以扇區(qū)為單位,有零頭數(shù)據(jù),計算出真正的文件長度(有效數(shù)據(jù)的長度) */

? ? }

? ? CH378WriteVar32(VAR32_FILE_SIZE, NewSize);? ? ? ? ? /* 將正確的當前文件長度寫入CH378內存 */

? ? printf("Current File Size is %ld\n", NewSize);

? ? status = CH378SecWrite(FileDataBuf, 0, NULL);? ? ? ? ? ?/* 寫0長度,實際是刷新文件長度,將CH378內存中當前文件長度信息真正寫入U盤或者SD卡中 */

? ? mStopIfError(status);

? ? status = CH378SecLocate(0xFFFFFFFF);? ? ? ? ? ? /* 重新回到原文件的尾部,以扇區(qū)為單位,所以會忽略文件尾部的零頭數(shù)據(jù),下面如果再寫入數(shù)據(jù)將覆蓋尾部零頭數(shù)據(jù),不過該零頭數(shù)據(jù)有一份副本保留在緩沖區(qū)中,所以請放心 */

? ? mStopIfError(status);

? }


標紅的地方為什么要這樣操作,CH378GetFileSize();?不就是獲取的實際文件長度嗎? 為什么還要判斷total一下,而且如果獲取的文件長度是 515那么這么處理(NewSize -= DEF_SECTOR_SIZE - total;)了一下 不就剩下了5了嗎?


您好,這兩步驟是為了算出,當前文件里面,實際的數(shù)據(jù)長度是多少。后面再把寫入378緩沖區(qū)的數(shù)據(jù)長度也加載里面。算出實際長度,進行U盤或者SD卡寫入。


你好,煩請一一回答以下幾個問題.

  1. 請問CH378Q這個芯片扇區(qū)讀寫和字節(jié)讀寫各有什么優(yōu)劣

  2. 你們有字節(jié)讀寫的例程嗎?

  3. 08H模式下能達到480Mbps高速USB通訊嗎?

  4. 程序標紅部分CH378GetFileSize();已經是獲取了文件長度了呀,如果我沒搞錯的話NewSize -= DEF_SECTOR_SIZE - total;應該是等同于NewSize = NewSize-(DEF_SECTOR_SIZE - total);到這里就完全不能理解了. 這個獲取到的NewSize為什么要減去一個扇區(qū)呢?


您好

  1. 扇區(qū)讀寫比字節(jié)讀寫,速度上會更加快

  2. 字節(jié)讀寫的Demo,您可以參考CH378EVT里面的EXAM1?;蛘甙l(fā)送郵件至mj@wch.cn??梢蕴峁㏒T的相關工程。

  3. 讀卡器模式下,USB為2.0高速,但是實際的帶寬是小于這個的。

  4. 因為前面的處理中使用了扇區(qū)寫,扇區(qū)寫是針對一整個扇區(qū)的,再加上這個零頭數(shù)據(jù)的時候,指針就得偏回去去掉一個扇區(qū)大小。


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

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