USB协议基础知识笔记
usb協議
功能層: 控制傳輸、中斷傳輸、塊傳輸(批量傳輸)、同步傳輸
設備層:管理USB設備、分配地址、讀取設備描述符
總線接口層:采用NRZI編碼-反向非歸零編碼(0將前一個電平翻轉,1不翻轉)
電氣特性
電壓:4.75~5.25V
電流:USB2.0高輸出功率最大500mA、低輸出功率最大100mA、 USB3.0最大輸出900mA
USB事務
usb事務處理是主機和設備數據通信的基礎。由: 令牌階段、數據階段、握手階段組成。
常用字段
-
同步字段(SYSC): 每個信息包以SYSC開始,低速/全速同步字段長度為8位,數據為10000000B,從低位開始發送。高速同步字段長度為32位,數據為80000000H。
-
包標志字段(PID):字段長度為8位,低4位類型字段和高4位校驗字段組成,校驗字段是類型字段的補碼,可驗證數據的正確性。4種信息包類型: 令牌包、握手包、特殊包和數據包。
包類型PID[3:0] 二進制包名說明 令牌包 1001 OUT PID 數據從主機發送到設備 ? 0001 IN PID 數據從設備發送到主機 ? 0101 SOF PID 作為幀的開始信息 ? 1101 SETUP PID 主機向設備發送的配置信息 握手包 0010 ACK PID 接收方正確接收到數據 ? 1010 NACK PID 接收方未能正確接收到數據 ? 1110 STALL PID 使用的端點被掛起 ? 0110 NYET PID 接收方沒有任何響應 數據包 0011 DATA0 PID 數據包為偶數據包 ? 1011 DATA1 PID 數據包為奇數據包 ? 0111 DATA2 PID 高速同步事務專用數據包 ? 1111 MDATA PID SPLIT事務專用數據包 特殊包 1100 PRE PID 令牌,主機發送先導包,使能低速通信 ? 1011 ERR PID 握手信息,SPLIT事務中的錯誤握手信號 ? 1000 SPLIT PID 高速SPLIT事務的令牌信息 ? 0100 PING PID 數據流量檢測控制
-
地址字段: 長度為7位,共128個地址值。地址0缺省,實際只有127個地址。在USB上電的時候主機先通過缺省地址0和usb設備進行通信,配置完成后,主機重新為設備分配一個地址。
-
端點字段: 長度為4位,總共可表示16個端點。低速:3個端點, 高速/全速:16個端點。,端點0是所有USB設備必須的,主要在設備上電初期和USB主機進行通信、完成配置。
-
幀號字段: 長度為11位,最大值07FFH,表示當前幀的幀號,每個幀發送的時候,該字段加1
-
數據字段: 最大長度1024字節,長度由傳輸類型和程序的需要決定。首先傳輸低字節,再傳輸高字節。
-
CRC字段: 循環冗余校驗字段。一般在發送方進行位填充之前進行。令牌包一般采用5位CRC校驗;數據包采用16位CRC校驗。
令牌包
-
IN令牌包: PID字段+ADDR字段+ENDP字段+CRC字段 數據從 設備 到 主機
? PID: 數據從設備發送至主機
? ADDR:USB設備地址
? ENDP: 發送數據的端點號
? CRC: ADDR和ENDP字段進行校驗
-
OUT令牌包: PID +ADDR + ENDP + CRC 數據從 主機 到 設備
-
SETUP令牌包: PID + ADDR + ENDP + CRC 數據從主機 到 設備, 配置信息
-
PING令牌包: PID +ADDR + ENDP + CRC 數據從 設備 到 主機, 握手信號傳輸
-
PRE令牌包: PID 低速數據傳輸先導包,在開始發送數據之前必須先發送該包(主機與集線器之間進行傳輸)。
-
數據包: PID + 數據字段 + 16位CRC PID指定數據包DATA0-DATA2或MDATA。數據字段的長度根據協議規定:低速最大長度8字節,全速最大長度 1023字節,高速最大長度1024字節
-
握手包:PID 接收方反饋狀態給發送方
事務處理
IN事務處理
主機發送IN令牌包: SYNC+IN+EOP
設備發送數據包: SYNC+數據包+EOP
主機發送握手包: SYNC+確認+EOP
OUT事務處理
? 主機發送OUT令牌包: SYNC+OUT+EOP
? 主機發送數據包: SYNC+數據包+EOP
? 設備發送握手包: SYNC+確認+EOP
? 3.SETUP事務處理(利用其對設備進行配置,常用于建立階段)
? 主機發送SETUP令牌包: SYNC+SETUP+EOP
? 主機發送數據包: SYNC+DATA0+EOP
? 設備發送握手包: SYNC+確認+EOP
? 4.PING事務處理(主要用于高速數數據傳輸中)
? 主機發送PING令牌包: SYNC+PING+EOP
? 設備發送握手包: SYNC+確認+EOP
? 5.SOF事務處理
? 主機主動發送。低速或者全速usb傳輸,每隔1ms產生一個SOF令牌包,對于高速傳輸,每
? 隔125us產生一個小幀,每隔7個小幀,產生一個SOF令牌包,不需要握手包。
USB設備的狀態
-
連接狀態: usb總線開始向usb設備供電,直到電源穩定。
-
上電狀態: usb設備處于上電狀態,當沒有被復位
-
缺省狀態: usb設備響應usb主機發出的復位信號,進行復位操作,復位結束后,設備進入缺省狀態。該狀態下:電流小于100mA,并且使用缺省的設備地址對一些usb事務進行處理。
-
地址狀態: 復位結束后,usb主機重新為設備分配一個唯一的地址。
-
配置狀態: 主機發出setconfiguration請求。
-
掛起狀態: usb設備在3ms內沒有檢測到總線活動,自動進入掛起狀態,保持原有的地址和配置。
USB數據傳輸
-
塊傳輸: 適用于傳輸大量且對傳輸時間和傳輸速率沒有要求的場合。數據包長度 -- 全速端點,可以是8、16、32、64字節;高速端點只能是512字節。數據量如果超過最大的數據包長,主控制器會將其分成多個塊事務處理。處理過程:
? 令牌 >> 數據 >> 握手
? 第一個數據包為DATA0,第二個應該是DATA1,之后可以是DATA0/DATA1
-
中斷傳輸: 適用于傳輸少量或對數據處理有周期要求的場合。數據長度 -- 低速端點最大數據包長度8字節;全速端點最大為64字節;高速端點為1024字節。
-
同步傳輸: 只能用于全速、高速設備。適用于傳輸大量、速率恒定的,且對周期有要求的數據。例如:音頻、視頻等。數據長度 -- 全速端點最大為1023字節;高速端點最大為1024字節
-
控制傳輸: 主要用于傳輸少量的,對傳輸時間和傳輸速率均無要求、但必須保證傳輸的數據。數據長度 -- 低速端點最大為8字節;全速端點可謂8、16、32、64字節;高速端點只能是64字節。
? 建立階段 + 數據階段 + 狀態階段
USB設備配置
-
設備描述符:表示USB設備的總體信息,一個USB設備只有一個設備描述符。固定18字節。
-
配置描述符: USB設備可以有一個或者多個配置,每個配置必須有一個配置描述符。固定9字節。
-
字符串描述符: 可選。用于保存供應商的名稱、產品序列等文本信息。
-
接口描述符: 接口為端點的集合,負責完成該USB設備的特定功能。固定9字節。
-
端點描述符: 指出端點的特性。固定7字節。
-
設備限定描述符: 設備既需要告訴傳輸也需要全速傳輸,則必須支持設備限定描述符。固定10字節。
-
其他速率配置描述符: 既采用高速傳輸又采用全速傳輸,則必須支持該描述符。固定9字節。
-
?
?
轉載于:https://www.cnblogs.com/BlogsOfLei/p/7749434.html
總結
以上是生活随笔為你收集整理的USB协议基础知识笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础之ATM-9
- 下一篇: 迁移到阿里云后,NTKO控件报存word