當前位置:編程學習大全網 - 編程語言 - USB鼠標向電腦的USB口傳輸什麽樣的數據+MPLAB MCC18 USB命令?

USB鼠標向電腦的USB口傳輸什麽樣的數據+MPLAB MCC18 USB命令?

很難分析數據包。我復制了壹些數據,不知道對妳有沒有用。

3.7數據流類型

主機和USB設備之間的數據和控制信號交換有兩個通道:單向和雙向。USB的數據傳輸是在主機軟件和USB設備的指定端口之間進行的。主機軟件和USB設備端口之間的這種連接稱為通道。壹般來說,通道之間的數據流是相互獨立的。給定的USB設備可以有多個通道。例如,如果壹個USB設備有壹個端口,它可以建立壹個通道向其他USB設備的端口發送數據,也可以建立壹個通道從其他USB設備的端口接收數據。

USB的結構包括四種基本的數據傳輸類型:

控制數據傳輸:用於設備連接時的設置,也可以控制指定的設備,如通道控制;

批量數據傳輸:大批量生成和使用的數據在傳輸約束下動態範圍廣;

中斷數據傳輸:用於描述或匹配人的感覺或對特征反應的反饋。

同步數據傳輸:預定的USB帶寬被預定的傳輸延遲填滿。

對於任何給定的設備,壹個通道只能支持上述方式之壹的數據傳輸,數據流模式的更多細節在第4章中詳述。

3.7.1控制數據傳輸

第壹次安裝USB設備時,USB系統軟件使用控制數據設置設備,設備驅動程序使用控制數據以特定的方式傳輸,數據傳輸是無損的。

3.7.2批量數據傳輸

批量數據是由大量數據組成的,比如使用打印機和掃描儀時,批量數據是連續的。可以在硬件級上使用錯誤檢測來確保可靠的數據傳輸,並且在硬件級上引入了多個數據傳輸。另外,根據其他總線動作,可以相應改變大量數據占用的帶寬。

中斷數據傳輸

中斷的數據很小,其數據延遲時間有限。這種數據可以由設備隨時發送,並以不低於設備指定的速度在USB上傳輸。

中斷數據壹般由事件通知、特征和坐標號組成,只有壹個或幾個字節。匹配定點設備的坐標就是壹個例子。雖然沒有必要精確指定傳輸速率,但USB必須為交互數據提供最短的響應時間。

同步傳輸

同步數據的建立、傳輸和使用是連續和實時的。同步數據以穩定的速率發送和接收實時信息。同步數據應該使接收方和發送方保持相同的時間表。除了傳輸速率,同步數據對傳輸延遲也非常敏感。因此,同步信道帶寬的確定必須滿足相關功能組件的采樣特性。不可避免的信號延遲與每個端口的可用緩沖器數量有關。

同步數據的壹個典型例子是語音。如果不能維持數據流的傳輸速率,數據流是否丟失將取決於緩沖區的大小和損壞程度。即使數據在USB硬件上以合適的速率傳輸,由軟件引起的傳輸延遲也會損害實時系統如電話會議的應用。

同步數據的實時傳輸肯定會導致潛在的瞬時數據丟失,換句話說,即使是很多硬件機制,比如引入重傳,也無法避免錯誤。在實際應用中,USB的數據錯誤率幾乎可以忽略不計。從USB的帶寬來說,專門給USB同步數據流分配了壹部分,以滿足期望的傳輸速率,USB還為同步數據的傳輸設計了最小延遲時間。

3.3的處理。USB傳輸

如前所述,USB系統中有四種傳輸:壹次傳輸通常被分解成若幹個事務;壹個事務的處理壹般要經歷令牌包、數據包、握手包三個階段,但也有壹些事務沒有數據包階段或握手包階段,也有壹些事務只有令牌包階段。下面簡單介紹壹下這四種傳輸的處理。

1)塊傳輸

用於主機和USB設備之間的批量數據傳輸,通常壹個塊傳輸需要分解成若幹個塊傳輸事務。顯然,塊傳輸的方向是單壹的。對於主機來說,不是輸入就是輸出。因此,塊傳輸由幾個IN事務或幾個OUT事務組成。圖10.38是批量轉賬交易流程示意圖。圖中的PING包和NYET包只用於高速傳輸設備,新手暫時可以忽略。

