新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > USB封包格式

        USB封包格式

        作者: 時間:2013-10-12 來源:網絡 收藏

          通過上述的3個封包,即可組成一個數據交易。當然,這即是54233的第4個數字:3。

          對于,為了改善NAK的機制,特別支持了NYET握手封包。這是由于當數據已經傳輸至總線時,通過NAK這個OUT數據交易的動作是不夠的。況且若是在總線上存在著高頻率的NAK傳輸過程,將會使得整個總線逐漸地被拖累,帶寬被分享掉。此時,高速設各就可以使用特殊的PING封包(稍后會提及)來詢問,是否接收器還有緩沖區空間來接收OUT數據交易。如果設各以ACK來響應,那么傳送器就會安排

          OUT傳輸。反之,如果響應的是NYET,那么傳送器就會以PING封包來查詢。如此,總線上就會有最佳的使用率。

          5.特殊封包

          總共包含了4個特殊封包(PRE、ERR、SPLIT與PING)。其中,一個僅使用在低速設備,一個僅使用在高速設各,其余兩個則是針對當低速或是全速設備連接上 2.0集線器后,再以高速的方式與主機通信時,才會用到。

          (1)PRE封包

          這個特殊前置(Special Preamble,PRE)封包擁有獨自的PID類型名稱PRE,其僅適用于主機想要從高速傳輸變成低速傳輸時所送出來的情形。也就是主機對于下端端口送出低速封包與低速設備通信之前,所必須先送出的PRE封包。在該PRE封包中,包含了前置碼以告訴集線器,下一個封包是低速。如此,集線器將會以即將接上的低速設備開始執行通信的工作。此時,PRE封包會放在導引至低速設各的所有令牌、數據以及握手封包之前。而高速設各是將PRE以SPLIT封包來加以編碼,因此不會重復地送出。對于原本已是低速的設備來說,不需要PRE封包。這種格式如下所列,僅包含兩個8位的數據域:SYNC與PRE。

          (2)PING封包

          僅存于所使用的特殊封包是PING封包。主機會送出PING封包來找出是否高速設各端點在以批量或是包含以多個數據封包的控制傳輸來送出下一個數據封包之前,是否為忙碌的狀態。這是由于傳統的數據交易時,若常以NAK來響應批量或控制的OUT傳輸,通常都會導致浪費太多的帶寬。因此,為了減少高速或控制的OUT端點的損失, 2.0新增了PING封包。一旦批量或控制傳輸的OUT數據交易被NAK響應后,主機控制器將會使用PING封包來查詢高速非周期性的端點是否有足夠的內存來接收wMaxPacketSize大小容量的數據。如果此端點具有足夠的緩沖區來使用,就以ACK來響應之;反之,繼續以NAK響應為止。

          此外,高速非周期性的OUT端點也可以使用NYET來加以響應,以通知主機所要加載的數據是可以接收的,但是端點沒有足夠的內存。此時,主機會使用PING令牌,直到端點表示了針對下一個OUT數據交易,已有足夠的緩沖區內存。

          (3)SPLIT封包

          SPILIT封包定義了令牌封包為分割數據交易(split transactIon)的一部分。為了最佳地使用總線時間,USB 2.0主機與集線器會以高速來送出低速與全速的通信數據。至于為什么需要分割數據交易呢?這是由于當主機開始傳輸一個針對低速或是全速的設各所預定的數據交易時,那么最接近設備的2.0集線器就有責任去實現與此設各的數據交易。此外,也負責存儲任何回傳的數據或是狀態信息,以及以一個或是兩個稍后的數據交易來加以回報回去。如此,整個總線就無須去針對實現一個低速的交易來持續地等待。而這個介于集線器與主機之間的特殊數據交易,就稱之為分割數據交易。

          (4)ERROR甚寸包

          這個封包僅使用在分割數據交易時。2.0集線器會使用該封包并以低速或全速的數據交易來回報一個錯誤給主機。在此,讀者是否發現該PID碼值與PRE PID碼值是一樣的。但是其中,最大的差異是前者是應用在設各與集線器上,另一個則是應用在主機上。也即是集線器不會送出PRE封包給主機或是ERR封包給設各。

          以下,將這些與字段等加以匯整,如表所列,并列出各個字段與其目的。

          表 封包與字段之間的關系

          續表

        pid控制相關文章:pid控制原理


        三相異步電動機相關文章:三相異步電動機原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昌江| 宜黄县| 乌审旗| 红河县| 古蔺县| 安福县| 香河县| 吴忠市| 海城市| 凌云县| 普兰县| 托克托县| 龙南县| 井研县| 白水县| 肃南| 赤城县| 阿尔山市| 高淳县| 密山市| 三门县| 阿拉善左旗| 清水河县| 博客| 永兴县| 芜湖市| 藁城市| 麻栗坡县| 鹤山市| 丰镇市| 靖西县| 新源县| 高青县| 青川县| 梨树县| 津市市| 镇远县| 准格尔旗| 嘉善县| 河池市| 昭平县|