用CH375做主机,U盘插上之后,可以正确发现U盘,并检测到USB_INIT_CONNECT中断,然后,我发出DISK_INIT命令来初始化U盘,可是收到的中断都是USB_INIT_CONNECT,这是为什么??
那你测下USB口的电压是多少,还有UD+,UD-有没有串电阻(串的电阻不能大于5欧姆).还有在程序中检测到U盘连接后发CMD_GET_STATUS获取中断状态,再发DISK_INIT命令.
问题已经解决,我在发出DISK_INIT命令之后,加了一个100MS的延迟,就OK了! 不过,现在又有一个新问题,就是无法读取U盘的扇区,在发出DISK_READ之后,收到的中断总是DISK_INIT_ERR,以下是我读扇区0的程序断,还请各位帮我看看 USB_COMW(CMD_DISK_READ);//读取设备 DelayMS(100);//延迟100MS USB_DATW(0x00); DelayMS(10); USB_DATW(0x00); DelayMS(10); USB_DATW(0x00); DelayMS(10); USB_DATW(0x00); DelayMS(10); USB_DATW(0x01); DelayMS(10); flag=0; while(1) { if(Interrupt()==USB_INT_DISK_READ) { USB_COMW(CMD_RD_USB_DATA); DelayMS(10); len=USB_DATR(); Wait1us(); for(i=0;i { Wait1us(); buf[flag*64+i]=USB_DATR(); }
USB_COMW(CMD_DISK_RD_GO); flag++; } else { if(Interrupt()==USB_INT_SUCCESS) { LCD_GotoXY(0,80); LCD_DispStr("USB_INT_SUCCESS"); break; } if(Interrupt()==USB_INT_DISK_ERR) { LCD_GotoXY(0,80); LCD_DispStr("USB_INT_DISK_ERR"); break; } } }
没人帮忙吗?我都整了一天了,郁闷死了!
读写函数没必要加那么多的延时,你使用的是什么单片机,用的是总线方式还是别的方式,按照你写的程序的话,U盘可能会挂起
我用的是arm,philips的LPC2214。我一开始就是没有加延时的,结果一样的,收到的中断也是DISK_INI_ERR,而且读写扇区的结果都是一样的。延时是后来加上去的,也没有用!!!
收到DISK_INT_ERROR后,发错误查询命令,读取错误内容,再根据内容做处理。如果连错误内容都读不出你就是倒霉了。
楼上大哥 看邮箱
我也遇到这问题,程序如: U8 Status=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); // 产生操作完成中断, 获取中断状态,确保中断开 CH375_WR_CMD_PORT( CMD_DISK_INIT ); // 初始化USB设备 Status = mWaitInterrupt( ); // 等待中断并获取状态 if ( Status != USB_INT_SUCCESS ){ //****Status=0x15 在这里卡住了 Uart_Printf_1("\nUSB设备操作失败\n"); // 出现错误 return 1; } else return 0; }
Status=0x15 在这里卡住了 请求帮助?谢谢!