對於要輸入的塊傳輸,通常要執行幾個in事務。每次執行IN事務時,主機首先發出IN令牌包。設備端點在接收到數據包後會做出響應,通常會發回壹個數據包。如果不能發回數據,則發回NAK包或STALL包。NAK表示設備暫時不能發回數據;STALL表示端點已經停止或者需要IJSB系統軟件的幹預;如果主機接收到合法的數據包,它將回復壹個ACK握手包;如果主機在接收數據時發現錯誤,它不會給設備任何回復。

對於要輸出的塊傳輸,通常要執行幾個out事務。每次執行OUT事務時,主機先發出OUT令牌包,再發出數據包。設備收到數據包後,根據情況回復壹個握手包;發回ACK,表示數據已被正確接收,並通知主機可以開始下壹個0UT事務,以便發送下壹個數據包;NAK表示數據已被正確接收,但主機不應再發送任何數據,因為設備暫時無法接收(如緩沖區已滿);如果端點已經被終止,它將回復STALL,通知主機不要重新發送數據,因為設備已經發生故障;如果接收時存在CRC校驗錯誤,將不會發送握手數據包。

需要指出的是,in transactions和out transactions不僅用在block transfer事務中,還用在其他幾個transfer事務中。當然,處理程序可能會有所不同。

2)中斷傳輸

用於數據傳輸量小,無周期性,但對響應時間敏感,要求即時響應的數據傳輸。中斷傳輸的名稱暗示了壹個設備可以引起硬件中斷,這將使主機快速響應。但事實是,中斷傳輸和所有其他USB傳輸壹樣,只有在主機訪問設備時才會出現。之所以稱之為中斷傳輸,是因為它能保證主機在最短的延遲內做出響應或發送數據。中斷傳輸的特殊之處在於,主機會按照特定的周期訪問能夠引起中斷的端點(稱為中斷端點),看是否有中斷。圖10.39顯示了中斷傳輸事務的流程。

對於要輸入的中斷傳輸,主機按照特定周期執行IN事務,如果沒有中斷發生,中斷端點用NAK包回復;如果有中斷,中斷數據將被發回。收到數據後,主機發送ACK數據包。

對於要輸出的中斷傳輸,主機按照特定的周期執行OUT事務,發送OUT令牌後再發送數據包。如果沒有中斷發生,中斷端點用壹個NAK包或壹個STALL包回復;如果存在中斷,並且接收到的數據是正確的,則發送回ACK包。需要指出的是,主機會壹直按照特定的周期執行OUT事務,不會中斷設備,發送的數據保持不變。當中斷發生時,數據指針被修改以指向下壹個數據區。

中斷傳輸由壹個或多個in事務或壹個或多個OUT事務組成。中斷傳輸在以下兩種情況中的壹種情況下結束:當請求的數據量已被傳輸,或當數據包的長度小於指定的最大值(包括長度為0的數據包)時。中斷傳輸的結束意味著要傳輸的數據已經到達,接收方可以使用它;並且主機對中斷端點的周期性查詢還會繼續,以便在下壹次中斷發生時啟動下壹次中斷傳輸。

3)同步傳輸

用於周期性和恒定傳輸速率的數據傳輸。等時傳輸在每個幀中都有壹定數量的字節。等時傳輸由壹個或多個連續幀中每幀的壹個輸入或壹個輸出事務組成。圖10.40顯示了等時傳輸事務的過程。可以看出,等時傳輸的IN transaction和OUT transaction只包括令牌包和數據包兩個階段,沒有握手包階段,不支持重試。

4)控制傳輸

控制轉移提供了壹種配置USB設備和控制其操作的某些方面的方法。每個設備必須設置壹個默認的控制端點(通常是O端點)。控制端點用於配置設備、控制設備狀態和設備操作的某些方面。控制端點響應控制傳輸發送的壹些USB特殊請求。例如,當系統檢測到壹個設備時,系統軟件必須讀取該設備的描述符,以確定其類型和操作特性。

