引用: http://hi.baidu.com/doyanger/blog/item/f72ecaef8fcc7d212cf53433.html
USB協議的第9章講到USB可見設備狀態[Universal Serial Bus Specification, Section 9.1.1, Pg 239],分為連接(Attached),上電(Powered),默認(Default),地址(Address),配置(Configured)和掛 起(Suspended)6個狀態。所謂可見,即USB系統和主機可見的狀態,其他狀態屬於USB設備內部而不可見。其中有關電源的,大致可分下面三類:
1. 連接狀態(Attached):設備連接,但未提供電源。
2. 上電狀態(Powered):設備被覆位(Reset),或者說處於地址、配置狀態。(參見USB枚舉過程,USB Specification, page 241)
3. 掛起狀態(Suspended):3 ms未見總線活動而處於省電狀態,設備不可用,但仍然保持原有的USB地址和配置。
設備的掛起
我們知道,在USB系統中,正常狀態下hub或root hub會一直週期性地發送SOF包(Start Of Frame,全速USB每1ms發送一個,高速USB則是125µs 發送一個)。根據USB協議,如果USB線上一直處於空閒(Idle)狀態超過3ms,設備應該把它當作一個掛起(Suspended)信號,要求設備在 10ms內進入掛起狀態,並把設備所需的電流大小降到規定的值(對於low-power設備,要求是500 µA,而對於high-power或支持遠程喚醒(remote wakeup)功能的設備是2.5mA【Section 7.2.3, Pg176】)。在掛起狀態中,設備必須繼續向數據項D+/D-的上拉電阻提供電壓以維持Idle狀態。而對於USB2.0高速設備,還有些額外的要求:
1. 高速設備在收到掛起信號(3ms空閒)後,應在0.125ms內切換到全速狀態,也就是說要把終端電阻移除,並在D+數據線上重新掛上1.5k上拉電阻。
2. 設備在隨後的100-875µs內檢測數據線上的狀態。如果該狀態是一個Full speed J,那麼說明host發下來的是一個掛起信號;如果此時該狀態是SE0,說明是host drive數據線D+到0,這是一個復位信號(復位信號會持續至少10ms時間)。
要注意的是高速設備在掛起狀態時處於高速模式,只是所用的是全速信號。一旦從掛起狀態恢復回來,會馬上進入高速工作狀態而無需進行復位操作。
USB High Speed Suspend Signal
設備的喚醒
設備處於掛起狀態時,任何總線上的活動(非空閒信號)都可以把設備喚醒/恢復,從而退出低功耗模式。(同樣,設備也可以換醒host,比如電腦待機時通過USB鍵盤來換醒主機,這種功能稱之為「遠程喚醒」(remote wakeup),不在本文的討論範圍內。)
因為設備掛起時處於全速信號,在當host需要把將設備 退出suspend狀態時,需要先發送一個持續時間超過20ms的Fulll Speed K狀態。設備
看到K狀態結束的1.3us內醒過來,而host需要在3ms內發送uSOF信號以維持正常的高速信號模式,否則設備又將進入 suspend。如下圖所示:
留言列表