請問USB傳輸過程里,對于設(shè)備端的中斷處理,當(dāng)狀態(tài)位出現(xiàn)掛起或者喚醒的請求包,中斷進(jìn)入bUX_IF_SUSPEND對應(yīng)的處理。
此時對于USB掛起事件還需要自己去拉電平控延時處理嘛?還是硬件會按照USB協(xié)議進(jìn)行底層處理?對于設(shè)備被掛起的情況,又應(yīng)該如何讓主機(jī)重新開始進(jìn)行傳輸(不是總線復(fù)位,是如何resume喚醒)?
請問USB傳輸過程里,對于設(shè)備端的中斷處理,當(dāng)狀態(tài)位出現(xiàn)掛起或者喚醒的請求包,中斷進(jìn)入bUX_IF_SUSPEND對應(yīng)的處理。
此時對于USB掛起事件還需要自己去拉電平控延時處理嘛?還是硬件會按照USB協(xié)議進(jìn)行底層處理?對于設(shè)備被掛起的情況,又應(yīng)該如何讓主機(jī)重新開始進(jìn)行傳輸(不是總線復(fù)位,是如何resume喚醒)?
suspend主要分兩種情況,以電腦做USB HOST為例,電腦睡眠時的suspend和其他。
電腦睡眠之前通常會SET FEATURE,配置遠(yuǎn)程喚醒,那設(shè)備有需要就發(fā)送K信號去喚醒電腦就行。
其他時候的suspend多半在枚舉階段伴隨總線復(fù)位出現(xiàn),這種通常沒啥要處理的,單片機(jī)正常清個中斷就行。
當(dāng)然還有些時候,因為一些數(shù)據(jù)交互上的錯誤,主機(jī)認(rèn)為設(shè)備不太正常,發(fā)個suspend,那這是主機(jī)真的不想理你了。。。
所以suspend之后,USB設(shè)備干不了啥。尤其是在開發(fā)USB設(shè)備過程中收到了suspend,那應(yīng)該再往前查查,是不是什么地方傳輸沒做好。