我用的是CH375A的主机模式,初始化后的返回值是2000h,不知道是什么原因,status返回的是四位16进制数,我觉得只有前面两位是有效值,也就是00100000,对照GET_STATUS的返回命令,应该是属于设备返回超时,设备没有返回,这该怎么办啊?[Emot]4[/Emot]
你指的375的初始化具体的是哪些步骤??
是CH375初始化u盘啊,也就是执行DISK_INIT命令之后,它的返回值是00100000
发这个命令之后,375有中断给你吗? UINT8 mInitDisk( void ) { /* 初始化磁盘 */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB设备断开 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出现错误 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 获取USB存储器的容量 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( Status == USB_INT_SUCCESS ) break; /* 出现错误 */ mDelaymS( 250 ); if(j==5) return(Status); } CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 获取USB存储器的容量 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( Status == USB_INT_SUCCESS ){ /* 出现错误 */ for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 获取USB存储器的容量 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( Status == USB_INT_SUCCESS ) break; /* 出现错误 */ } } return( 0 ); /* U盘已经成功初始化 */ } 这个是初始化U盘的流程,你可以参考下,还有就是你用的是什么单片机?如果是常用的单片机的话如51,AVR,430以及ARM,你可以采用我们的库来操作U盘,这样的话,U盘的支持率会提高很多