USB 設備狀態切換 前面介紹了USB 設備的狀態如下:
設備插入后,先進入【attached】 狀態,然后hub 端口配置進入【powered】 狀態;主機發起復位信號,設備進入【Default】狀態,然后分配設置地址,設備配置。
USB 設備識別 USB 內部連接1):高速數據傳輸。產生高速K/J 信號。D+/D- 上電流為17.78ma。
(2):用于低速獲取全速傳輸。產生SE0?
(3):差分數據接收。用于接收高速數據。
(4):傳輸數據包檢測。當接受差分信號低于數據閾值VHSSQ,數據無效
(5):低速差分數據接收。用于接收低速數據?
(6):高速端口檢測。當連接器電壓大于625mv 必須指示設備斷開。當電壓小于525mv 設備連接?
(7):單端接收。用于LS/FS
(8):下拉電阻(15k)。上游端口使用。一般 Host端
(9):上拉電阻(1.5k)。下游端口使用。Device
USB 硬件連接低速設備
全速/高速設備
整個usb 系統對于上游端口(一般是hub 或者host),D+ D- 連接著RPD(15k) 對于下游端口,一般是usb device。根據速度模式不同匹配不同的終端電阻。LS 設備 D- 連接著RPU(1.5k)。FS/HS D+ 連接著RPU(1.5k) 從硬件分布可以看到。一個usb設備 可以同時支持LS/FS,HS/FS,但是不能同時支持LS 和 HS 對于HS 與 FS 的區分,依賴于高速握手信號(handshake)和 終端電阻RS(45)的掛載及切換。 設備斷開與連接設備斷開:
設備連接:
對于高速設備,它先作為全速設備被識別出來,然后再被識別為高速設備。工作于高速模式時,D+的上拉電阻是斷開的,所以對于工作于高速模式的USB設備,無法通過D+的引腳電平變化監測到它已經斷開。
工作于高速模式的設備,D+、D-兩邊有RS 45歐姆的下拉電阻,用來消除反射信號:
當斷開高速設備后,Hub發出信號,得到的反射信號無法衰減,Hub監測到這些信號后就知道高速設備已經斷開。
速度枚舉首先進入FS 檢測。USB device 進入IDLE 狀態 Device responds Chirp K 信號。 Host 回應Chirp K 和 Chirp J 對至少保持3對 移除D+ 上RPU 并掛載高速設備終端電阻RS (45Ω),產生高速 J/K 信號 整個過程D+ D- 上電平變化。
全速ChirpJ:17.78ma * (15k || 45Ω) ≈ 800mv 高速J:17.78ma * (45Ω || 45 Ω) ≈ 400mv 高速握手信號Handshake高速握手信號是用來進行速度協商,區分FS/HS。當檢測到以下行為時將進入高速握手:
如果一個設備從suspend 狀態恢復時,則在設備檢測到SE0 支持不少于2.5us 立即進入高速握手。---- 掛起 如果設備正在從全速設備進行復位,則設備在檢測到SE0 不少于2.5us 不超過3ms 內,立即進入高速握手 ---- 上電 如果設備從高速狀態進行復位,那么設備在恢復到全速狀態之前等待不少于3ms。設備對總線狀態進行采樣,并檢查se0,不少于100us,立即進入高速握手。---- 復位 總結 整個USB 高速設備枚舉流程大致如下:
設備上電,Attached 檢測,在100ms 內Vbus > 4.01 V Hub poweron, 100ms 內D+/D- 電平穩定 主機發出復位信號SE0, 持續10ms(10ms 完成速度枚舉) 移除上拉電阻,并掛載高速45Ω等效對地電阻,產生高速J/K 信號