最近在用ch376和cp2102通訊,現(xiàn)在收發(fā)分開都是可以了,用的是論壇里的ch374操作cp2102的資料移植過去的
現(xiàn)發(fā)現(xiàn)一個問題 當(dāng)我用cpu控制ch376執(zhí)行接收事務(wù)后,如果cp2102無數(shù)據(jù)給ch376,那么ch376會死掉,無論我cpu發(fā)什么指令給ch376,他都不會正常響應(yīng),比如設(shè)置模式,復(fù)位ch376,都操作失敗,此時也無中斷響應(yīng)。
上代碼,版主可以自己去試一下
//***************************************************** //* NAME: issue_token(UINT8 endptog, UINT8 endp_and_pid ) //* FUCTION: 執(zhí)行USB事務(wù) //* 輸入?yún)?shù): endptog 同步標(biāo)志 endp_and_pid 端點號和令牌 //* 輸出參數(shù):無 //* 說明: 高4位目的端點號, 低4位令牌PID //****************************************************** void issue_token(u8 endptog, u8 endp_and_pid ) { xWriteCH376Cmd( CMD2H_ISSUE_TKN_X ); xWriteCH376Data( endptog ); xWriteCH376Data( endp_and_pid ); mDelayuS(3); }
就是寫了下面這句話--執(zhí)行接收事務(wù)之后,無論cpu如何操作ch376,都返回失敗,超時。 issue_token( 0,( mDiskBulkInEndp << 4 ) | DEF_USB_PID_IN );
其中 mDiskBulkInEndp 是USB設(shè)備的輸入端點,我這里為 1
其他都是正常的,比如我寫 執(zhí)行發(fā)送事務(wù)之類的,都有正常的中斷返回的。
版主可以試試