CH582 雙 USB 奇怪問題

我開發(fā)了一個涉及 SD 卡和閃存的項目,并模擬了運行良好的 UDisk。我已經(jīng)做了一個 if 定義來選擇在編譯時使用哪個 USB 端口,并且一切正常?,F(xiàn)在我測試了 UFI 庫 EXAM1 項目,它單獨運行良好。當我將 EXAM1 代碼結(jié)合到我現(xiàn)有的項目中時,無法檢測到 pendrive,因此它無法執(zhí)行文件寫入。如果我將 USB2 連接到 PC,則模擬的 UDISK 功能也能正常工作,EXAM1 代碼也能正常工作。我的意思是,只有當 USB2 連接到 PC(模擬 udisk)時,USB 驅(qū)動器才會被檢測到并工作。可能是什么問題?

USB_HostInit();
CHRV3LibInit();


????????s?=?ERR_SUCCESS;
????????if(R8_USB_INT_FG?&?RB_UIF_DETECT)
????????{
????????????R8_USB_INT_FG?=?RB_UIF_DETECT;
????????????PRINT("Analyse?RootHub\r\n");DelayMs(200);
????????????s?=?AnalyzeRootHub();
????????????if(s?==?ERR_USB_CONNECT){FoundNewDev?=?1;}
????????}

????????if(FoundNewDev?||?s?==?ERR_USB_CONNECT)
????????{
????????????FoundNewDev?=?0;
????????????mDelaymS(200);
????????????s?=?InitRootDevice();
????????????if(s?==?ERR_SUCCESS)
????????????{
????????????????CHRV3DiskStatus?=?DISK_USB_ADDR;
????????????????for(i=0;i!=10;i++)
????????????????{
????????????????????PRINT("Wait?DiskReady\r\n");
????????????????????s?=?CHRV3DiskReady();
????????????????????if(s?==?ERR_SUCCESS){break;}
????????????????????else{PRINT("%02x\r\n",?(uint16_t)s);}
????????????????????mDelaymS(50);
????????????????}

????????????????if(CHRV3DiskStatus?>=?DISK_MOUNTED)
????????????????{
????????????????????PRINT("Create\r\n");
????????????????????strcpy((PCHAR)mCmdParam.Create.mPathName,?"/WCH-045.TXT");
????????????????????s?=?CHRV3FileCreate();
????????????????????mStopIfError(s);
????????????????????PRINT("ByteWrite\r\n");
????????????????????i?=?sprintf((PCHAR)buf,?"This?file?is?generated?through?wch-ufi?library...\xa\xd");
????????????????????for(c=0;c<2;c++)
????????????????????{
????????????????????????mCmdParam.ByteWrite.mByteCount?=?i;
????????????????????????mCmdParam.ByteWrite.mByteBuffer?=?buf;
????????????????????????s?=?CHRV3ByteWrite();
????????????????????????mStopIfError(s);
????????????????????}
????????????????????PRINT("Close\r\n");
????????????????????mCmdParam.Close.mUpdateLen?=?1;
????????????????????i?=?CHRV3FileClose();
????????????????????mStopIfError(i);
????????????????}
????????????}
????????}


上述代碼是當 USB2 未連接到 PC 時不會執(zhí)行的考試 1 代碼。

確認一下你是不是一個USB口模擬Udisk,一個做HOST用CHRV3Lib庫操作Udisk?那么這樣的話,你的代碼中需要有兩套USB的代碼。


您好,感謝您的回復。我已經(jīng)設法解決了這個問題,現(xiàn)在一切都正常了。我的意思是兩個 USB(1 作為設備,1 作為主機)都可以正常工作。現(xiàn)在我?guī)缀鯖]有疑問了……

當我想使用單個 USB MCU 時,我想使用外部引腳或命令隨時將 USB 配置為設備/主機模式。在這種情況下,例如從設備模式到主機模式或反之亦然,我們是否需要硬重置 CPU?是否可以在不重置 MCU 的情況下隨時更改 USB 模式?隨時更改 USB 模式的正確步驟是什么?

CHRV3UFI 文件系統(tǒng)庫是否有重命名文件的選項?


可以不進行重置MCU。

先將USB斷開連接,在關(guān)閉USB功能后延時一段時間,比如說10ms,讓主機確定從機斷開后,再初始化另一個模式。

文件系統(tǒng)重命名的功能,可以參考USB HOST的操作。


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

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