USB(UniversalSerialBus),其中文為通用串行總線,是一個外部總線標(biāo)準(zhǔn),也是一種輸入輸出接口的技術(shù)規(guī)范,被廣泛地應(yīng)用于個人計算機(jī)和計算機(jī)周邊配套的通信。標(biāo)準(zhǔn)USB接口通過四線實現(xiàn)主機(jī)跟設(shè)備之間的通信連接(Vdd/D+/D-/GND),每臺主機(jī)最多可以連接127個外部設(shè)備,并且不會損失通信速度。常用的電腦周邊USB設(shè)備有鼠標(biāo)、鍵盤、U盤、音響、攝像頭等等。那么一臺主機(jī)(電腦),是如何適時的知道是否有外部USB設(shè)備插入電腦USB端口的呢?
一、USB端口及設(shè)備硬件架構(gòu)
如下圖所示,圖(1)為USB主機(jī)接口內(nèi)部示意圖,圖2為支持全速通信的USB設(shè)備端,圖3為支持低速通信的USB設(shè)備端口。
二、USB端口插入外部設(shè)備識別
1)全速/低速設(shè)備插入識別
USB支持三種類型的傳輸速率:1.5Mb/s的低速傳輸、12Mb/s的全速傳輸和480Mb/s的高速傳輸。當(dāng)主控制器或集線器的下行端口上沒有USB設(shè)備連接時,其D+和D-線上的下拉電阻使得這兩條數(shù)據(jù)線的電壓都是近地的(圖1);當(dāng)全速/低速設(shè)備連接以后,電流流過由集線器的下拉電阻和設(shè)備在D+/D-的上拉電阻構(gòu)成的分壓器。由于下拉電阻的阻值是15KΩ,上拉電阻的阻值是1.5KΩ,所以在D+/D-線上會出現(xiàn)大小為(Vcc*15/(15+1.5))的直流高電平電壓。當(dāng)USB主機(jī)探測到D+/D-線的電壓已經(jīng)接近高電平,而其它的線保持接地時,它就知道全速/低速設(shè)備已經(jīng)連接了(D+為高電平,主機(jī)判定接入全速設(shè)備;如果檢測D-為高電平,則接入的USB設(shè)備為低速設(shè)備)。
2)高速設(shè)備插入識別
高速設(shè)備初始是以一個全速設(shè)備的身份出現(xiàn)的,即和全速設(shè)備一樣,D+線上有一個1.5k的上拉電阻。USB2.0的hub把它當(dāng)作一個全速設(shè)備,之后,主機(jī)hub和設(shè)備通過一系列握手信號確認(rèn)雙方的身份。在這里對速度的檢測是雙向的,比如高速的hub需要檢測所掛上來的設(shè)備是高速、全速還是低速,高速的設(shè)備需要檢測所連上的hub是USB2.0的還是1.x的,如果是前者,就進(jìn)行一系列動作切到高速模式工作,如果是后者,就以全速模式工作。
總結(jié)下來,高速設(shè)備的識別過程如下:
1)D+/D-上拉電阻確定為全速/高速設(shè)備
2)主機(jī)hub檢測到有設(shè)備插入,向主機(jī)通報,主機(jī)發(fā)送Set_Port_Feature請求讓hub復(fù)位新插入的設(shè)備。設(shè)備復(fù)位操作是hub通過驅(qū)動數(shù)據(jù)線到復(fù)位狀態(tài)SE0(Single-ended 0,即D+和D-全為低電平),并持續(xù)至少10ms(中穎設(shè)備中產(chǎn)生bus reset信號)。
3)如果是高速設(shè)備,看到復(fù)位信號后,通過內(nèi)部的電流源向D-線持續(xù)灌大小為17.78mA電流。因為此時高速設(shè)備D+的1.5k上拉電阻還未撤銷,在hub端,全速/低速驅(qū)動器形成一個阻抗為45歐姆(Ohm)的終端電阻,兩個電阻并聯(lián)后仍是45歐姆左右的阻抗,所以在hub端看到一個約800mV的電壓(45歐姆*17.78mA),這就是Chirp K信號。Chirp K信號的持續(xù)時間是1ms~7ms。
4)在hub端,雖然下達(dá)了復(fù)位信號,并一直驅(qū)動著SE0,但USB2.0的高速接收器一直在檢測Chirp K(D+位0,D-為1)信號,如果沒有看到Chirp K信號,就繼續(xù)復(fù)位操作,直到復(fù)位結(jié)束,之后就在全速模式下操作。如果只是一個全速的hub,不支持高速操作,那么該hub不理會設(shè)備發(fā)送的Chirp K信號,之后設(shè)備也不會切換到高速模式。
設(shè)備發(fā)送的ChirpK信號結(jié)束后100us內(nèi),hub必須開始回復(fù)一連串的KJKJKJ….(K/J為USB信號端口的兩種狀態(tài),K狀態(tài)D+為高D-為低,J狀態(tài)D+為低D-為高)序列,向設(shè)備表明這是一個USB2.0的hub。這里的KJ序列是連續(xù)的,中間不能間斷,而且每個K或J的持續(xù)時間在40us~60us之間。KJ序列停止后的100~500us內(nèi)結(jié)束復(fù)位操作。hub發(fā)送ChirpKJ序列的方式和設(shè)備一樣,通過電流源向差分?jǐn)?shù)據(jù)線交替灌17.78mA的電流實現(xiàn)。
5)設(shè)備端確定上述高速流程后,斷開D+上拉1.5k電阻并連接D+/D-上的高速終端電阻。
三、USB端口設(shè)備枚舉
通過上述過程,主機(jī)只是知道有新的設(shè)備插入了,但是不知道插進(jìn)來個什么東西,所以就開始詢問它是什么設(shè)備,怎么用,負(fù)荷能力怎么樣。這個時候就進(jìn)入了USB協(xié)議的枚舉過程。USB枚舉過程簡單來說如下:
1)獲取設(shè)備描述符
地址:默認(rèn)為0
主機(jī):發(fā)送獲取描述符指令包
設(shè)備:設(shè)備接到包后解析,然后按固定格式返回設(shè)備描述符信息
目的:主機(jī)獲取USB設(shè)備的基礎(chǔ)屬性,比如數(shù)據(jù)傳輸方式,數(shù)據(jù)長度,設(shè)備最大電流負(fù)荷,USB版本,VID/PID等。
2)配置描述符
分配地址:主機(jī)給設(shè)備分配一個屬于它的地址;
主機(jī):給設(shè)備一個地址后,就開始詢問設(shè)備的具體配置(配置描述符)。
設(shè)備:解析主機(jī)信息,上傳設(shè)備配置信息;
目的:配置上傳設(shè)備描述符、字符串描述符等;HID設(shè)備還要上傳報告描述符。
到此,主機(jī)就已經(jīng)完全識別了端口插入的設(shè)備是什么,將怎么工作。
來源:中穎電子
-
usb
+關(guān)注
關(guān)注
60文章
7876瀏覽量
263707 -
中穎電子
+關(guān)注
關(guān)注
4文章
171瀏覽量
7409
發(fā)布評論請先 登錄
相關(guān)推薦
評論