讀寫CH375中斷不全的問題

在測試CH375讀寫U盤時,先寫入一個扇區(qū),在讀一個扇區(qū),在中間需要加入8秒的延時。 不然,讀扇區(qū)的中斷就會少于9個。 unsigned char ReadSector(unsigned int address,unsigned char*pBuffer) { unsigned int Sector; unsigned char Block=8,IntStatus,Block_Size; SendCH375CMD(DISK_READ); //send read data command SendSingleData(address&0xff); //send address SendSingleData((address>>8)&0xff); SendSingleData((address>>16)&0xff); SendSingleData((address>>24)&0xff); SendSingleData(1); for(Block;Block!=0;Block--) { IntStatus=GetInterStatus(); //get the interrupt status if (IntStatus==USB_INT_DISK_READ) // USB存儲器讀數(shù)據(jù)塊,請求數(shù)據(jù)讀出 { SendCH375CMD(RD_USB_DATA); // 從CH375緩沖區(qū)讀取數(shù)據(jù)塊 Block_Size=GetSingleByte(); // 后續(xù)數(shù)據(jù)的長度 while (Block_Size--) // 根據(jù)長度讀取數(shù)據(jù) *(pBuffer++)=GetSingleByte(); // 將數(shù)據(jù)讀出 SendCH375CMD(DISK_RD_GO); // 繼續(xù)執(zhí)行USB存儲器的讀操作 } else break; // 返回錯誤狀態(tài) } if (Block==0) if((IntStatus=GetInterStatus())==USB_INT_SUCCESS) //等待中斷并獲取狀態(tài) return(0); // 操作成功

ClearError(); //清除U盤錯誤以便重試 return(IntStatus); // 操作失敗 } 但是,連續(xù)寫或讀多個扇區(qū)卻沒這個問題。后來,我在檢測到中斷腳為低與發(fā)送GET_STATUS命令之間加上40ms的延時,也可以。但是,還是沒找到根本的原因,請指教!


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

從上段程序上來說沒什么問題,讀一個扇區(qū)個連續(xù)讀應(yīng)該沒什么區(qū)別,那讀一個扇區(qū)的時候是如果中斷少于9個的話那肯定會有數(shù)據(jù)丟失的.那你讀出的數(shù)據(jù)丟失的現(xiàn)象是什么?前面丟后面丟?


前面5個中斷是正常的,也就是說,前320個字節(jié)是可以讀出來的,但是,后面的192個字節(jié)就讀不出來了。 連續(xù)讀和連續(xù)寫都沒這問題,都能完整讀寫。但寫完一個扇區(qū)再讀一個扇區(qū)就出錯了。串口的配置和波特率的設(shè)置都沒問題,不然,前面的通信也建立不起來。而且,這樣的問題,不是偶然出現(xiàn)的,每次測試都是只來5個中斷。所以也不會是串口被干擾的問題。


你把你完整的程序發(fā)送到我們技術(shù)支持郵箱里tech@wch.cn,看一下程序哪里有問題,修改完后交給你測試.請再寫清楚一下你的問題.


好的,謝謝


程序主要可能在初始化的時候流程不標(biāo)準(zhǔn),根據(jù)我們的建議去修改一下.我們建議這樣來做,因為你的程序很可能兼容性不高.


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

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