五、USB數據傳輸類型

1、USB數據傳輸

  US四種傳輸類型:控制傳輸、中斷傳輸、批量傳輸和同步傳輸。

  一次傳輸可以包含一筆或者多筆事務。

2、中斷傳輸

  中斷傳輸(Interrupt Transfer), 可用於鍵盤、鼠標等 HID 設備的數據傳輸中, 由IN事務或 OUT 事務組成。

中斷傳輸IN事務、OUT事務的結構
中斷傳輸IN事務、OUT事務的結構

 

(1)、中斷傳輸的結構

  中斷傳輸中包含了 2 種最基本的事務, 即輸入 IN 事務和輸出 OUT 事務, 而不包括設置 SETUP 事務。

  中斷傳輸中, 無論是 IN 事務, 還是 OUT 事務, 都包含了令牌包、數據包和握手包。

  ①、令牌包階段(將 IN 事務和 OUT 事務分別討論):

        IN 事務: 主機通過發送輸入包 IN(標識域 PID 爲 IN), 來啓動 1 個 IN 傳輸。

        OUT 事務: 主機發送輸出包 OUT (標識域 PID 爲 OUT), 啓動 1 個 OUT 傳輸。

  ②、數據包階段

        IN事務:設備忙,回覆無效包NAK,事務提前結束。主機不斷重試這個事務。

                       設備端點被禁止,回覆錯誤包STALL,事務提前結束,總線進入空閒狀態。

                       設備端點正常,且設備準備新的中斷處理,則設備會按主機要求回覆主機所需數據。

        OUT事務:結構相對較爲簡單, 主機將緊接着OUT令牌包, 就發送數據, 並按照DATA0 和 DATA1 數據包交替觸發的順序來發送數據。

  ③、握手包階段

        IN事務:如果主機正確地接收到了數據, 那麼就會給設備發送ACK; 如果數據包在傳輸過程中被破壞了, 那麼設備就會不回覆任何握手信息, 直接將總線轉入空閒狀態, 等待下一次傳輸。

        OUT事務:設備忙,返回無效包NAK,總線進入空閒,直到主機重試發送該數據

                          設備端點被禁止,回覆錯誤包STALL,事務提前結束,總線進入空閒狀態。果發送的數據沒有錯誤, 並且設備成功地接收, 那麼設備就返回ACK, 同時通知主機可以發送新的數據。如果數據包發生了CRC校驗錯誤, 將不會返回任何握手信息。

(2)、數據包發送的順序

    中斷傳輸中的數據包, 一定是從DATA0數據包開始, 然後是DATA1數據包, 接着又是DATA0, 依次重複下去。

中斷傳輸數據包發送順序

 

(3)、總線傳輸的特點

    中斷傳輸中,USB主機是以週期性的方式對設備進行輪詢, 以確定設備是否有數據發送。按照USB 的規定, 全速設備可以選擇的輪詢週期範圍是1~255ms, 低速設備的輪詢週期範圍則是10~255 ms。

(4)、數據包大小

    USB對於中斷傳輸中的數據包的大小也有要求。低速設備的數據包大小可以是1~8字節, 全速設備的數據包大小是1~64字節, 而高速設備的數據包大小則可達到1~1024字節。

(5)、支持設備類型

    低速、全速、高速和超高速設備均支持中斷傳輸。

3、批量傳輸

    批量傳輸(Bulk Transfer)主要用於大容量數據的傳輸中, 比如硬盤驅動器的接口、光盤刻錄機接口及數碼相機等等。

(1)、結構

    批量傳輸的結構與中斷傳輸的結構非常相似, 也是由IN事務或OUT事務構成。

