求大神解救!!!! CH374做主设备,按官方例程写的: CH374_PORT_INIT( ); /* CH374接口初始化 */// Write374Byte(0x05, 0x08); /*--CH374复位--*/ mDelaymS( 1 ); Write374Byte(0x05, 0x04); /*--CH374停止复位--*/ mDelaymS( 50 ); // 等待CH374复位完成 Init374Host( ); // 初始化USB主机; HostSetBusFree( ); // 设定USB主机空闲 CP2102R_count=10;/*---等待30秒,无设备则退出--*/ if ( Query374Interrupt( ) ) HostDetectInterrupt( ); // 如果有USB主机中断则处理 if ( Query374DeviceIn( ) ) nop(); // 有USB设备 else {Btimeout=1;return;} /*--无USB设备,退出--*/ 。。。。。。
/*****后面还有一堆设置波特率之类的。 然后与下面的设备通信,此时是正常的。通信完后(实际上,下面两句加不加,错误都不变), s=CP2102_Start_stop(0x0000);//Uart_Stop Write374Byte(0x05, 0x05); /*--CH374停振*/
然后下一次连上设备再通信,重复上面CH374、USB初始化的代码,发现无法通信了。具体是 执行s=CP2102_Res_Data(BUF_RX1)函数中子函数 UINT8 WaitHostTransact374( UINT8 endp_addr, UINT8 pid, BOOL tog, UINT16 timeout ) { UINT8 i, s; while ( 1 ) { for ( i = 0; i < 40; i ++ ) { s = HostTransact374( endp_addr, pid, tog );
if ( s != ( DEF_USB_PID_NAK | 0x20 ) || timeout == 0 ) return( s ); mDelayuS( 20 ); } if ( timeout < 0xFFFF ) timeout --; /*if (Btimeout) return(s); */ /*--后加,20091125--*/ } } 出现超时错误。 我猜想是不是CH374复位有问题??望哪位大神不吝赐教啊!!!!万分感谢!!!