控制傳輸包括至少兩個階段,或者可以是三個階段:

①設置階段:控制傳輸總是從設置階段開始,它向目標設備發送信息,並為設備定義請求類型(例如,讀取設備描述符)。

②數據階段:該階段僅針對需要傳輸數據的請求。例如,在數據階段,讀取描述符要求將描述符的內容發送到主機。壹些請求在設置階段之外不需要數據傳輸。

③狀態階段:該階段總是用於報告所請求操作的結果。

在設置階段,設置事務用於向控制端點傳輸信息。設置事務類似於。

OUT事務,但設置了包標識PID,而不是OUT。圖10.41顯示了設置事務的執行過程。設置事務的數據階段總是使用DATA0 PID。如果它被正確接收,則控制端點用ACK分組進行回復;如果接收不正確或數據丟失,將不會發回握手數據包。

沒有必要控制傳輸的數據相位。如果需要此階段,它由壹個或多個IN事務或壹個或多個OUT事務組成。數據階段的所有事務必須具有相同的方向,即都是IN事務或all OUT事務。數據階段傳輸的數據量和方向在設置階段指定。如果數據量超過預定的分組大小,則數據的傳輸需要能夠攜帶最大分組的多個事務(入或出),並且剩余部分(小於最大分組大小)用另壹個事務來安排。

控制傳輸的狀態階段是傳輸的最後壹個階段,它只需要壹個事務。狀態階段的數據流方向應該與前壹階段的不同,並且應該始終使用DATAl PID。例如,如果數據階段執行輸出事務,則狀態階段是輸入事務。如果控制傳輸沒有數據階段,則狀態階段由IN事務組成。圖10.42顯示了控制讀取傳輸、控制寫入傳輸和無數據相位的控制傳輸的事務順序、觸發位的值(在括號中)和數據PID的類型。

上述傳輸和傳輸事務的過程反映了USB系統中數據傳輸的過程。註意,壹幀(或微幀)包括四種傳輸事務,所以實際傳輸過程比這裏所說的更復雜。

4.數據觸發技術

USB系統采用數據觸發技術。數據觸發是壹種確保數據傳輸的發送方和接收方同步的機制,對於需要大量事務的長傳輸過程尤為重要。當握手包出錯時,數據觸發機制可以重新同步發送方和接收方。

數據觸發只支持中斷傳輸、塊傳輸和控制傳輸。支持數據觸發機制的發送方和接收方必須在每次數據傳輸中都有觸發位。當雙方都認為數據傳輸已經正確完成時,它們會將其觸發位更改為相反的狀態。兩種類型的數據包(data0和data1)交替傳輸,數據包的接收方會將其與觸發位進行比較,以確定接收到的數據包是否正確。發送方使用的數據包類型與其觸發位的當前狀態壹致(例如,如果觸發位為0,則數據包使用數據0)。下面以OUT事務為例來理解數據觸發機制。

例10.1圖10.43顯示了無錯OUT交易的過程和觸發位的變化。假設發送方和接收方的觸發位都以0開始。傳播的過程如下:

交易l:

①主機向目標設備發送壹個輸出令牌。

②目標設備無誤地接收到令牌包。

③主機向目標設備發送DATA0數據包(與其觸發位壹致)。

④目標設備接收到數據包DATA0,與觸發位壹致。

⑤目標設備成功接收數據包DATA0,觸發位變為1。

⑥目標設備向主機發送壹個ACK握手包,通知主機數據已收到,沒有錯誤。

⑦主機無誤地接收到ACK包。

⑧成功接收到ACK包,主機將觸發位改為L..

交易2:

①主機向目標設備發送新的OUT令牌,開始下壹個交易過程。

②目標設備無誤地接收到令牌包。

③主機向目標設備發送DAl和A1數據包(與其觸發位壹致)。

④目標設備接收到與觸發位壹致的數據包DATAl。

⑤目標設備成功接收數據包DATAl,觸發位變為0。

⑥目標設備向主機發送壹個ACK握手包,通知主機數據已收到,沒有錯誤。

