哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)據(jù)包的結(jié)構(gòu)及傳輸過程

單片機匠人 ? 來源:單片機匠人 ? 作者:單片機匠人 ? 2022-03-11 09:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天我們來詳細地說說數(shù)據(jù)包的結(jié)構(gòu)以及它們的傳輸過程。USB是串行總線,所以數(shù)據(jù)是一位一位地在數(shù)據(jù)線上傳送的。既然是一位一位地傳送,就存在著一個數(shù)據(jù)位先后的問題。usb使用的是LSB在前的方式,即先出來的是最低位數(shù)據(jù),接下來是次低位,最后是最高位(MSB)。一個包,又被分成了很多個域(field),而LSB、MSB就是以域為單位來劃分的。

前面說過,USB數(shù)據(jù)在發(fā)送到總線上之前,要先經(jīng)過位填充,再經(jīng)過NRZ1編碼。在這里討論時,所用的數(shù)據(jù)都是原始的數(shù)據(jù),即沒有經(jīng)過位填充和NRZ編碼的原始數(shù)據(jù)。以后也是如此,凡是沒有明確說明是位填充或NRZI編碼過的數(shù)據(jù),默認為原始的數(shù)據(jù)。另外還有一個數(shù)據(jù)傳輸方向的問題,因為在USB系統(tǒng)中,主機處于主導(dǎo)地位,所以把從設(shè)備到主機的數(shù)據(jù)叫做輸入,從主機到設(shè)備的數(shù)據(jù)叫做輸出。

USB總線上傳輸數(shù)據(jù)是以包為基本單位的。一個包被分成不同的域。根據(jù)不同類型的包,所包含的域是不一樣的。但是不同的包有個共同的特點,就是都要以同步域開始,緊跟一個包標識符PD( Packet Identifier),最終以包結(jié)束符EOP(End Of Packet)來結(jié)束這個包。

同步域是用來告訴USB的串行接口引擎數(shù)據(jù)要開始傳輸了,請做好準備。除此之外,同步域還可以用來同步主機端和設(shè)備端的數(shù)據(jù)時鐘,因為同步域是以一串0開始的,而0在USB總線上就被編碼為電平翻轉(zhuǎn),結(jié)果就是每個數(shù)據(jù)位都發(fā)生電平變化,這讓串行接口引擎很容易就能恢復(fù)出采樣時鐘信號;對于全速設(shè)備和低速設(shè)備,同步域使用的是0000001(二進制數(shù),線上的發(fā)送順序);對于高速設(shè)備,同步域使用的是31個0,后面跟1個1(需要注意的是,這是對發(fā)送端的要求,接收端解碼時,0的個數(shù)可以少于這個數(shù))。

圖1是一個全速或者低速USB數(shù)據(jù)包的同步域經(jīng)過NRZ編碼后的波形。這個波形有7次電平翻轉(zhuǎn),即對應(yīng)著7個0,最后一個電平不翻轉(zhuǎn),即對應(yīng)著1個1當串行接口引擎檢測到一個位的數(shù)據(jù)未發(fā)生翻轉(zhuǎn)后(即收到數(shù)據(jù)1),就認為包標識符PID開始了,如圖1.9.1中的PID0PD1,就是包標識符的最低兩位。

cfaa03a4-894d-11ec-952b-dac502259ad0.jpg

cfc05302-894d-11ec-952b-dac502259ad0.png

圖1 全速設(shè)備和低速設(shè)備的同步域

包結(jié)束符EOP,對于高速設(shè)備和全速/低速設(shè)備也是不一樣的。全速/低速設(shè)備的EOP是一個大約為2個數(shù)據(jù)位寬度的單端0(SE0)信號。SE0的意思就是,D+和D同時都保持為低電平。由于USB使用的是差分數(shù)據(jù)線,通常都是一高一低的,而SE0不同,是一種都為低特殊的狀態(tài)。SE0用來表示一些特殊的意義,例如包結(jié)束、復(fù)位信號等。前面提到USB集線器對USB設(shè)備進行復(fù)位的操作,就是通過將總線設(shè)置為SE0狀態(tài)大約10ms來實現(xiàn)的。對于高速設(shè)備的EOP,使用故意的位填充錯誤來表示。那么如何判斷一個位填充錯誤是真的位填充錯誤還是包結(jié)束呢?這個由CRC校驗來判斷。如果CRC校驗正確,則說明這個位填充錯誤是EOP;否則,說明傳輸出錯。具體的定義請參看USB協(xié)議,這里只要知道有EOP這么一個東西就行了。

