USB學習總結

2021-10-01 15:08:38 字數 1548 閱讀 8847

個人學習usb坑中坑的學習知識總結,可能隨時更新。(會記錄很多斷層後續慢慢補齊)

usb列舉的過程為:

(type-c檢測到有host/dev接入=》切換到對應模式【type-c鏈結可以確定host/dev】)=》當host檢測到dp/dm被dev拉高則進行reset,並在第一次reset時調整通訊速度(見1.1.章節)=》獲取描述符,host配置address,並且發出第二次reset =》當reset完成後,在新的address上進行通訊,並完成configured。

1.1 關於usb裝置接入和速度確認:

本部分參考,這個博主有圖有說明,寫的很好:

1)usb裝置如何識別裝置速度

1.判斷dp/dm電阻: d-上面接電阻(上拉1.5k),說明是低速,d+上接電阻(上拉1.5k)說明是full/high speed。

2.若是d+上接電阻:這要通過jk訊號判別usb速度。

具體流程如下:

1.當usb 裝置read,且準備被列舉時,拉高對應dp/dm

2.當host檢測到dp/dm被拉高時,發出set_port_feature訊號,後再發出復位訊號即將dp/dm拉低(0v),最少10ms

3.表明dev的速度配置:k訊號

高速的dev,在接收到host的復位(dp/dm拉低)之後,內部會在d-上加上電流,因為host的hub的硬體關係,則會在dm上看到約800mv的電壓(持續時間1~7ms),即k訊號。反之,全速裝置在復位期間,不會有這個操作。用這個即可區分h/f speed。

4.是否是支援高速的host:

支援高速的host,在接收到k訊號後,會主動驅動自己打出kjkjkj序列(可看到波形高低變化)。表明自己支援usb20,則後續的通訊將在high speed進行。否則都將在full speed進行。

補充:當dev k訊號發車,host必須在100us內返回一連串的kjkjkj訊號(不能間斷,每個k/j持續時間為40~60us)。並且dev要在3對kj訊號之後的500us內切換到高速模式,因為切換玩後還處於復位訊號期間,所以此時還會處於一段時間的dp/dm為0。dev切換過程中:

1)埠1.5k上拉電阻(此時可以看到dm的電壓掉落,即400mv)

2)連線高速終端電阻

3)自己切換到高速狀態。至此握手完畢。

總結:從波形上來看,

1.dm被拉高(高於1.8v,看別人的圖是3.3v),則為low speed

2.dp 被拉高,在復位期間(dp/dm先被拉到0):

1.沒有k訊號(dm 800mv):dev不支援高速,後續在full speed下執行

2.有k訊號(dm 800mv):

1)沒有kjkj:dev支援高速,但是host不支援高速。最後在全速下執行

2)有kjkjkj:dev 和host都支援高速。並且之後在高速模式下執行

3.速度確認處於復位訊號中 ,即high speed的復位訊號過程是:dp/dm 0v ->800mv ->800mv kj訊號 ->400mv kj訊號-> dp/dm 0v。

2)通訊狀態電平:

1.差分訊號,幅值:一般為400mv和0v

2.空閒電平

USB協議總結

使用者將乙個usb裝置插入usb埠,主機為埠供電,裝置此時處於上電狀態。主機檢測裝置。集線器使用中斷通道將事件報告給主機。主機傳送get port status 讀埠狀態 請求,以獲取更多的裝置資訊。集線器檢測裝置是低速執行還是高速執行,並將此資訊送給主機,這是對get port status請求的...

USB轉串總結

一 usb 轉串模組原理 原理 常用晶元區別 max232 外圍電路簡單,但是占用pcb面積大,不美觀 pl2303 水貨多不穩定,外圍電路複雜,成本低 ch340 穩定,外圍電路簡單,成本相對高 計算機和mcu通訊的方法 1.只有串列埠介面的台式電腦 很老 交叉串列埠線 max232晶元 mcu ...

USB學習系列之一 USB簡介

1.usb universal serial bus 通用序列匯流排 2.即插即用pnp plug and play。3.usb是主從模式結構,usb通訊中分為usb主裝置和usb從裝置,主裝置和主裝置,從裝置和從裝置之間不能互連。4.usb otg on the go 正在執行中 同乙個裝置,在不...