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