USB 傳輸方式(控制)

USB 控制傳輸方式

    控制傳輸的特點
    控制傳輸的過程
        建立過程
        數據過程(可選)
        狀態過程
        建立過程
    控制傳輸示例圖
        USB控制讀
        USB控制寫
        USB無數據控制寫
    USB控制傳輸抓包分析
        讀數據-USB控制傳輸抓包分析
        寫數據-USB控制傳輸抓包分析
        無數據-USB控制傳輸抓包分析


控制傳輸是一種特殊的傳輸方式。當USB設備初次連接主機時,用控制傳輸傳送控制命令等對設備進行配置。同時設備接入主機時,需要通過控制傳輸去獲取USB設備的描述符以及對設備進行識別,在設備的枚舉過程中都是使用控制傳輸進行數據交換。

控制傳輸的特點

控制傳輸相對於其它三個傳輸方式比較複雜,且具有以下特點:

    無論低速設備還是高速設備都可以使用控制通道。
    高速模式的最大包長固定爲64個字節;
    全速模式可在8、16、32、64字節中選擇;
    低速模式的最大包長固定爲8個字節。
    超高速USB3.0控制端點有固定的最大控制傳輸的數據有效載荷爲 512 字節,最大突發大小爲 1.
    控制傳輸的應用場合:主要應用於設備的枚舉過程(如讀取設備描述符,設置地址,設置配置等)和對數據準確性要求較高的場合。

控制傳輸最大包長度
在這裏插入圖片描述

 


控制傳輸的過程

控制傳輸分爲三個過程:

    建立過程
    數據過程(可選)
    狀態過程。
    在這裏插入圖片描述
    在這裏插入圖片描述

建立過程

    主機發送令牌包:SETUP
    主機發送數據包:DATA0
    設備返回握手包:ACK或不應答,;注意:設備不能返回NAK或STALL,即設備必須接收建立事務的數據。
    建立過程是建立事務,建立事務是通過SETUP令牌包,其次是DATA0數據包,最後是握手包,設備只能使用ACK來應籤(或者由於出錯不應答),而不能使用NAK或者STALL來應答,即設備必須接收建立事務的數據。
    在這裏插入圖片描述

數據過程(可選)

一個數據過程可以不包括或包含多個數據事務,但所有數據事務必須是同一方向的,即在控制讀傳輸中,數據過程中的數據事務都必須是輸入的,在控制寫傳輸過程中,數據過程中的事務都必須是輸出。若數據方向發生了改變,則認爲進入狀態過程。數據過程的第一個數據包必須爲DATA1,然後每次正確傳輸一個數據包後就在DATA0和DATA1之間交替。
狀態過程

狀態過程只使用DATA1包,並且傳輸方向與數據過程相反,即控制寫輸出在狀態過程中使用一個批量輸入事務,控制讀輸入在狀態過程中使用一個批量輸出事務。
建立過程

    狀態過程是要返回數據傳輸的成功與否,具體也需要看控制傳輸的類型。需要注意的是,狀態信息的數據傳輸方向與數據階段方向相反。其實我們來思考下,主機給設備把一推數據發送完畢了(OUT事務),主機肯定要請求一個IN事務,讓設備把自己的接收情況發給主機,你設備要給我說你在本輪接收數據有沒有問題,同樣的,設備把數據發送給主機(IN事務),主機肯定要發起一個OUT事務請求,告訴設備主機的接收情況,告訴設備本輪接收數據有沒有問題。

控制傳輸示例圖
USB控制讀

在控制讀傳輸時,該階段則爲OUT事務,其中的數據包固定爲DATA1數據包。返回數據成功與否以有以下情況:
1)讀數據成功 主機發送OUT令牌包(ping令牌包,高速情況下),主機發送0長度數據包,設備ACK。
2)數據傳輸出錯 主機發送OUT令牌包(ping令牌包,高速情況下),主機發送0長度數據包,設備STALL。
3)設備忙(比如正在寫數據) 主機發送OUT令牌包(ping令牌包,高速情況下),主機發送0長度數據包,設備NAK
在這裏插入圖片描述
USB控制寫

在控制讀傳輸時,該階段則爲IN事務,其中的數據包固定爲DATA1數據包。返回數據成功與否以有以下情況:
1)寫數據成功,主機發送IN令牌包,設備發送0長度數據包,主機回覆ACK。
2)數據傳輸出錯, 主機發送IN令牌包,設備回覆STALL。
3)設備忙(比如正在寫數據),主機發送IN令牌包,設備回覆NAK。
在這裏插入圖片描述
USB無數據控制寫

該階段則爲IN事務,其規則與控制寫傳輸相似。
在這裏插入圖片描述
USB控制傳輸抓包分析
讀數據-USB控制傳輸抓包分析

控制讀傳輸在初始設置階段會發起一個SETUP事務,從這個SETUP事務我們可以知道是設備給主機傳輸數據,並且數據長度是255,具體的協議後期會詳解,大家在這裏把先控制傳輸理解到位,接着在數據階段完成數據交換(因爲是設備給主機傳輸數據,所以是數據階段是IN事務),最後在狀態信息階段主機給設備發送一個OUT事務表明自己接收是否異常。
在這裏插入圖片描述
寫數據-USB控制傳輸抓包分析

控制寫傳輸在初始設置階段同樣會發起一個SETUP事務,從這個SETUP事務我們可以知道是主機向設備傳輸數據,並且數據長度是12,接着在數據階段完成數據交換(因爲是主機給設備傳輸數據,所以數據階段是OUT事務),最後在狀態信息階段主機發起一個IN事務,請求設備回答接收情況。
在這裏插入圖片描述
無數據-USB控制傳輸抓包分析

無數據控制傳輸在初始設置階段同樣會發起一個SETUP事務,從這個SETUP事務看到數據長度是0,因此無數據階段,最後在狀態信息階段主機發起一個IN事務,請求設備回答接收情況。
在這裏插入圖片描述
————————————————
版權聲明:本文爲CSDN博主「華佗hans」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_27846717/article/details/121141764

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