我枚举过程是: 获取设备描述符-〉配置地址->获取配置描述符-〉加载usb配置。 如果打印机开机接入ch375,枚举成功,控制没有问题。 但是把打印机接入pc,枚举之后不关打印机,再接到ch375,枚举失败。 这是为什么? 搞了两天了也没明白。
获取设备描述符之前这样处理一下: 检测到打印机连接之后,375复位一下总线,等待打印机重新连接,然后再获取描述符
谢谢SCM。我用这个函数复位的。可是没有效果。还有什么办法吗? void ResetUsb(void) {
while(!SetUsbMode(7)) ; /* 复位USB设备,CH375向USB信号线的D+和D-输出低电平 */ /* 如果单片机对CH375的INT#引脚采用中断方式而不是查询方式,那么应该在复制USB 设备期间禁止CH375中断,在USB设备复位完成后清除CH375中断标志再允许中断 */ DelayNus(30);//Ch375要求20us while(!SetUsbMode( 6 )) ; if(TestConnect()==USB_INT_CONNECT)/* 等待复位之后的设备端再次连接上来 */ DelayNms(500);/* 有些USB设备要求延时数百毫秒后才能工作 */ }
总线复位时间应不少于1MS,你在 while(!SetUsbMode(7)) 后延时10MS再进行其他操作