包標識符PID是用來標識一個包的類型的它總共有8位,其中USB協(xié)議使用的只有4位(PID~PID3),另外4位(PI4~PID7)是PID~PD3的取反,用來校驗PID。USB協(xié)議規(guī)定了4類包,分別是令牌包(token packet,PD1~0為01)、數(shù)據(jù)包( data packet,pid1~0為11)、握手包(handshake packet,piD~0為10)和特殊包( special packet,PiD1~0為00)。不同類的包又分成幾種具體的包。圖2 是USB2.0協(xié)議中規(guī)定的各種PID,其中有些是在USB1.1協(xié)議中沒有的,用號標出。

cfaa03a4-894d-11ec-952b-dac502259ad0.jpg

cff19b42-894d-11ec-952b-dac502259ad0.png

圖2 USB2.0中定義的各種PID

以上是數(shù)據(jù)包的結(jié)構(gòu)以及它們傳輸?shù)倪^程,今天的分享就到這里。

往期回顧:

●USB的四種傳輸類型之控制傳輸

●指針和數(shù)組的恩恩怨怨

●USB的四種傳輸類型之中斷傳輸?shù)葧r傳輸

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8475

    瀏覽量

    285778
  • 數(shù)據(jù)包
    +關(guān)注

    關(guān)注

    0

    文章

    270

    瀏覽量

    25657

原文標題:USB的包結(jié)構(gòu)以及包的類型

