ch376 ep1(端點(diǎn)1)上傳中斷端點(diǎn)。 當(dāng)我向端點(diǎn)1上傳數(shù)據(jù)時(shí),總是會(huì)進(jìn)入中斷。這正常嗎? 而上位機(jī)讀取ep1的數(shù)據(jù)后,也會(huì)進(jìn)入中斷。 我的問題是,上傳數(shù)據(jù)和讀取數(shù)據(jù),ep1都會(huì)產(chǎn)生中斷嗎? 如果都會(huì)產(chǎn)生中斷,那我如何解決向ep1上傳數(shù)據(jù)時(shí)不產(chǎn)生中斷呢?
你是說PC端的中斷服務(wù)程序?
向端點(diǎn)1上傳數(shù)據(jù)時(shí),不可能產(chǎn)生中斷。 而上位機(jī)讀取ep1的數(shù)據(jù)后,會(huì)產(chǎn)生中斷。向端點(diǎn)1上傳數(shù)據(jù)時(shí),如果會(huì)產(chǎn)生中斷,檢查你中斷處理那塊,是不是哪些標(biāo)志沒有清
我也感覺奇怪。需要清除那些標(biāo)志呢。 我是用fpgA來控制ch376的。 當(dāng)向ep2上傳數(shù)據(jù)時(shí)不會(huì)產(chǎn)生中斷,而向ep1發(fā)送時(shí),發(fā)送完成后,上位機(jī)沒有接收,就進(jìn)入了中斷號(hào)9。
應(yīng)該不會(huì)這樣的。你這樣:端點(diǎn)1不要發(fā)CMD_UNLOCK_USB,然后你往端點(diǎn)1寫數(shù)據(jù),看會(huì)不會(huì)產(chǎn)生中斷。或者說你程序中是不是往端點(diǎn)1寫完數(shù)據(jù)就發(fā)送CMD_UNLOCK_USB命令 ?
這個(gè)命令我是在進(jìn)入中斷后處理的。 中斷處理程序是這樣的,先讀取中斷狀態(tài)碼,然后根據(jù)中斷碼執(zhí)行操作,執(zhí)行CMD_UNLOCK_USB 命令釋放USB緩沖區(qū)。
我的問題依然存在。我的處理方式是這樣的。 程序第一次運(yùn)行正常,一旦上位機(jī)讀取ep1的數(shù)據(jù)成功后,便進(jìn)入中斷,執(zhí)行CMD_UNLOCK_USB命令。 接著,如果下位機(jī)繼續(xù)往ep1寫數(shù)據(jù),執(zhí)行完寫數(shù)據(jù)后,便進(jìn)入了中斷號(hào)9。而且執(zhí)行寫時(shí)序后,進(jìn)入中斷,端點(diǎn)緩沖區(qū)都變成無效的。必須UNLOCK_USB后,才可以繼續(xù)讀寫緩沖區(qū)。
在初始化CH376之后,第一次上傳數(shù)據(jù)的時(shí)候是不需要解鎖緩沖區(qū)的。當(dāng)?shù)谝淮螌憯?shù)據(jù)計(jì)算機(jī)取走后,會(huì)產(chǎn)生EP1上傳成功中斷。此時(shí)解鎖USB緩沖區(qū)。之后可以往此端點(diǎn)緩沖區(qū)寫數(shù)據(jù)。簡單理解就是每次傳輸完成之后到下次需要傳輸數(shù)據(jù)之間必須要解鎖USB緩沖區(qū)