USB的掛起和喚醒 (Suspend and Resume)
1. 連接狀態(tài)(Attached):設備連接,但未提供電源。
2. 上電狀態(tài)(Powered):設備被復位(Reset),或者說(shuō)處于地址、配置狀態(tài)。(參見(jiàn)USB枚舉過(guò)程,USB Specification, page 241)
3. 掛起狀態(tài)(Suspended):3 ms未見(jiàn)總線(xiàn)活動(dòng)而處于省電狀態(tài),設備不可用,但仍然保持原有的USB地址和配置。
本文引用地址:http://dyxdggzs.com/article/201612/329062.htm設備的掛起
我們知道,在USB系統中,正常狀態(tài)下hub或root hub會(huì )一直周期性地發(fā)送SOF包(Start Of Frame,全速USB每1ms發(fā)送一個(gè),高速USB則是125μs發(fā)送一個(gè))。根據USB協(xié)議,如果USB線(xiàn)上一直處于空閑(Idle)狀態(tài)超過(guò)3ms,設備應該把它當作一個(gè)掛起(Suspended)信號,要求設備在10ms內進(jìn)入掛起狀態(tài),并把設備所需的電流大小降到規定的值(對于low-power設備,要求是500 μA,而對于high-power或支持遠程喚醒(remote wakeup)功能的設備是2.5mA【Section 7.2.3, Pg176】)。在掛起狀態(tài)中,設備必須繼續向數據項D+/D-的上拉電阻提供電壓以維持Idle狀態(tài)。而對于USB2.0高速設備,還有些額外的要求:
1. 高速設備在收到掛起信號(3ms空閑)后,應在0.125ms內切換到全速狀態(tài),也就是說(shuō)要把終端電阻移除,并在D+數據線(xiàn)上重新掛上1.5k上拉電阻。
2. 設備在隨后的100-875μs內檢測數據線(xiàn)上的狀態(tài)。如果該狀態(tài)是一個(gè)Full speed J,那么說(shuō)明host發(fā)下來(lái)的是一個(gè)掛起信號;如果此時(shí)該狀態(tài)是SE0,說(shuō)明是host drive數據線(xiàn)D+到0,這是一個(gè)復位信號(復位信號會(huì )持續至少10ms時(shí)間)。
要注意的是高速設備在掛起狀態(tài)時(shí)處于高速模式,只是所用的是全速信號。一旦從掛起狀態(tài)恢復回來(lái),會(huì )馬上進(jìn)入高速工作狀態(tài)而無(wú)需進(jìn)行復位操作。
設備的喚醒
設備處于掛起狀態(tài)時(shí),任何總線(xiàn)上的活動(dòng)(非空閑信號)都可以把設備喚醒/恢復,從而退出低功耗模式。(同樣,設備也可以換醒host,比如電腦待機時(shí)通過(guò)USB鍵盤(pán)來(lái)?yè)Q醒主機,這種功能稱(chēng)之為“遠程喚醒”(remote wakeup),不在本文的討論范圍內。)
因為設備掛起時(shí)處于全速信號,在當host需要把將設備退出suspend狀態(tài)時(shí),需要先發(fā)送一個(gè)持續時(shí)間超過(guò)20ms的Fulll Speed K狀態(tài)。設備看到K狀態(tài)結束的1.3us內醒過(guò)來(lái),而host需要在3ms內發(fā)送uSOF信號以維持正常的高速信號模式,否則設備又將進(jìn)入suspend。如下圖所示:
評論