批量傳輸IN事務、OUT事務的結構

    批量傳輸中包含了2種最基本的事務, 即IN事務和OUT事務, 而不包括SETUP事務。

    批量傳輸中, 無論是IN事務, 還是OUT事務, 都包含了令牌包、數據包和握手包。

    ①、令牌包階段

        IN事務:主機通過發送輸入包 IN (標識域 PID 爲 IN ), 來啓動 1 個 IN 傳輸。

        OUT事務:主機發送輸出包 OUT (標識域 PID 爲 OUT), 啓動 1 個 OUT 傳輸。

    ②、數據包階段

        IN事務:設備忙,回覆無效包NAK,事務提前結束。主機不斷重試這個事務。

        設備端點被禁止,回覆錯誤包STALL,事務提前結束,總線進入空閒狀態。

        設備端點正常,且設備準備新的中斷處理,則設備會按主機要求回覆主機所需數據。

        OUT事務:結構相對較爲簡單, 主機將緊接着OUT令牌包, 就發送數據, 並按照DATA0和DATA1 數據包交替觸發的順序來發送數據。

    ③、握手包階段

         IN事務:如果主機正確地接收到了數據, 那麼就會給設備發送ACK; 如果數據包在傳輸過程中被破壞了, 那麼設備就會不回覆任何握手信息, 直接將總線轉入空閒狀態, 等待下一次傳輸。

        OUT事務:設備忙,返回無效包NAK,總線進入空閒,直到主機重試發送該數據設備端點被禁止,回覆錯誤包STALL,事務提前結束,總線進入空閒狀態。    如果發送的數據沒有錯誤, 並且設備成功地接收, 那麼設備就返回ACK, 同時通知主機可以發送新的數據。如果數據包發生了CRC校驗錯誤, 將不會返回任何握手信息。

(2)、數據包發送順序

    批量傳輸的數據包的發送順序 , 也與中斷傳輸非常類似從DATA0數據包開始, 然後是DATA1數據包, 接着又是DATA0, 依次重複下去。

批量傳輸的數據包發送順序

 

(3)、總線傳輸特點

    批量傳輸既沒有固定的傳輸速率, 也不佔有固定帶寬。只有當總線處於空閒狀態時, 批量傳輸才能夠獲得比較大的帶寬。而當總線“忙”時, USB 就會優先進行其他類型的數據傳輸,而暫時停止批量傳輸的進行, 因而批量傳輸就會需要很長的時間才能完成。

(4)、數據包的大小

    全速的 USB 設備的數據大小可設定爲8、16、32 或 64 字節。 高速設備則必須設定爲固定值 512 字節。數據傳輸過程中的每一個數據的大小必須滿足上述的要求, 除了最後1個數據包。

(5)、支持設備類型

    低速不支持,全速、高速和超高速都支持批量傳輸。

4、同步傳輸

    同步傳輸( Isochronous T ransfer, 可簡寫爲 ISO), 多用於音頻流等需要恆定傳輸速率的數據傳輸中, 比如音箱、顯示器和攝像頭等設備的接口。

(1)、結構

    同步傳輸的數據結構最爲簡單, 因爲這類數據講究的是傳輸速率的恆定, 而對於數據的準確性的要求不如批量傳輸那麼嚴格。因此, 同步傳輸中沒有握手包, 總線只優先保證其佔用帶寬, 而不對發送錯誤的數據進行重試。 同步傳輸仍然可由IN事務或 OUT 事務組成:

同步傳輸IN事務、OUT事務的結構

 

    同步傳輸中, 總線優先支持其等時性, 即保證帶寬, 因此, 對於數據的準確性的要求次之。基於此, 同步傳輸的事務中, 不包含握手包, 主機和設備都無需對接收到的數據返回握手信息。

    同步傳輸中包含了 2 種最基本的事務類型, 即 IN 事務和 OUT 事務, 同中斷傳輸和批量傳輸一樣, 它也不支持設置 SETUP 事務。

    ①、令牌包階段:

        IN事務:主機通過發送輸入包 IN(標識域 PID 爲 IN), 來啓動 1 個 IN 傳輸。

        OUT事務:主機發送輸出包 OUT (標識域 PID 爲 OUT), 啓動 1 個 OUT 傳輸。

    ②、數據包階段:

        IN事務:設備緊接着 IN 令牌包, 以 DATA0 和 DATA1 交替觸發機制發送有效數據, 然後總線進入空閒狀態, 準備進行下一次傳輸。

        OUT事務:同輸入 IN 事務一樣, 主機會緊接着 OUT 令牌包, 以 DATA0 和 DATA1 交替觸發機制發送有效數據給設備, 然後總線進入空閒狀態, 準備進行下一次傳輸。