⑦主機無誤地接收到ACK包。

⑧成功接收到ACK包,主機將觸發位置0。

這個過程對於每個交易都是相同的,直到整個傳輸完成。只要接收到的數據包與觸發位壹致,並且發送方無誤地接收到ACK握手包,那麽發送方和接收方就保持同步。

以上是數據分組和握手分組都被正確傳輸的情況。我們分別來看看數據包傳輸錯誤和握手包傳輸錯誤。

示例l0.2圖10.44顯示了傳輸的第m個輸出。在交易處理過程中,數據包傳輸出錯。主機和目標設備采取的操作如下:

交易m:

①主機向目標設備發送壹個輸出令牌。

②目標設備無誤地接收到令牌包。,

③主機向目標設備發送DATA0數據包(與其觸發位壹致)。

④當目標設備接收到數據包DATAO時,發現有錯誤。

⑤由於檢測到數據包錯誤,目標設備將忽略該數據包。數據將被丟棄,握手數據包也不會發送到主機。由於數據包未被正確接收,觸發位保持不變。

⑥主機等待握手包返回,但沒有響應。總線超時時間(16位時間)到後,主機檢測到沒有響應,認為數據包傳輸不成功,主機觸發位不變。主機必須稍後重做該事務。

事務m被恢復:

①主機向目標設備發送輸出令牌。

②目標設備無誤地接收到令牌包。

③主機向上次傳輸失敗的目標設備發送壹個DATAO數據包(與其觸發位壹致)。

④目標設備成功接收到數據包DATA0,與觸發位壹致。

⑤由於數據包DATA0被正確接收,目標設備將觸發位更改為1。

⑥目標設備向主機發送壹個ACK握手包,通知主機數據已收到,沒有錯誤。

⑦主機無誤地接收到ACK包。

⑧成功接收到ACK包,主機將觸發位改為l。

從上述過程可以看出,盡管存在傳輸錯誤,主機和目標設備仍能保持同步。

示例10.3圖10.45顯示了傳輸的第n個OUT事務的處理過程,在此過程中,由於ACK包錯誤而失敗。錯誤檢測和恢復的每個步驟如下所示:

交易編號:

①主機向目標設備發送壹個輸出令牌。

②目標設備無誤地接收到令牌包。

③然後主機向目標設備發送DATA0數據包(與其觸發位壹致)。

④目標設備接收到數據包DATA0,與觸發位壹致。

⑤目標設備成功接收數據包DATA0,觸發位變為1。

⑥目標設備向主機發送壹個ACK握手包,通知主機數據已收到,沒有錯誤。

⑦主機收到的ACK包中有錯誤。

⑧因為主機檢測到錯誤,所以無法確定目標設備是否成功接收到數據。因此,主機的觸發位沒有改變(仍為0)。主機假設目標設備沒有接收到數據,因此它將重做該事務。

交易n被恢復:

①主機向目標設備發送輸出令牌。

②目標設備無誤地接收到令牌包。

③主機重新向目標設備發送DATA0包(與其觸發位壹致),未知目標設備在上次傳輸時是否正確接收到該包。

④目標設備收到數據包DATA0無誤,但與觸發位不壹致。

⑤目標設備認為與主機不同步,丟棄數據,觸發位不變(1)。

⑥目標設備向主機發送壹個ACK握手包,通知主機數據已收到,沒有錯誤,因為

主機顯然沒有收到最後壹個ACK握手包。

⑦主機無誤地接收到ACK握手包。

⑧成功接收到ACK包,主機將觸發位改為1。現在,主機和目標設備為下壹個事務做好了準備。

從這個例子可以看出,主機和目標設備暫時沒有就數據傳輸是否完成達成壹致。但是,數據觸發機制確保可以檢測到不同步的狀態,並且可以重新實現同步。

/yangchengbo 82/blog/item/e 9301b 895 c 00 b 1b 10e 244435 . html

  • 上一篇:如何用C4D建模仿真的瓶子?C4D制作仿真瓶子的建模教程
  • 下一篇:怎麽用C語言讀寫音樂文件
  • copyright 2024編程學習大全網