ch552做device有usb插入會(huì)請(qǐng)求描述符,如何判斷usb被拔出,是否有專(zhuān)門(mén)的寄存器記錄狀態(tài),請(qǐng)大神指點(diǎn)!
有如下幾種方法判斷:
1、自供電(未用VBUS),用一無(wú)上拉的IO引腳串個(gè)1K~5K電阻保護(hù)后檢查VBUS電平(VBUS上最好有20K下拉默認(rèn)低)
2、USB供電,不需要確認(rèn)(拔出就斷電了,判斷沒(méi)必要)
3、不管供電,USB拔出后(或者電腦睡眠后),SUSPEND狀態(tài)位會(huì)在大概3ms~8mS后置1
4、如果只是為了內(nèi)部研究技術(shù),可根據(jù)HOST有15K~50K下拉判斷。
? ? ?方法是在設(shè)備D+上用330K上拉電阻且關(guān)閉GPIO上拉和D+的1K5上拉,如果發(fā)現(xiàn)D+被330K維持在高電平說(shuō)明沒(méi)接電腦HOST,如果發(fā)現(xiàn)D+為低,那么看SUSPEND狀態(tài)位=0則開(kāi)啟1K5上拉,準(zhǔn)備USB工作,睡眠中斷發(fā)現(xiàn)SUSPEND狀態(tài)位=1時(shí)(說(shuō)明D+一直為高),且較長(zhǎng)時(shí)間(20mS以上),就關(guān)閉1K5, 再根據(jù)330K能否維持上拉判斷,能上拉說(shuō)明拔了,不能上拉說(shuō)明是睡眠、掛起(HOST仍有下拉),恢復(fù)1K5
第三種方法比較符合要求 ,軟件解決問(wèn)題,存在疑點(diǎn):1,平常552也會(huì)進(jìn)入休眠(需要設(shè)置串口接收喚醒,否知無(wú)法接收數(shù)據(jù))2,USB拔出后(或者電腦睡眠后)這兩個(gè)可以直接視為拔出狀態(tài),但是與疑點(diǎn)1沖突,無(wú)法直接判定為拔出狀態(tài)
可以監(jiān)測(cè)USB_MIS_ST寄存器的SUSPEND狀態(tài)位,當(dāng)設(shè)備斷開(kāi)或者主機(jī)休眠該位置 1