由域構(gòu)成的包有四種類(lèi)型,分別是令牌包、數(shù)據(jù)包、握手包和特殊包,前面三種是重要的包,不同包的域結(jié)構(gòu)不同,介紹如下:
1、令牌包
分為輸入包、輸出包、設(shè)置包和幀起始包(注意這里的輸入包是用于設(shè)置輸入命令的,輸出包是用來(lái)設(shè)置輸出命令的,而不是放數(shù)據(jù)的)其中輸入包、輸出包和設(shè)置包的格式都是一樣的:
SYNC + PID + ADDR + ENDP + CRC5(五位的校驗(yàn)碼)
幀起始包的格式:
SYNC + PID + 11位FRAM + CRC5(五位的校驗(yàn)碼)
2、數(shù)據(jù)包
分為DATA0包和DATA1包,當(dāng)USB發(fā)送數(shù)據(jù)的時(shí)候,如果一次發(fā)送的數(shù)據(jù)長(zhǎng)度大于相應(yīng)端點(diǎn)的容量時(shí),就需要把數(shù)據(jù)包分為好幾個(gè)包,分批發(fā)送,DATA0包和DATA1包交替發(fā)送,即如果第一個(gè)數(shù)據(jù)包是DATA0,那第二個(gè)數(shù)據(jù)包就是DATA1。但也有例外情況,在同步傳輸中(四類(lèi)傳輸類(lèi)型中之一),所有的數(shù)據(jù)包都是為DATA0,格式如下:
SYNC + PID + 0~1023字節(jié) + CRC16
3、握手包
結(jié)構(gòu)最為簡(jiǎn)單的包,格式如下:
SYNC + PID
握手包包括 ACK、NAK、STALL以及NYET 四種,其中 ACK 表示肯定的應(yīng)答,成功的數(shù)據(jù)傳輸。NAK 表示否定的應(yīng)答,失敗的數(shù)據(jù)傳輸,要求重新傳輸。STALL表示功能錯(cuò)誤或端點(diǎn)被設(shè)置了STALL屬性。NYET表示尚未準(zhǔn)備好,要求等待。
原文標(biāo)題:USB數(shù)據(jù)包解析
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
usb
+關(guān)注
關(guān)注
60文章
7945瀏覽量
264690 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
261瀏覽量
24396
原文標(biāo)題:USB數(shù)據(jù)包解析
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
mtu配置步驟詳解 mtu與數(shù)據(jù)包丟失的關(guān)系
USB協(xié)議分析儀的技術(shù)原理和應(yīng)用場(chǎng)景
請(qǐng)問(wèn)DCTCP與DCUDP 的登錄數(shù)據(jù)包和心跳數(shù)據(jù)包與服務(wù)器端是如何交互的?
esp8266怎么做才能每秒發(fā)送更多的數(shù)據(jù)包呢?
使用AT SAVETRANSLINK時(shí)UDP數(shù)據(jù)包丟失怎么解決?
能否在ESP結(jié)束之前通過(guò)串行端口停止傳入的UDP數(shù)據(jù)包的傳輸以解析下一個(gè)UDP數(shù)據(jù)包?
請(qǐng)問(wèn)如何使用AT CIPSEND或AT CIPSENDBUF發(fā)送多個(gè)數(shù)據(jù)包?
NONOS如何檢查是否實(shí)際發(fā)送了UDP數(shù)據(jù)包?
在AN65974中短數(shù)據(jù)包和零長(zhǎng)數(shù)據(jù)包是什么意思?
在Fx3控制器中,USB數(shù)據(jù)包中的數(shù)據(jù)有效載荷無(wú)法正常發(fā)送的原因?
如何在AIROC GUI上獲取良好數(shù)據(jù)包和總數(shù)據(jù)包?
請(qǐng)問(wèn)高端網(wǎng)絡(luò)芯片如何處理數(shù)據(jù)包呢?
![請(qǐng)問(wèn)高端網(wǎng)絡(luò)芯片如何處理<b class='flag-5'>數(shù)據(jù)包</b>呢?](https://file1.elecfans.com/web2/M00/C6/B5/wKgZomYLxKeASed8AAATQZ9dnJg517.png)
STM32H7接收數(shù)據(jù)包異常,一包接收的數(shù)據(jù)出現(xiàn)兩包發(fā)送的內(nèi)容怎么解決?
DPDK在AI驅(qū)動(dòng)的高效數(shù)據(jù)包處理應(yīng)用
![DPDK在AI驅(qū)動(dòng)的高效<b class='flag-5'>數(shù)據(jù)包</b>處理應(yīng)用](https://file1.elecfans.com/web2/M00/C0/E6/wKgZomXatDqAZd9FAAAzzFjjAK8970.png)
使用P4和Vivado工具簡(jiǎn)化數(shù)據(jù)包處理設(shè)計(jì)
![使用P4和Vivado工具簡(jiǎn)化<b class='flag-5'>數(shù)據(jù)包</b>處理設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論