<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > USB通信數(shù)據(jù)緊密連接位

          USB通信數(shù)據(jù)緊密連接位

          作者: 時間:2013-10-12 來源:網(wǎng)絡 收藏
          若要一個傳輸需要多個數(shù)據(jù)交易,該數(shù)據(jù)緊密連接(data toggle)位就能通過保持傳輸與接收設各同步化,來確保沒有數(shù)據(jù)交易被遺漏掉。在稍前的數(shù)據(jù)封包有提及過,這個數(shù)據(jù)放在IN與OUT數(shù)據(jù)交易的令牌封包的PID字段中。其中,DA-TAO的低4位PID碼是0011,以及DATA1的低4位PID碼是1011,所以位3即是這個數(shù)據(jù)緊密連接的狀態(tài)。一般在控制芯片中,其相關的狀態(tài)寄存器里幾乎都會有類似的位設置,以方便固件程序代碼的編寫。例如,在Cypress CY7C63系列的控制芯片中,端點0 TX配置緩存器的位6即是DATA 1/0位。

            由于傳送器與接收器兩者都要追蹤數(shù)據(jù)。因此,為了怕弄混淆,一開始二者同時設置為DATA0。當接收器檢測到剛進來的數(shù)據(jù)交易時,它就會比較所接收到數(shù)據(jù)與自己的數(shù)據(jù)緊密連接位的狀態(tài)。若位符合,接收器就會連接切換其位,并且傳回ACK封包給傳送器。而這個ACK也會使得傳送器去連接切換其位。

            此時,在傳輸中的下一個所接收到的封包將會包含DATA1的數(shù)據(jù)緊密連接位,而接收器再一次連接切換其位,并且回傳ACK。若這個傳輸過程都無誤,這個流程會一直持續(xù)著,DATA0→DATA1→DAYAO→……直到整個傳輸結束為止。

            而特殊例外的情形是,在全速等時傳輸時,主機總使用DATA0的數(shù)據(jù)緊密連接位。這是因為等時傳輸沒有回傳ACK或NAK來作握手的動作,也即是根本沒有時間來重傳數(shù)據(jù)。

            為了在一個微幀同時支持3組數(shù)據(jù)傳輸以進行高速同步傳輸,USB 2.0規(guī)范采用DATA2與MDATA兩種規(guī)范全新的數(shù)據(jù)PID。高速中斷傳輸能在DATA0與DA-TAI PID之間進行緊密連接(togglg),如圖1所示。

            圖1 高帶寬的中斷數(shù)據(jù)交易

            對于高速等時傳輸來說,數(shù)據(jù)緊密連接位應分為IN與OUT兩種類型。在高速等時傳輸IN中,每一個微幀包含2或3個數(shù)據(jù)交易。因此,使用DATA0、DATA1、DA-TA2來表示數(shù)據(jù)交易在微幀的位置,如表1所列。如圖2所示,顯示了一個等時IN端點在每個微幀中同步進行3組數(shù)據(jù)傳輸?shù)倪^程。而數(shù)據(jù)PID(DATAx)代表傳輸要求的數(shù)量以及微幀的數(shù)值(x)。

            表1 高速等時傳輸IN的數(shù)據(jù)緊密連接位

            圖2 高帶寬的等時IN數(shù)據(jù)交易

            對于高速等時OUT傳輸,最后數(shù)據(jù)PID(DATAx)代表在發(fā)生第x個微幀之前所進行的一個傳輸。先前的數(shù)據(jù)傳輸以MDATA PID方式進行數(shù)據(jù)傳輸。圖3中顯示了一個等時OUT端點能在每個微幀中同步完成3組數(shù)據(jù)傳輸?shù)倪^程。如表2所列,在高速等時傳輸OUT中,每一個微幀包含2或3個數(shù)據(jù)交易。因此,使用DA-TAO、DATA1、MDATA來表示是否有更多的數(shù)據(jù)會跟隨著在微幀中。

            圖3 高帶寬的等時OUT數(shù)據(jù)交易

            表2 高速等時傳輸OUT的數(shù)據(jù)緊密連接位



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();