由域構成的包有四種類型,分別是令牌包、數據包、握手包和特殊包,前面三種是重要的包,不同包的域結構不同,介紹如下:
1、令牌包
分為輸入包、輸出包、設置包和幀起始包(注意這里的輸入包是用于設置輸入命令的,輸出包是用來設置輸出命令的,而不是放數據的)其中輸入包、輸出包和設置包的格式都是一樣的:
SYNC + PID + ADDR + ENDP + CRC5(五位的校驗碼)
幀起始包的格式:
SYNC + PID + 11位FRAM + CRC5(五位的校驗碼)
2、數據包
分為DATA0包和DATA1包,當USB發送數據的時候,如果一次發送的數據長度大于相應端點的容量時,就需要把數據包分為好幾個包,分批發送,DATA0包和DATA1包交替發送,即如果第一個數據包是DATA0,那第二個數據包就是DATA1。但也有例外情況,在同步傳輸中(四類傳輸類型中之一),所有的數據包都是為DATA0,格式如下:
SYNC + PID + 0~1023字節 + CRC16
3、握手包
結構最為簡單的包,格式如下:
SYNC + PID
握手包包括 ACK、NAK、STALL以及NYET 四種,其中 ACK 表示肯定的應答,成功的數據傳輸。NAK 表示否定的應答,失敗的數據傳輸,要求重新傳輸。STALL表示功能錯誤或端點被設置了STALL屬性。NYET表示尚未準備好,要求等待。
原文標題:USB數據包解析
文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
usb
+關注
關注
60文章
8037瀏覽量
267528 -
數據包
+關注
關注
0文章
268瀏覽量
24630
原文標題:USB數據包解析
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
I2C總線數據包結構詳解
mtu配置步驟詳解 mtu與數據包丟失的關系
華納云:服務器平均響應時間和數據包大小之間的影響
USB協議分析儀的技術原理和應用場景
esp8266怎么做才能每秒發送更多的數據包呢?
使用AT SAVETRANSLINK時UDP數據包丟失怎么解決?
在Iphone4上運行UDP接收器,數據包丟失怎么解決?
能否在ESP結束之前通過串行端口停止傳入的UDP數據包的傳輸以解析下一個UDP數據包?
請問如何使用AT CIPSEND或AT CIPSENDBUF發送多個數據包?
NONOS如何檢查是否實際發送了UDP數據包?
在Fx3控制器中,USB數據包中的數據有效載荷無法正常發送的原因?
如何在AIROC GUI上獲取良好數據包和總數據包?
請問高端網絡芯片如何處理數據包呢?

評論