我用的是CH375A的主機(jī)模式,初始化后的返回值是2000h,不知道是什么原因,status返回的是四位16進(jìn)制數(shù),我覺得只有前面兩位是有效值,也就是00100000,對照GET_STATUS的返回命令,應(yīng)該是屬于設(shè)備返回超時(shí),設(shè)備沒有返回,這該怎么辦???[Emot]4[/Emot]
你指的375的初始化具體的是哪些步驟??
是CH375初始化u盤啊,也就是執(zhí)行DISK_INIT命令之后,它的返回值是00100000
發(fā)這個(gè)命令之后,375有中斷給你嗎? 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)錯(cuò)誤 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯(cuò)誤 */ mDelaymS( 250 ); if(j==5) return(Status); } CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ){ /* 出現(xiàn)錯(cuò)誤 */ for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯(cuò)誤 */ } } return( 0 ); /* U盤已經(jīng)成功初始化 */ } 這個(gè)是初始化U盤的流程,你可以參考下,還有就是你用的是什么單片機(jī)?如果是常用的單片機(jī)的話如51,AVR,430以及ARM,你可以采用我們的庫來操作U盤,這樣的話,U盤的支持率會提高很多