文章出處:【微信號:gh_e7f294a514ca,微信公眾號:單片機匠人】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    MIMXRT1189奇數(shù)長度UDP數(shù)據(jù)包的最后一個字節(jié)出現(xiàn)問題,為什么?如何解決?

    我遇到了一個問題,即奇數(shù)長度 UDP 數(shù)據(jù)包的最后一個字節(jié)無法通過線路正確發(fā)送。最后一個字節(jié)似乎是未初始化或過時的數(shù)據(jù)。如果我將 UDP 數(shù)據(jù)包填充到偶數(shù)長度(2 字節(jié)綁定),則數(shù)據(jù)
    發(fā)表于 04-17 07:47

    如何使用Python讀取不間斷數(shù)據(jù),并將其傳輸到LabVIEW進行處理?

    使用Python讀取Count,如何將讀取到的數(shù)據(jù)傳輸至Labview;傳輸過程中Python要保持讀取的動作,不能停止。
    發(fā)表于 01-23 11:09

    CW32R030可以兼容BLE及XN297L數(shù)據(jù)包,請問這個XN297L數(shù)據(jù)包是什么?

    CW32R030可以兼容BLE及XN297L數(shù)據(jù)包,請問這個XN297L數(shù)據(jù)包是什么?
    發(fā)表于 01-20 06:37

    bk3633 usb 設(shè)備如何讀取主機向端點0 發(fā)送數(shù)據(jù)包

    bk3633 usb 設(shè)備如何讀取主機向端點0 發(fā)送數(shù)據(jù)包
    發(fā)表于 12-30 13:03

    使用CW32W031類mesh通訊的時候,節(jié)點傳輸過一次這數(shù)據(jù)之后就不會再收到了吧?

    使用CW32W031類mesh通訊的時候,節(jié)點傳輸過一次這數(shù)據(jù)之后,就不會再收到了吧?
    發(fā)表于 12-10 06:24

    串行通信接口的結(jié)構(gòu)和功能

    串口通訊的數(shù)據(jù)包由發(fā)送設(shè)備通過自身的TXD接口傳輸到接收設(shè)備的RXD接口。在串口通訊的協(xié)議層中,規(guī)定了數(shù)據(jù)包的內(nèi)容,它由啟始位、主體數(shù)據(jù)、校驗位以及停止位組成,通訊雙方的
    的頭像 發(fā)表于 10-17 09:39 ?4180次閱讀
    串行通信接口的<b class='flag-5'>結(jié)構(gòu)</b>和功能

    串口DMA接收數(shù)據(jù)包丟失怎么解決?

    RTT串口DMA接收數(shù)據(jù),超過緩沖區(qū)后為什么會吞掉一個數(shù)據(jù)包呢,不能每次處理完后清除緩沖區(qū)數(shù)據(jù)嗎,感覺接收的數(shù)據(jù)是累計的,累計滿之后會重新覆蓋,在最后一個
    發(fā)表于 09-29 07:50

    如何保障遠程運維過程中的數(shù)據(jù)安全和隱私?

    LZ-DZ100背面 在分布式光伏集群的遠程運維中,數(shù)據(jù)安全和隱私保護面臨多重風險,包括 傳輸過程中的竊聽 / 篡改、未授權(quán)訪問控制指令、設(shè)備固件被惡意植入、敏感數(shù)據(jù)(如站點位置、運行參數(shù))泄露 等
    的頭像 發(fā)表于 08-22 10:26 ?1187次閱讀
    如何保障遠程運維<b class='flag-5'>過程</b>中的<b class='flag-5'>數(shù)據(jù)</b>安全和隱私?

    當UART數(shù)據(jù)傳輸過程中發(fā)生RLS(接收線狀態(tài))中斷時,如何處理PEF、FEF和BIF標志?

    當UART數(shù)據(jù)傳輸過程中發(fā)生RLS(接收線狀態(tài))中斷時,如何處理PEF、FEF和BIF標志
    發(fā)表于 08-22 07:25

    請問DCTCP與DCUDP 的登錄數(shù)據(jù)包和心跳數(shù)據(jù)包與服務(wù)器端是如何交互的?

    DCTCP與DCUDP 的登錄數(shù)據(jù)包和心跳數(shù)據(jù)包與服務(wù)器端是如何交互的?
    發(fā)表于 08-06 06:29

    在EZ串行的BLE“無響應(yīng)寫入”中, CAN一次通信中接收的最大數(shù)據(jù)包大小是多少?

    :所有數(shù)據(jù)都顯示在與 ez-Serial 和 PUART 連接的 TeraTerm 上 [問題] (1)在 EZ 串行的 BLE“無響應(yīng)寫入”中, CAN 一次通信中接收的最大數(shù)據(jù)包大小是多少? (2
    發(fā)表于 07-07 07:33

    Android14在BLE中,當MTU超過 517時,如何處理數(shù)據(jù)傳輸?

    的情況下: 在分段傳輸過程中,是否應(yīng)該對每個數(shù)據(jù)包應(yīng)用單獨的延遲? 芯片組制造商是否有關(guān)于分段傳輸的具體注意事項或性能優(yōu)化指南? 當前的 OTA 問題是否(BTSDK-10583)與上述請求 MTU 有關(guān)嗎? 使用分段
    發(fā)表于 07-01 06:56

    RDMA簡介7之可靠傳輸

    可靠傳輸技術(shù)旨在通過多種方法確保數(shù)據(jù)包傳輸過程中不會丟失或損壞,同時保證數(shù)據(jù)包按發(fā)送順序到達接收端,其要求在鏈路發(fā)生丟或網(wǎng)絡(luò)發(fā)生擁塞等情
    發(fā)表于 06-13 10:01

    藍牙數(shù)據(jù)通道空口數(shù)據(jù)包

    ? 與藍牙廣播相對應(yīng),藍牙數(shù)據(jù)包是另一種Bluetooth LE packet。藍牙數(shù)據(jù)包是藍牙數(shù)據(jù)信道空中的簡稱,表示空中
    發(fā)表于 06-03 10:51

    更改最大數(shù)據(jù)包大小時無法識別USB設(shè)備如何解決?

    將生產(chǎn)者 EP 端點描述符中的最大數(shù)據(jù)包大小從 1024 字節(jié)更改為 512 字節(jié)時,無法識別 USB 設(shè)備。 請告知如何解決這個問題。
    發(fā)表于 05-20 08:13
    浦江县| 东台市| 崇阳县| 仙桃市| 定安县| 于都县| 呼和浩特市| 会理县| 弋阳县| 保定市| 奉节县| 鸡西市| 韩城市| 石狮市| 元朗区| 汕头市| 鄂尔多斯市| 新疆| 监利县| 绥化市| 拜城县| 芦溪县| 阿合奇县| 东莞市| 五常市| 金堂县| 涞水县| 兖州市| 弥勒县| 襄垣县| 芦溪县| 蓬溪县| 昌黎县| 肥东县| 彭州市| 都兰县| 鄂托克旗| 贵港市| 平安县| 内丘县| 镇江市|