在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

數據包的結構及傳輸過程

單片機匠人 ? 來源:單片機匠人 ? 作者:單片機匠人 ? 2022-03-11 09:19 ? 次閱讀

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

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

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

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

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

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

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

圖1 全速設備和低速設備的同步域

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

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

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

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

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

以上是數據包的結構以及它們傳輸的過程,今天的分享就到這里。

往期回顧:

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

●指針和數組的恩恩怨怨

●USB的四種傳輸類型之中斷傳輸等時傳輸

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

    關注

    60

    文章

    7990

    瀏覽量

    266284
  • 數據包
    +關注

    關注

    0

    文章

    267

    瀏覽量

    24519

原文標題:USB的包結構以及包的類型

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

收藏 人收藏

    評論

    相關推薦

    I2C總線數據包結構詳解

    。以下是I2C總線數據包結構的詳解: 一、I2C總線數據包的基本組成 I2C總線上的數據傳輸數據包為單位進行,每個
    的頭像 發表于 01-17 15:46 ?198次閱讀

    mtu配置步驟詳解 mtu與數據包丟失的關系

    MTU(Maximum Transmission Unit)即最大傳輸單元,是指一種通信協議的某一層上面所能通過的最大數據報大小,單位是字節。MTU配置步驟及其與數據包丟失的關系如下: MTU配置
    的頭像 發表于 12-16 14:33 ?1163次閱讀

    華納云:服務器平均響應時間和數據包大小之間的影響

    服務器的平均響應時間與數據包大小有一定的關系,但這只是影響響應時間的眾多因素之一。具體來說,數據包大小對服務器響應時間的影響可以從以下幾個方面來理解: 1.數據傳輸時間 影響: 較大的數據包
    的頭像 發表于 10-10 14:01 ?337次閱讀

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

    DCTCP與DCUDP的登錄數據包和心跳數據包與服務器端是如何交互的?
    發表于 07-25 06:37

    esp8266怎么做才能每秒發送更多的數據包呢?

    數據包的速度,即每秒大約 50 個 UDP 數據包。高波特率唯一改變的是,在數據包較大的情況下,我可以以與輕量級數據包相同的速度發送數據包
    發表于 07-22 08:00

    使用AT SAVETRANSLINK時UDP數據包丟失怎么解決?

    Android 發送一個小 UDP 數據包(5 字節)。這個小數據包被我的微控制器在UART上接收到。微控制器將更大的數據包(可變長度,約 100 字節)發送回 UART。ESP在UART上接
    發表于 07-18 07:17

    能否在ESP結束之前通過串行端口停止傳入的UDP數據包傳輸以解析下一個UDP數據包

    丟棄在ESP完成之前不需要的數據包,以便通過串行端口發送它以接收下一個數據包, 如果沒有,我必須按順序讀取所有傳入的數據包,需要的和不需要的, 而且波特率不足,主機處理器開銷大, 我能否在 ESP 結束之前通過串行端口停止傳入
    發表于 07-16 06:18

    NONOS如何檢查是否實際發送了UDP數據包

    我發現進入深度睡眠通常無法傳輸發送的最后一個 UDP 數據包。我現在將睡眠延遲 30 毫秒,這是一個黑客。 我寧愿有一種方法來檢查是否可以休眠,或者以其他方式能夠注冊指示數據包已發送的回調(無線電發送緩沖區為空)。 說清楚:
    發表于 07-12 06:14

    can總線的數據傳輸過程是什么

    CAN總線(Controller Area Network)是一種用于汽車和工業控制系統的通信協議。它具有高可靠性、實時性和靈活性,因此在許多領域得到了廣泛應用。本文將詳細介紹CAN總線的數據傳輸過程
    的頭像 發表于 06-16 10:18 ?2968次閱讀

    在AN65974中短數據包和零長數據包是什么意思?

    在 AN65974 中,短數據包和零長數據包是什么意思? 非常感謝!
    發表于 05-30 07:41

    在Fx3控制器中,USB數據包中的數據有效載荷無法正常發送的原因?

    在 Fx3 控制器中,在流式傳輸過程中,從主機收到了意外的端點停止請求。 在調試過程中,我發現 USB 數據包中的數據有效載荷無法正常發送,請問出現這種錯誤的原因是什么。 下面附有錯誤
    發表于 05-28 06:37

    如何在AIROC GUI上獲取良好數據包和總數據包

    使用 IQxel-MW LifePoint 作為發生器并發送波形BT_1DH5_00001111_Fs80M.iqvsg,但無法在 AIROC 工具中接收數據包。 以下是從 IQxel 發送
    發表于 05-22 06:39

    如何確保DMA傳輸過程中的數據都是好的?

    有沒有哪位大佬清楚DMA原理的 想請教下,芯片廠是如何確保DMA傳輸過程中的數據都是OK的 比如傳輸前后SRAM里面的數據不變,傳輸出來的
    發表于 04-12 06:23

    請問高端網絡芯片如何處理數據包呢?

    隨著網絡芯片帶寬的持續提升,其內部數據包處理單元的工作負載也隨之增加。然而,如果處理單元無法與網絡接口的傳入速率相匹配,將無法及時處理數據包,這不僅會導致數據包隨機丟失,更會降低網絡的吞吐量。
    的頭像 發表于 04-02 16:36 ?721次閱讀
    請問高端網絡芯片如何處理<b class='flag-5'>數據包</b>呢?

    DPDK在AI驅動的高效數據包處理應用

    傳統的數據包處理方式是數據包先到內核最后再到用戶層進行處理。這種方式會增加額外的延遲和CPU開銷,嚴重影響數據包處理的性能。 DPDK 繞過內核,在用戶空間中實現快速數據包處理。
    的頭像 發表于 02-25 11:28 ?1081次閱讀
    DPDK在AI驅動的高效<b class='flag-5'>數據包</b>處理應用
    主站蜘蛛池模板: 98pao强力打造高清免费 | 久久88色综合色鬼 | 农村一级片| 在线观看免费视频资源 | 一区二区三区视频在线 | 夜夜操夜夜骑 | 色我网站 | 综合六月| 国产在线97色永久免费视频 | 在线精品一区二区三区 | 三级网址在线观看 | 男女无遮挡在线完整视频 | 欧洲色| 天天视频官网天天视频在线 | 精品久久久久久午夜 | 99热精品一区| 精品噜噜噜噜久久久久久久久 | 午夜影院7cdy | 日日草夜夜草 | 日本高清中文字幕在线观穿线视频 | 亚洲黄色第一页 | 四虎在线永久 | 特级黄色毛片 | 日韩免费一区 | a级网| 亚州视频一区 | 啪啪免费看视频 | 夜色成人 | 香蕉黄色网 | 久久亚洲精品国产亚洲老地址 | 91三级在线 | 在线观看亚洲人成网站 | 人人看人人做人人爱精品 | 天天干夜夜噜 | 99久久综合给久久精品 | 欧美性爽xxxⅹbbbb | 四虎影院美女 | 亚洲黄色三级网站 | 四虎影酷 | 国产一区二区三区毛片 | 一级骚片超级骚在线观看 |