USB底層協議
USB它是串行總線,所以數據在總線上是一位一位傳輸的,先傳輸最低位數據,最后傳輸最高位數據。對于多個字節的數據傳輸呢,采用的是小端格式,即先傳輸低字節數據,最后傳輸高字節數據。
在USB中,數據是以包為單位進行傳輸的,所有的包都必須以SYNC字段開始,以EOP(End-of-Packet)結尾。在SYNC字段之后,緊跟著的是包標識符(PID),PID為一個字節,其中4位用于定義包的類型,另外4位是用來校驗PID的,PID格式如下:
在USB中,定義了四種類型的包,令牌包、數據包、握手包和特殊包,包類型詳細定義如下:
在令牌包的PID字段之后,還包含地址域,地址就包括設備地址和端點地址,設備地址共7位,總共可尋址128個地址,但是地址0是作為默認設備地址的,所以說,USB系統中,最多只能同時連接127個設備。端點地址共4位,可尋址16個端點。
在USB包最后,還包含5位的CRC檢驗碼,CRC校驗碼只對PID后面的數據進行校驗,不對PID進行校驗,因為PID本身就包含4位校驗碼。
包格式
令牌包格式
令牌包格式定義如下:
這里的令牌特指IN、OUT、SETUP令牌,而SOF包格式定義如下:
令牌包實例如下:
數據包格式
數據包包含包標識符(PID)和0到多個字節的數據,數據包類型總共四種,DATA0、DATA1、DATA2和MDATA。數據包格式定義如下:
數據包實例如下:
上圖為SETUP請求數據包,用于讀取設備的設備描述符。
握手包格式
握手包有三種ACK、NAK和STALL,其中ACK表示數據傳輸完成并且無錯誤,NAK表示設備不能接收數據或者沒有數據上傳,STALL表示設備不能進行數據傳輸。而NYET和ERR握手包只針對高速設備,表示設備沒有準備好或者出錯。握手包格式定義如下:
ACK握手包實例如下:
-
usb
+關注
關注
60文章
8070瀏覽量
269874 -
信號處理
+關注
關注
48文章
1055瀏覽量
103834 -
串行總線
+關注
關注
1文章
185瀏覽量
30950
原文標題:不用再為USB底層協議犯難了
文章出處:【微信號:eet-china,微信公眾號:電子工程專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
芯片封裝中的四種鍵合方式:技術演進與產業應用

MSP430F4250的四種模式分別是在什么情況下使用呢?
電氣設備的四種工作狀態
ad中端口的幾種類型
雙軸測徑儀的四種樣式!
濾波電路的四種類型是什么
負反饋的四種類型是什么
負反饋的四種類型及判斷方法
受控源四種類型及表示方法
簡述四種基本觸發器及其功能
功率放大電路的四種類型
元器件的包裝方式及常見的四種方式
介紹MCUboot支持的四種升級模式(2)

評論