找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2542|回復(fù): 0
收起左側(cè)

學(xué)習(xí)筆記->USB相關(guān)概念和協(xié)議淺析1

[復(fù)制鏈接]
ID:140343 發(fā)表于 2016-9-24 22:21 | 顯示全部樓層 |閱讀模式
                  

USB 系統(tǒng)拓?fù)浣Y(jié)構(gòu)
1、系統(tǒng)拓?fù)浣Y(jié)構(gòu)(最多127個(gè)設(shè)備)
一個(gè) USB HOST 最多可以同時(shí)支持 128 個(gè)地址,地址 0 作為默認(rèn)地址,只在設(shè)備枚舉期間臨時(shí)用,而不能被分配給任何一個(gè)設(shè)備,因此一個(gè) USB HOST 最多可以同時(shí)支持 127 個(gè)地址,如果一個(gè)設(shè)備只占用一個(gè)地址,那么可最多支持 127 個(gè) USB 設(shè)備。在實(shí)際的 USB 體系中,如果要連接 127 個(gè)USB設(shè)備,必須要使用 USB HUB,而 USB HUB 也是需要占用地址的,所以實(shí)際可支持的 USB 功能設(shè)備的數(shù)量將小于 127。

2、USB主控制器負(fù)責(zé)處理主機(jī)與設(shè)備之間的電氣和協(xié)議層的互聯(lián)。
常見的USB控制的類型:
UHCI:大多是Intel和Via主板上的USB控制器芯片。都是USB1.1規(guī)格。
UHCI:大多是Intel和Via主板上的USB控制器芯片。都是USB1.1規(guī)格。
EHCI:是由Intel等幾個(gè)廠商研發(fā),兼容OHCI\UHCI,遵循USB2.0規(guī)范,同時(shí)兼容USB1.1。
3、每個(gè)USB Host控制器都會(huì)自帶一個(gè)USB HUB,被稱為根(Root)HUB。這個(gè)Hub可以接子HUB, 每子HUB上可以掛載多個(gè)USB設(shè)備。當(dāng)USB設(shè)備拔插HUB,會(huì)發(fā)出電氣信號(hào)(HUB內(nèi)部D+\D-引腳1.5K下拉,設(shè)備為1.5K上拉,接入之后HUB內(nèi)部D+\D-被拉高從而通知USB控制器)
USB設(shè)備邏輯結(jié)構(gòu)
1、在USB設(shè)備的邏輯組織中,包含設(shè)備、配置、接口和端點(diǎn)4個(gè)層次。設(shè)備通常會(huì)有一個(gè)或多個(gè)配置,配置通常有一個(gè)或多個(gè)接口,接口或零或多個(gè)端點(diǎn)。
2、配置、接口、端點(diǎn)。
配置:體現(xiàn)出來是一種功能的集合。不同的配置市設(shè)備表現(xiàn)出不同的功能組合。在探測(cè)、連接期間需從其中選定一個(gè)。
接口:體現(xiàn)出來就是一種功能。而配置由多個(gè)接口(功能)組成,接口由多個(gè)端點(diǎn)組成,代表一個(gè)基本的功能。是USB設(shè)備驅(qū)動(dòng)程序控制的對(duì)象。一個(gè)功能復(fù)雜的USB設(shè)備可以具有多個(gè)接口,而接口是端點(diǎn)的匯集。
端點(diǎn):基本的通信單位,除了端點(diǎn)0之外是雙向通訊,其它都是單向通信?梢岳斫鉃閿(shù)據(jù)緩沖區(qū)。是USB設(shè)備中唯一可尋址的部分。它是位于USB設(shè)備或主機(jī)上的一個(gè)數(shù)據(jù)緩沖區(qū),用來存放和發(fā)送USB的各種數(shù)據(jù)。主機(jī)和設(shè)備的通信最終作用于設(shè)備上的各個(gè)端點(diǎn),它是主機(jī)和設(shè)備間通信流的一個(gè)邏輯終端。
3、地址、端點(diǎn)號(hào)
每個(gè)USB設(shè)備有一個(gè)唯一的地址、這個(gè)地址是在設(shè)備連上主機(jī)時(shí),由主機(jī)分配給USB設(shè)備(整個(gè)主機(jī)范圍,對(duì)應(yīng)具體的USB設(shè)備,會(huì)寫入U(xiǎn)SB設(shè)備)。而設(shè)備中的每個(gè)端點(diǎn)在設(shè)備內(nèi)部有唯一的端點(diǎn)號(hào),這個(gè)端點(diǎn)號(hào)是在設(shè)計(jì)設(shè)備時(shí)固定的(整個(gè)設(shè)備范圍,對(duì)應(yīng)具體端口)。
每個(gè)端點(diǎn)都是一個(gè)簡單的連接點(diǎn),支持?jǐn)?shù)據(jù)流進(jìn)或流出設(shè)備,兩者不可兼得,即單向通信。
4、基于Pnp機(jī)制,設(shè)備被枚舉時(shí),它必須告訴主機(jī)此設(shè)備有幾個(gè)端點(diǎn),每個(gè)端點(diǎn)的特性,包括端口號(hào)、通信方向、端點(diǎn)支持的最大包大小(又稱數(shù)據(jù)有效負(fù)載)、數(shù)據(jù)帶寬要求等。每個(gè)設(shè)備必須有端點(diǎn)0,用于設(shè)備枚舉和對(duì)設(shè)備進(jìn)行一些基本的控制功能,即主機(jī)一開始與USB設(shè)備通訊時(shí)都會(huì)直接訪問端點(diǎn)0(約定),其余的端點(diǎn)在設(shè)備配置(通過端點(diǎn)0)之前無法與主機(jī)通信(因?yàn)橹鳈C(jī)不知道端點(diǎn)的特性),只有通過端點(diǎn)0將這些端點(diǎn)特性告訴主機(jī)之后,主機(jī)才知道如何使用這些端點(diǎn),這些端點(diǎn)才算被激活使用。
USB描述符
1、當(dāng)我們把USB設(shè)備(如USB鼠標(biāo))接入到我們PC時(shí),PC能夠自動(dòng)識(shí)別出我們的USB設(shè)備類型。這是因?yàn)閁SB主機(jī)檢測(cè)到USB設(shè)備接入之后會(huì)主動(dòng)通過USB設(shè)備的端點(diǎn)0取獲取一組固定格式的數(shù)據(jù),該數(shù)據(jù)包含了USB的類型、生產(chǎn)廠商等信息。這組固定格式的數(shù)據(jù)就稱之為USB描述符。
2、標(biāo)準(zhǔn)的USB設(shè)備有5種USB設(shè)備描述符
a)設(shè)備描述符:
一個(gè)USB設(shè)備只能有一個(gè)設(shè)備描述符,但可包含多個(gè)配置描述符。
長度為18個(gè)字節(jié)。Table 9-8(262(290/650)頁)。
b)配置描述符:
描述此設(shè)備都有哪些功能集合。一個(gè)配置描述符可以包含多個(gè)接口描述符。
長度為8個(gè)字節(jié)。Table 9-10(265 (293 / 650) 頁)。
c)接口描述符:
描述一個(gè)具體的功能,該功能需要與主機(jī)通訊都要使用端點(diǎn)。
長度為8個(gè)字節(jié)。Table 9-12(268 (296 / 650) 頁)。
d)端點(diǎn)描述符:
一個(gè)接口描述符使用了多少個(gè)端點(diǎn)就有多少個(gè)端點(diǎn)描述符。
長度為7個(gè)字節(jié)。 Table 9-13(269 (297 / 650) 頁)。
e)字符串描述符:
用于設(shè)備、配置、接口描述符需要加入字符串信息(如廠家名稱)的時(shí)候,可以使用此描述符,設(shè)備、配置、接口通過索引的方式找到指定的字符串描述符。
   
    參考:Universal+Serial+Bus+Specification+v2[1].0((USB+2.0).pdf
USB設(shè)備枚舉
1、USB設(shè)備在正常工作以前,第一件事要做的事就是枚舉。枚舉是讓HOST認(rèn)得這個(gè)USB設(shè)備,并且為該設(shè)備準(zhǔn)備好資源,如分配好地址、得到該設(shè)備所有端點(diǎn)特性。建立好主機(jī)和設(shè)備之間的數(shù)據(jù)傳遞機(jī)制。
2、USB標(biāo)準(zhǔn)的8個(gè)枚舉步驟
a)獲取設(shè)備描述符
b)復(fù)位
c)設(shè)置地址
d)再次獲取設(shè)備描述符
e)獲取配置描述符
f)獲取接口、端點(diǎn)描述符
g)獲取字符串描述符
h)選擇設(shè)備配置   
   
3、獲取設(shè)備描述符的數(shù)據(jù)包分析

第一個(gè)事務(wù)->請(qǐng)求包:
Packet1:Host發(fā)送一個(gè)SETUP命令,表示即將發(fā)送請(qǐng)求包
Packet2:Host發(fā)送了一個(gè)請(qǐng)求包,請(qǐng)求設(shè)備將其設(shè)備描述符發(fā)送過來
Packet3:Device 回送一個(gè)ACK 響應(yīng)包,表示已經(jīng)收到請(qǐng)求。
    第二事務(wù)->拿到設(shè)備描述符-描述信息
    Packet1:Host發(fā)送獲取數(shù)據(jù)的命令給 Devices。
    Packet2:Devices 發(fā)送數(shù)據(jù)給 Host
    Packet3:Host 返回一個(gè)ACK表示Host收到的數(shù)據(jù)。
4、USB鼠標(biāo)的整個(gè)枚舉和通信的流程
鼠標(biāo)是通過中斷傳輸方式:(這里的中斷并不是指硬件中斷,只是一種USB的傳輸方式)
鼠標(biāo)是通過中斷傳輸方式:(這里的中斷并不是指硬件中斷,只是一種USB的傳輸方式)


   








回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表