USB 設備狀態切換
前面介紹了USB 設備的狀態如下:
Attached
Powered
Default
Address
Configured
Suspended

設備插入后,先進入【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)
可以看到LS 與 FS 信號電平完全相反。
從硬件分布可以看到。一個usb設備 可以同時支持LS/FS,HS/FS,但是不能同時支持LS 和 HS
對于HS 與 FS 的區分,依賴于高速握手信號(handshake)和 終端電阻RS(45)的掛載及切換。
設備斷開與連接
設備斷開:

設備連接:
對于高速設備,它先作為全速設備被識別出來,然后再被識別為高速設備。工作于高速模式時,D+的上拉電阻是斷開的,所以對于工作于高速模式的USB設備,無法通過D+的引腳電平變化監測到它已經斷開。
工作于高速模式的設備,D+、D-兩邊有RS 45歐姆的下拉電阻,用來消除反射信號:

當斷開高速設備后,Hub發出信號,得到的反射信號無法衰減,Hub監測到這些信號后就知道高速設備已經斷開。

速度枚舉

設備插入,進入powered 狀態
首先進入FS 檢測。USB device 進入IDLE 狀態
主機驅動產生SE0
Device responds Chirp K 信號。
Host 回應Chirp K 和 Chirp J 對至少保持3對
移除D+ 上RPU 并掛載高速設備終端電阻RS (45Ω),產生高速 J/K 信號
進入HS IDLE 狀態。
SOF
整個過程D+ D- 上電平變化。
全速 IDLE:D+ 為高電平,D- 低電平
全速ChirpJ:17.78ma * (15k || 45Ω) ≈ 800mv
高速J:17.78ma * (45Ω || 45 Ω) ≈ 400mv
高速 IDLE:D+, D- 接近低電平
高速握手信號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 完成速度枚舉)
SE0 期間進行高速握手信號
維持D+ 設備發出Chirp K
hub 回應Chirp K 和 Chirpj 對
移除上拉電阻,并掛載高速45Ω等效對地電阻,產生高速J/K 信號
設備準備接收Set_Address 請求
開始描述符獲取(設備描述符/配置描述符/...)
主機可訪問設備
審核編輯:劉清
-
上拉電阻
+關注
關注
5文章
366瀏覽量
31667 -
連接器
+關注
關注
104文章
16139瀏覽量
147049 -
USB設備
+關注
關注
0文章
57瀏覽量
17051 -
RPU
+關注
關注
0文章
7瀏覽量
7157
原文標題:USB 設備枚舉過程
文章出處:【微信號:漫談嵌入式,微信公眾號:漫談嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
STM32H750 FATFS文件系統掛載USB驅動,USB驅動枚舉過程一直處于ready狀態是為什么?
調試USB hots的時候,枚舉過不去,為什么?
如何重新啟動 FX3S 的枚舉過程?
USB HID設備枚舉失敗,返回STALL(請大俠們幫幫手,急)
USB枚舉和HID枚舉實例
USB枚舉失敗
FAQ0094 AT32 USB 不斷開連接, USB 設備重新枚舉操作
USB的枚舉過程
USB設備枚舉過程
評論