由域構(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
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
原文標(biāo)題:USB數(shù)據(jù)包解析
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
相關(guān)推薦
DCTCP與DCUDP的登錄數(shù)據(jù)包和心跳數(shù)據(jù)包與服務(wù)器端是如何交互的?
發(fā)表于 07-25 06:37
數(shù)據(jù)包的速度,即每秒大約 50 個(gè) UDP 數(shù)據(jù)包。高波特率唯一改變的是,在數(shù)據(jù)包較大的情況下,我可以以與輕量級(jí)數(shù)據(jù)包相同的速度發(fā)送數(shù)據(jù)包。
發(fā)表于 07-22 08:00
Android 發(fā)送一個(gè)小 UDP 數(shù)據(jù)包(5 字節(jié))。這個(gè)小數(shù)據(jù)包被我的微控制器在UART上接收到。微控制器將更大的數(shù)據(jù)包(可變長(zhǎng)度,約 100 字節(jié))發(fā)送回 UART。ESP在UART上接
發(fā)表于 07-18 07:17
丟棄在ESP完成之前不需要的數(shù)據(jù)包,以便通過(guò)串行端口發(fā)送它以接收下一個(gè)數(shù)據(jù)包,
如果沒(méi)有,我必須按順序讀取所有傳入的數(shù)據(jù)包,需要的和不需要的,
而且波特率不足,主機(jī)處理器開(kāi)銷(xiāo)大,
我能否在 ESP 結(jié)束之前通過(guò)串行端口停止傳入
發(fā)表于 07-16 06:18
我可以使用 AT CIPSEND 發(fā)送單個(gè)數(shù)據(jù)包。但是我必須發(fā)送一系列二進(jìn)制數(shù)據(jù)包。如何使用AT CISEND或AT CIPSENDBUF發(fā)送多個(gè)數(shù)據(jù)包,什么是正確的算法?
到目前為止,我嘗試
發(fā)表于 07-15 07:37
在 AN65974 中,短數(shù)據(jù)包和零長(zhǎng)數(shù)據(jù)包是什么意思?
非常感謝!
發(fā)表于 05-30 07:41
使用 IQxel-MW LifePoint 作為發(fā)生器并發(fā)送波形BT_1DH5_00001111_Fs80M.iqvsg,但無(wú)法在 AIROC 工具中接收數(shù)據(jù)包。
以下是從 IQxel 發(fā)送
發(fā)表于 05-22 06:39
隨著網(wǎng)絡(luò)芯片帶寬的持續(xù)提升,其內(nèi)部數(shù)據(jù)包處理單元的工作負(fù)載也隨之增加。然而,如果處理單元無(wú)法與網(wǎng)絡(luò)接口的傳入速率相匹配,將無(wú)法及時(shí)處理數(shù)據(jù)包,這不僅會(huì)導(dǎo)致數(shù)據(jù)包隨機(jī)丟失,更會(huì)降低網(wǎng)絡(luò)的吞吐量。
發(fā)表于 04-02 16:36
?451次閱讀
);__HAL_UART_DISABLE_IT( huart1, DMA_IT_HT);
2、發(fā)送數(shù)據(jù)包1
發(fā)表于 03-08 08:05
傳統(tǒng)的數(shù)據(jù)包處理方式是數(shù)據(jù)包先到內(nèi)核最后再到用戶(hù)層進(jìn)行處理。這種方式會(huì)增加額外的延遲和CPU開(kāi)銷(xiāo),嚴(yán)重影響數(shù)據(jù)包處理的性能。 DPDK 繞過(guò)內(nèi)核,在用戶(hù)空間中實(shí)現(xiàn)快速數(shù)據(jù)包處理。
發(fā)表于 02-25 11:28
?713次閱讀
電子發(fā)燒友網(wǎng)站提供《使用P4和Vivado工具簡(jiǎn)化數(shù)據(jù)包處理設(shè)計(jì).pdf》資料免費(fèi)下載
發(fā)表于 01-26 17:49
?0次下載
所有互聯(lián)網(wǎng)服務(wù),均依賴(lài)于TCP/IP協(xié)議棧。懂得數(shù)據(jù)是如何在協(xié)議棧傳輸?shù)模瑢?huì)幫助你提升互聯(lián)網(wǎng)程序的性能和解決TCP相關(guān)問(wèn)題的能力。 我們講述在Linux場(chǎng)景下數(shù)據(jù)包是如何在協(xié)議層傳輸?shù)摹?1、發(fā)送
發(fā)表于 11-11 11:33
?960次閱讀
什么是丟包 數(shù)據(jù)在Internet上是以數(shù)據(jù)包為單位傳輸?shù)?,單位為字?jié),數(shù)據(jù)在網(wǎng)絡(luò)上傳輸,受網(wǎng)絡(luò)設(shè)備,網(wǎng)絡(luò)質(zhì)量等原因的影響,使得接收到的數(shù)據(jù)
發(fā)表于 11-09 15:10
?760次閱讀
電子發(fā)燒友網(wǎng)站提供《數(shù)據(jù)包的生命周期.pdf》資料免費(fèi)下載
發(fā)表于 10-13 14:44
?0次下載
指針數(shù)據(jù)包 相信大多數(shù)人會(huì)將定長(zhǎng)數(shù)組換為 指針 , 每次使用時(shí)動(dòng)態(tài)的開(kāi)辟 CURR_LENGTH 大小的空間, 因?yàn)檫@樣可以避免造成 MAX_LENGTH - CURR_LENGTH 空間的浪費(fèi)
發(fā)表于 09-27 15:01
?396次閱讀
評(píng)論