求助:U盤問題

做U盤轉(zhuǎn)存是不是也要和打印機一樣獲取設(shè)備描述符呀? 謝了!

你所說的轉(zhuǎn)存是不是通過375將一個U盤中的文件轉(zhuǎn)存到另一個U盤中嗎?375內(nèi)置固件處理海量存儲設(shè)備的專用通訊協(xié)議,并不需要獲取描述符。


不是 就是將東西直接存到U盤,往U盤里寫數(shù)據(jù)


不需要,你下載CH375EVT.ZIP,其中CH375EVT\PUB\MCS51C\MISCELL\CH375EV0.C是將U盤當(dāng)作存儲器以扇區(qū)直接操作的例子。


如果是操作物理扇區(qū)的話,那么可以參考上面所說的,如果是以文件系統(tǒng)的方式的話,那么請參考我們的庫來操作


我是在等待你們的庫,我們用的EZ80的CPU 沒有現(xiàn)成的庫可以用 還在等待你們的文件系統(tǒng)方式的通用代碼


如果沒有庫 我初始化U盤是可以的吧 現(xiàn)在到U盤是否準備好這里就不行了 請問可能出現(xiàn)的原因是什么 返回值0x1f


USB存儲器操作失敗


檢測到U盤連接上來后,初始化U盤你用下面的代碼試試看: UINT8 mInitDisk( void ) { /* 初始化磁盤 */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB設(shè)備斷開 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲器 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出現(xiàn)錯誤 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ mDelaymS( 250 ); if(j==5) return(Status); } CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 檢查USB 存儲設(shè)備的錯誤 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ){ /* 出現(xiàn)錯誤 */ for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 檢查USB 存儲設(shè)備是否就緒*/ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ } } return( 0 ); /* U盤已經(jīng)成功初始化 */ }


我們的硬件電路是通過cpu可口控制中斷的 開了中斷如果將初始化都放進去 那么整個初始化過程就是在中斷里執(zhí)行的了


不應(yīng)該按照你說的這種說法來做,應(yīng)該是初始化是在你的主程序里面來做,首先上來延時50-100MS,接下來就是設(shè)置模式,設(shè)置完模式之后就是檢測設(shè)備連接,如果檢測到設(shè)備連接之后就進行設(shè)備的初始化,如果是U盤的話,那么就按照上面的例子程序?qū)盤進行初始化,初始化完成之后就需要對U盤進行操作


那就是說在對U盤操做的時候CPU還是可以做其他工作的嗎?


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

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