ch376芯片的一個bug,麻煩查下![原創(chuàng)]

最近在用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ù)之類的,都有正常的中斷返回的。

版主可以試試

據(jù)資料說是 USB接收事務(wù)完成時才會產(chǎn)生一個中斷,那么如果此時ch376無數(shù)據(jù)接收進(jìn)來,而去發(fā)送一個接收事務(wù),

會產(chǎn)生什么情況? 難道ch376就是死機異常了?

求解釋


這可不是BUG,說明你對CH376還不了解。 因為沒有數(shù)據(jù)時CP2102一直給CH376發(fā)送NAK。這樣CH376會一直重試。你可以設(shè)置重試次數(shù)讓CH376重試一定次數(shù)后,結(jié)束,會產(chǎn)生中斷。


好的,我設(shè)置下試試


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频