(2)、數據包發送順序

    與中斷傳輸和批量傳輸不同, 對於全速設備, 同步傳輸中不支持數據包的交替觸發機制,而且第一個數據包被初始化爲 DATA0, 因此 , 數據包將 一直以 DA TA0 發送 下去。 而高速和全速設備在一定條件下支持觸發機制, 情況較爲複雜。

(3)、總線傳輸特點

    全速設備的同步傳輸,在1個幀內,可以包含1筆IN事務或OUT事務,而高速設備可以包含3筆事務。總線將會優先保證同步傳輸的帶寬 , 甚至會因此而暫時中止批量傳輸的進行。

(4)、數據包大小

    全速設備數據包的大小爲 0~1023 字節,而高速設備爲 1024 字節。

(5)、支持設備類型

    只有全速和高速設備支持同步傳輸 , 而低速設備不支持同步傳輸。

5、控制傳輸

    控制傳輸( Control Tran sfer)是最爲複雜的傳輸類型, 也是最爲重要的傳輸類型, 是 USB 枚舉階段最主要的數據交換方式。

(1)、結構

    控制傳輸的核心是 SETUP 事務,USB 定義了較爲複雜的控制傳輸的結構, 將其分爲 3 個大的步驟 :初始設置步驟、可選數據步驟、狀態信息步驟

    ①、初始設置步驟

        初始設置步驟,由一筆SETUP事務構成。這筆SETUP事務有令牌包、數據包和握手包組成。

            令牌包階段 : 主機發送 SETUP 令牌包。

            數據包階段 : 主機發送固定爲 8 個字節的 DATA0 包, 並且有確定的結構, 將這 8 個字節分配給 5 種命令信息, 即 bmRequest Type、bRequest、wValue、wIndex 和 wLength。

            握手包階段 : 設備在接收到主機的命令信息後, 返回 ACK。此後, 總線進入空閒狀態,並準備“可選數據步驟”的開始。

初始設置步驟SETUP事務

 

②、可選數據步驟

    如果在上一步驟中的命令要求讀/ 寫數據的話, 就由這一步驟來具體交換數據。如果沒有數據交換要求的, 這個步驟就可以省去。

可選數據步驟(IN、OUT事務)結構

 

    控制傳輸的“可選數據步驟”中包含了 2 種最基本的事務 , 即 IN 事務和 OUT 事務。

    控制傳輸的“可選數據步驟”中, 無論是 IN 事務, 還是 OUT 事務, 都包含了令牌包、數據包和握手包。

    令牌包階段:

        IN 事務: 主機通過發送輸入包 IN(標識域 PID 爲 IN), 來啓動 1 個 IN 傳輸。

        OUT 事務: 主機發送輸出包 OUT (標識域 PID 爲 OUT), 啓動 1 個 OUT 傳輸。

            數據包階段:需要特別注意的是, 由於“初始設置步驟”中已經包含了 1 個數據包階段,其中的數據是 DATA0 包, 因此 “可選數據步驟”中數據包的第 1個包將是 DATA1包, 然後, 接下來仍將是 DATA0/ 1 的交替觸發 :

        IN 事務 : 設備首先就會對接收到令牌包進行解析如下

            設備忙,回覆無效包NAK,事務提前結束。主機不斷重試這個事務。

            設備端點被禁止,回覆錯誤包STALL,事務提前結束,總線進入空閒狀態。

            設備端點正常,且設備準備新的中斷處理,則設備會按主機要求回覆主機所需數據。

        OUT 事務 : 結構相對較爲簡單, 主機將緊接着 OUT 令牌包, 就發送數據, 並按照DATA0 和 DAT A1 數據包交替觸發的順序來發送數據。

    握手包階段:

        IN事務:如果主機正確地接收到了數據, 那麼就會給設備發送ACK; 如果數據包在傳輸過程中被破壞了, 那麼設備就會不回覆任何握手信息, 直接將總線轉入空閒狀態, 等待下一次傳輸。

        OUT事務:設備忙,返回無效包NAK,總線進入空閒,直到主機重試發送該數據設備端點被禁止,回覆錯誤包STALL,事務提前結束,總線進入空閒狀態。    如果發送的數據沒有錯誤, 並且設備成功地接收, 那麼設備就返回ACK, 同時通知主機可以發送新的數據。如果數據包發生了CRC校驗錯誤, 將不會返回任何握手信息。

