ch567批量IN數(shù)據(jù)過(guò)程中,突然出現(xiàn)INT_FG=0x00的情況

請(qǐng)教一下,我在批量IN數(shù)據(jù)的過(guò)程中,在IN數(shù)據(jù)至上位機(jī)正常的情況下(CWB命令還沒(méi)執(zhí)行完),突然出現(xiàn)USB1_INT_FG=0x00的情況,然后就是USB1_INT_FG=0x01和0x05要求復(fù)位,導(dǎo)致數(shù)據(jù)無(wú)法正常上傳,這是什么原因造成的呢?

1649310467133584.png

1649310467964615.jpg


主要代碼如下:

? ? USB1_INT_FG = R8_USB1_INT_FG;

? ? USB1_INT_ST = R8_USB1_INT_ST;

? ? printf("R8_USB1_INT_FG:%02x;R8_USB1_INT_ST:%02x\n",USB1_INT_FG,USB1_INT_ST);

? ? if ((USB1_INT_FG & UIF_TRANSFER) && (USB1_INT_ST & (bUIS_TOG_OK|UIS_TOKEN_IN|2))) {

? ? ? ? USB1Dev_EDP2_IN_Deal();

? ? ? ? if(BOTStats == 0){

? ? ? ? ? ? //printf("判斷BOTStats設(shè)置為0。\n");

? ? ? ? break;

? ? ? ? }

? ? R8_USB1_INT_FG = 0xFF;

? ? }

? ? printf("err?\n");

}


按照帖子中描述先檢查關(guān)于連續(xù)IN時(shí)ACK狀態(tài)的處理。

http://m.findthetime.net/bbs/thread-86976-1.html


有可能的原因:

1、同步標(biāo)志出錯(cuò),主機(jī)一直收不到正確的包。

2、ACK狀態(tài)沒(méi)有及時(shí)的清楚,導(dǎo)致出現(xiàn)意外的包傳輸,導(dǎo)致包數(shù)量出錯(cuò)。

3、USB的中斷處理應(yīng)當(dāng)完整,僅以貼出代碼部分,可能會(huì)出現(xiàn)額外的中斷狀態(tài)清除(可能是需要處理的中斷)

4、如果是查詢法,需要額外注意中斷標(biāo)志的清除,避免誤清除


注意事項(xiàng):盡量縮短printf打印內(nèi)容,對(duì)于處理速度影響較大。

如果條件允許,采用USB分析儀抓包分析,可直接定位到問(wèn)題所在。

http://m.findthetime.net/downloads/USB20Monitor_ZIP.html


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

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