新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > USB的掛起和喚醒 (Suspend and Resume)

        USB的掛起和喚醒 (Suspend and Resume)

        作者: 時間:2016-12-12 來源:網(wǎng)絡 收藏
        USB協(xié)議的第9章講到USB可見設備狀態(tài)[Universal Serial Bus Specification, Section 9.1.1, Pg 239],分為連接(Attached),上電(Powered),默認(Default),地址(Address),配置(Configured)和掛起(Suspended)6個狀態(tài)。所謂可見,即USB系統(tǒng)和主機可見的狀態(tài),其他狀態(tài)屬于USB設備內部而不可見。其中有關電源的,大致可分下面三類:
        1. 連接狀態(tài)(Attached):設備連接,但未提供電源。
        2. 上電狀態(tài)(Powered):設備被復位(Reset),或者說處于地址、配置狀態(tài)。(參見USB枚舉過程,USB Specification, page 241)

        3. 掛起狀態(tài)(Suspended):3 ms未見總線活動而處于省電狀態(tài),設備不可用,但仍然保持原有的USB地址和配置。

        本文引用地址:http://www.104case.com/article/201612/329062.htm

        設備的掛起
        我們知道,在USB系統(tǒng)中,正常狀態(tài)下hub或root hub會一直周期性地發(fā)送SOF包(Start Of Frame,全速USB每1ms發(fā)送一個,高速USB則是125μs發(fā)送一個)。根據(jù)USB協(xié)議,如果USB線上一直處于空閑(Idle)狀態(tài)超過3ms,設備應該把它當作一個掛起(Suspended)信號,要求設備在10ms內進入掛起狀態(tài),并把設備所需的電流大小降到規(guī)定的值(對于low-power設備,要求是500 μA,而對于high-power或支持遠程喚醒(remote wakeup)功能的設備是2.5mA【Section 7.2.3, Pg176】)。在掛起狀態(tài)中,設備必須繼續(xù)向數(shù)據(jù)項D+/D-的上拉電阻提供電壓以維持Idle狀態(tài)。而對于USB2.0高速設備,還有些額外的要求:
        1. 高速設備在收到掛起信號(3ms空閑)后,應在0.125ms內切換到全速狀態(tài),也就是說要把終端電阻移除,并在D+數(shù)據(jù)線上重新掛上1.5k上拉電阻。
        2. 設備在隨后的100-875μs內檢測數(shù)據(jù)線上的狀態(tài)。如果該狀態(tài)是一個Full speed J,那么說明host發(fā)下來的是一個掛起信號;如果此時該狀態(tài)是SE0,說明是host drive數(shù)據(jù)線D+到0,這是一個復位信號(復位信號會持續(xù)至少10ms時間)。
          要注意的是高速設備在掛起狀態(tài)時處于高速模式,只是所用的是全速信號。一旦從掛起狀態(tài)恢復回來,會馬上進入高速工作狀態(tài)而無需進行復位操作。

         如上圖所示,Host在a點停止發(fā)送SOF,系統(tǒng)處于SE0狀態(tài),b點是3ms時間點,之后的125μs內,設備移除終端電阻,并掛上1.5k上拉。此時如host發(fā)送的是suspend信號,那它就不會不drive D+數(shù)據(jù)線,導致D+被設備拉高,形成一個Full Speed J狀態(tài)。在c點之后100-875μs內設備檢測此時host行為,發(fā)現(xiàn)是suspend信號,設備內部進入低功耗的掛起(suspend)狀態(tài)。(假如hsot發(fā)送的是復位信號,那么當設備在c點掛1.5k電阻之后,由于host對D+線的drive作用,D+線無法被拉高,仍然處于SE0狀態(tài),設備在c點之后的檢測,發(fā)現(xiàn)的還是SE0狀態(tài),等到10ms后就可判斷這是一個復位信號,進行設備復位操作。)

        設備的喚醒
          設備處于掛起狀態(tài)時,任何總線上的活動(非空閑信號)都可以把設備喚醒/恢復,從而退出低功耗模式。(同樣,設備也可以換醒host,比如電腦待機時通過USB鍵盤來換醒主機,這種功能稱之為“遠程喚醒”(remote wakeup),不在本文的討論范圍內。)
          因為設備掛起時處于全速信號,在當host需要把將設備退出suspend狀態(tài)時,需要先發(fā)送一個持續(xù)時間超過20ms的Fulll Speed K狀態(tài)。設備看到K狀態(tài)結束的1.3us內醒過來,而host需要在3ms內發(fā)送uSOF信號以維持正常的高速信號模式,否則設備又將進入suspend。如下圖所示:



        關鍵詞: USB掛起喚

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 晋中市| 庆云县| 封开县| 元江| 聊城市| 洱源县| 随州市| 瑞金市| 临安市| 崇礼县| 巴南区| 乐东| 全南县| 长岛县| 泰安市| 铜川市| 成安县| 玉环县| 周口市| 丹棱县| 顺平县| 化隆| 白玉县| 兴文县| 德化县| 新巴尔虎右旗| 同心县| 江达县| 崇左市| 安陆市| 昌平区| 本溪| 钟祥市| 新宾| 县级市| 嘉兴市| 象州县| 威宁| 本溪市| 晋江市| 通江县|