③、狀態信息步驟

    主機的控制讀操作中,應用的是OUT事務;而控制寫操作中應用的是IN事務。數據階段中發送的數據均爲DATA1包的0長度數據。

控制傳輸的 “狀態信息步驟”結構

    控制傳輸的“狀態信息步驟”中包含了2種最基本的事務,即輸入IN事務和輸出OUT事務。IN事務代表主機的寫操作, OUT事務代表主機的讀操作。

    控制傳輸的“狀態信息步驟”中,無論是IN事務,還是OUT事務,都包含了令牌包、數據包和握手包。

    令牌包階段:

        IN 事務:主機通過發送輸入包IN(標識域 PID 爲 IN ), 來啓動1個IN傳輸。

        OUT事務:主機發送輸出包 OUT (標識域 PID 爲 OUT), 啓動 1 個 OUT 傳輸。

    數據包階段 :

        IN 事務 :  如果設備沒有準備接收新的數據 , 那麼設備就返回NAK;如果相應的設備端點被禁止,那麼設備就發送STALL包;如果設備端點正常,並且設備準備新的中斷處理, 則設備就會按主機的要求發送所需0長度的數據。

        OUT事務:結構相對較爲簡單,主機將緊接着OUT令牌包,就發送0長度的數據,並按照 DATA0 和 DATA1 數據包交替觸發的順序來發送數據。

    握手包階段 :

        IN事務:如果主機正確地接收到了數據, 那麼就會給設備發送ACK; 如果數據包在傳輸過程中被破壞了, 那麼設備就會不回覆任何握手信息, 直接將總線轉入空閒狀態, 等待下一次傳輸。

        OUT事務:設備忙,返回無效包NAK,總線進入空閒,直到主機重試發送該數據設備端點被禁止,回覆錯誤包STALL,事務提前結束,總線進入空閒狀態。    如果發送的數據沒有錯誤, 並且設備成功地接收, 那麼設備就返回ACK, 同時通知主機可以發送新的數據。如果數據包發生了CRC校驗錯誤, 將不會返回任何握手信息。

(2)、控制傳輸數據發送順序

控制傳輸數據發送順序

(3)、總線傳輸特點

     對於低速和全速設備,總線將會爲控制傳輸保證至少10%的帶寬; 而高速設備的控制傳輸將會得到至少20%的帶寬。這樣,當有設備連接到主機上時,將會很快得到配置,而不必擔心因主機正在進行的其他 USB 傳輸而耽誤。

(4)、數據包大小

    由於控制傳輸的3個步驟中都包含了數據包階段,因此,數據包的大小也要分開討論。在初始設置步驟中,已經知道是1個固定爲8 字節大小的DATA0包。在可選數據步驟中,如果是低速設備,則數據包爲8字節;全速設備的數據包大小可以是8、16、32和64字節; 而高速設備的數據包大小必須爲 64 字節。

(5)、支持設備類型

既然控制傳輸是最爲重要的一類傳輸類型 , 是所有 USB 設備被配置和使用的前提 , 因此 ,低速、全速和高速設備都支持控制傳輸。

如有錯誤,請及時提出。謝謝謝!!!

                  上一篇                                                                        下一篇(軟件篇)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章