個人學習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 正在執行中 同乙個裝置,在不...