U盘无法初始化

U盘能检测到连接,返回为0X15,但是初始化后还是返回0X15,不知道为什么?试了好几个U盘,结果一样.有以下几个疑问请解答 UINT8 Status,i,j=1; j=CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ //Status = mWaitInterrupt( ); CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( ); 这里返回的0X15[b]文字[/b][u]文字[/u] 说明来了中断,那么另一段程序 UINT8 Status,i,j=1; j=CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ Status = mWaitInterrupt( ); 为什么等不到中断,按理说这应该有中断,并且返回也为0X15 unsigned char mWaitInterrupt() { /* 主机端等待操作完成, 返回操作状态 */ while(P3^2 ); /* 查询等待CH375操作完成中断(INT#低电平) */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ return( CH375_RD_DAT_PORT( ) ); }

[b]文字[/b][u]文字[/u]

另外一个问题是,如果来中断,那么P3.2口应该为高电平,在没执行CMD_GET_STATUS之前应该一直是高电平,执行后才变为低电平,可是我虽然来了中断,看不到这现象,在CMD_GET_STATUS前后一直是高电平,尽管确实检测到连接中断 还有我在检测到连接后,故意把Status设置为0 Status=0; delay2us( ); delay2us( ); delay2us( ); delay2us( ); delay2us( ); CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ 最后返回的是0X15 ,崩溃啊,为什么,请指教?


你用我们子程序库的话,在库的初始化成功之后,采用我们例子程序中的 while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); 来检测U盘插入就可以了,并且采用子程序库的话,也不需要你自己发CMD_DISK_INIT 命令来初始化U盘。 在没有产生中断之前,INT#一直为高电平,只有中断产生,它才拉低,直到执行了CMD_GET_STATUS之后,它才撤消低电平重新拉高。


我做实验遇到的问题是函数xQueryInterrupt里面的第一句while ( CH375_INT_WIRE )走不下去了,看样子是没产生中断。用的是子程序库CH375HFC.LIB.什么原因呢?


只要你的库的初始化函数通过了的话,那么,你插上U盘就会产生中断,除非你插上U盘之后电压降的太低,导致芯片不正常工作。


只有登录才能回复,可以选择微信账号登录