乙個usb裝置有乙個裝置描述符,裝置描述符裡面決定了該裝置有多少種配置,
每種配置描述符對應著配置描述符;而在配置描述符中又定義了該配置裡面有多少個介面,
每個介面有對應的介面描述符;在介面描述符裡面又定義了該介面有多少個端點,
每個端點對應乙個端點描述符;端點描述符定義了端點的大小,型別等等。
由此我們可以看出,usb的描述符之間的關係是一層一層的,
最上一層是裝置描述符,
下面是配置描述符,再下面是介面描述符,
再下面是端點描述符。在獲取描述符時,
先獲取裝置描述符,
然後再獲取配置描述符,
根據配置描述符中的配置集合長度,
一次將配置描述符、介面描述符、端點描述符一起一次讀回。
其中可能還會有獲取裝置序列號,廠商字串,產品字串等
usb資料傳送方式:
lddr3中詳細介紹了usb資料傳送的幾種方式為: 控制傳輸、中斷傳輸、同步傳輸、批量傳輸。
1、控制傳輸:
由主機發起,叢機響應,多用於命令、傳輸較短的資料。
2、中斷傳輸:
中斷可想而知,需要高效實時響應的傳輸,要求資料簡單、精悍,資料傳輸過程中低延遲等。適用於滑鼠類、鍵盤類。
3、同步傳輸
資料的應答機制,即不考慮發起方是否需要知道資料傳送是否成功。因此在usb資料傳送過程中是不需要握手階段的
4、批量傳輸
非週期、批量的傳輸,在每傳輸一批包後,需要有握手階段,所以是穩定、可靠的傳輸,但是容易出現延時的問題。
usb資料傳送流程:
a) 令牌階段:主機傳送請求,usb裝置依據請求pid來判斷in或out傳輸
b) 資料傳輸階段:依據令牌階段的in或out傳輸,來決定資料傳輸為data0或data1來進行資料傳輸
c) 握手階段:接收資訊的一方傳送ack訊號以表示接收成功;若為nak,表示傳送失敗;stall表示不可預知的錯誤
usb列舉過程:需要記住的一點是列舉只能是由主裝置端發起
1、usb介面檢測到裝置插入,通過d+和d-查分電壓檢測得到,產生乙個中斷。
連線了裝置的 hub 在 host 查詢其狀態改變端點 時返回對應的 bitmap,告知host 某個port狀態發生了改變。
主機向 hub 查詢該port的狀態,得知有裝置連線,並知道了該裝置的基本特性。
主機等待(至少 100ms)裝置上電穩定,然後向 hub 傳送請求,復位並使能該port。
hub執行port復位操作,復位完成後該port就使能了。現在裝置進入到de****t狀態,可以從vbus獲取不超過 100ma 的電流。主機可以通過0位址與其通訊。
2、主機通過0位址向該裝置傳送get_device_descriptor標準請求,獲取裝置的描述符。目的是取得卻預設控制管道所支援的最大資料報長度,
該長度包含在裝置描述符的bmaxpacketsize0欄位中,其位址偏移量為7,主機讀取64位元組,但實際不一定能讀到,
因為這時候還不知道一次能讀取的最大長度,但是肯定能讀到前8個位元組,因為可能的值為(8,16,32,64).
3、主機再次向 hub 傳送請求,復位該port。
4、 主機通過標準請求 set_address給裝置分配位址。
5、主機通過新位址向裝置傳送 get_device_descriptor標準請求,獲取裝置的描述符。
6、 主機通過新位址向裝置傳送其他 get_configuration請求,獲取裝置的配置描述符。
7、 根據配置描述符的wtotallength欄位(位址偏移為2,總共兩個位元組,即偏移位址3表示高8位,偏移位址2表示低8位),
表示該配置描述符及其包含的介面描述符、端點描述符和**商描述等的總長度。
英文原文:total length of data returned for thisconfiguration.includes the combined lengthof all descriptors (configuration, inte***ce,endpoint,
and class- or vendor-specific)returned for this configuration.再次傳送get_configuration請求,獲取資料長度為wtotallength。
8、根據配置資訊,主機選擇合適配置,通過 set_configuration請求對裝置而進行配置。這時裝置方可正常使用。
USB列舉過程詳述
本系統中所謂usb裝置與主機是通過檢測vcc上拉電阻的變化來確定是否有裝置連線的。在d12內部整合了1.5k 的上拉電阻,預設狀態下不與vcc相連,程式執行時可以向d12傳送連線命令使1.5k 電阻連線到vcc,這樣主機便檢測到有裝置連線。它的列舉過程分析如下。裝置連線到匯流排後,裝置從匯流排獲得5...
USB裝置列舉過程
當裝置連線到主機時,按照以下順序進行列舉 1.連線了裝置的hub 在host 查詢其狀態改變端點時返回對應的bitmap,告知host 某個port 狀態發生了改變。2.主機向hub 查詢該port 的狀態,得知有裝置連線,並知道了該裝置的基本特性。3.主機等待 至少100ms 裝置上電穩定,然後向...
USB列舉過程(1)
總的過程 host檢測到device,reset 獲取裝置描述符 host發獲取裝置描述符請求 setup data0 divice返回裝置描述符 in ack host說明已獲取裝置描述符 out data0空資料 lsb先發 對裝置reset,開始設定新位址 新位址 out data0 new ...