求大神解救!?。?! CH374做主設(shè)備,按官方例程寫的: CH374_PORT_INIT( ); /* CH374接口初始化 */// Write374Byte(0x05, 0x08); /*--CH374復(fù)位--*/ mDelaymS( 1 ); Write374Byte(0x05, 0x04); /*--CH374停止復(fù)位--*/ mDelaymS( 50 ); // 等待CH374復(fù)位完成 Init374Host( ); // 初始化USB主機(jī); HostSetBusFree( ); // 設(shè)定USB主機(jī)空閑 CP2102R_count=10;/*---等待30秒,無設(shè)備則退出--*/ if ( Query374Interrupt( ) ) HostDetectInterrupt( ); // 如果有USB主機(jī)中斷則處理 if ( Query374DeviceIn( ) ) nop(); // 有USB設(shè)備 else {Btimeout=1;return;} /*--無USB設(shè)備,退出--*/ 。。。。。。
/*****后面還有一堆設(shè)置波特率之類的。 然后與下面的設(shè)備通信,此時(shí)是正常的。通信完后(實(shí)際上,下面兩句加不加,錯(cuò)誤都不變), s=CP2102_Start_stop(0x0000);//Uart_Stop Write374Byte(0x05, 0x05); /*--CH374停振*/
然后下一次連上設(shè)備再通信,重復(fù)上面CH374、USB初始化的代碼,發(fā)現(xiàn)無法通信了。具體是 執(zhí)行s=CP2102_Res_Data(BUF_RX1)函數(shù)中子函數(shù) 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--*/ } } 出現(xiàn)超時(shí)錯(cuò)誤。 我猜想是不是CH374復(fù)位有問題??望哪位大神不吝賜教?。。。。∪f分感謝?。?!