我开发了一个涉及 SD 卡和闪存的项目,并模拟了运行良好的 UDisk。我已经做了一个 if 定义来选择在编译时使用哪个 USB 端口,并且一切正常。现在我测试了 UFI 库 EXAM1 项目,它单独运行良好。当我将 EXAM1 代码结合到我现有的项目中时,无法检测到 pendrive,因此它无法执行文件写入。如果我将 USB2 连接到 PC,则模拟的 UDISK 功能也能正常工作,EXAM1 代码也能正常工作。我的意思是,只有当 USB2 连接到 PC(模拟 udisk)时,USB 驱动器才会被检测到并工作。可能是什么问题?
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 时不会执行的考试 1 代码。