由域構(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)載。文章觀點(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)推薦
MTU(Maximum Transmission Unit)即最大傳輸單元,是指一種通信協(xié)議的某一層上面所能通過(guò)的最大數(shù)據(jù)報(bào)大小,單位是字節(jié)。MTU配置步驟及其與數(shù)據(jù)包丟失的關(guān)系如下: MTU配置
發(fā)表于 12-16 14:33
?534次閱讀
信息。
數(shù)據(jù)顯示:解析后的數(shù)據(jù)會(huì)以圖形化界面展示出來(lái),如波形圖、時(shí)序圖、數(shù)據(jù)包列表等,幫助工程師更直觀地了解USB設(shè)備的通信過(guò)程。
觸發(fā)功能
發(fā)表于 09-24 14:29
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
我發(fā)現(xiàn)進(jìn)入深度睡眠通常無(wú)法傳輸發(fā)送的最后一個(gè) UDP 數(shù)據(jù)包。我現(xiàn)在將睡眠延遲 30 毫秒,這是一個(gè)黑客。
我寧愿有一種方法來(lái)檢查是否可以休眠,或者以其他方式能夠注冊(cè)指示數(shù)據(jù)包已發(fā)送的回調(diào)(無(wú)線電發(fā)送緩沖區(qū)為空)。
說(shuō)清楚:我需要知道是 ESP 發(fā)送了它,而不是像 U
發(fā)表于 07-12 06:14
在 AN65974 中,短數(shù)據(jù)包和零長(zhǎng)數(shù)據(jù)包是什么意思?
非常感謝!
發(fā)表于 05-30 07:41
在 Fx3 控制器中,在流式傳輸過(guò)程中,從主機(jī)收到了意外的端點(diǎn)停止請(qǐng)求。 在調(diào)試過(guò)程中,我發(fā)現(xiàn) USB 數(shù)據(jù)包中的數(shù)據(jù)有效載荷無(wú)法正常發(fā)送,請(qǐng)問(wèn)出現(xiàn)這種錯(cuò)誤的原因是什么。 下面附有錯(cuò)誤圖像和完整的
發(fā)表于 05-28 06:37
使用 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
?632次閱讀
);__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)核最后再到用戶層進(jìn)行處理。這種方式會(huì)增加額外的延遲和CPU開(kāi)銷(xiāo),嚴(yán)重影響數(shù)據(jù)包處理的性能。 DPDK 繞過(guò)內(nèi)核,在用戶空間中實(shí)現(xiàn)快速數(shù)據(jù)包處理。
發(fā)表于 02-25 11:28
?946次閱讀
電子發(fā)燒友網(wǎng)站提供《使用P4和Vivado工具簡(jiǎn)化數(shù)據(jù)包處理設(shè)計(jì).pdf》資料免費(fèi)下載
發(fā)表于 01-26 17:49
?0次下載
評(píng)論