1. 前言
從1996年1月USB1.0正式發(fā)布至今(2017年9月 USB3.2發(fā)布),USB已經(jīng)走過(guò)了21個(gè)年頭。在這21年的時(shí)間了,USB標(biāo)準(zhǔn)化組織(USB?Implementers Forum,USB-IF)折騰出來(lái)了各式各樣、五花八門(mén)的接口形態(tài):Type A、Type A SuperSpeed、Type B、Type B SuperSpeed、Mini-A、Mini-B、Micro-A、Micro-B、Micro-B SuperSpeed、Type C等等。
另外,USB接口主要由插座(Receptacle)、插頭(Plug)和線纜(Cable)三部分組成,再疊加上這些奇奇怪怪的規(guī)范,災(zāi)難就發(fā)生了:
A產(chǎn)品喜歡用Type A的插座,B產(chǎn)品偏偏喜歡Type B,連接它們的線纜就悲劇了,只能變成A-to-B的了。以此類推,A-to-A、B-to-B、A-to-MicroA、等等,于是我們的抽屜就擠滿了各種不明用途的USB線……
好吧,吐槽時(shí)間結(jié)束,因?yàn)楸疚牡闹鹘遣皇沁^(guò)去的那些奇奇怪怪的接口,而是最新的、紅到發(fā)紫的USB-C(也稱作USB Type C)規(guī)范。提起typec,它還真和它的A、B前輩們不太一樣:
因?yàn)樗凶约邯?dú)立的、自行演化的規(guī)范文件----USB Type-C Specification(2014年發(fā)8月布1.0版本,2017年7月發(fā)布1.3版本)。而前輩們就沒(méi)有這樣的待遇了,它們都依附于具體的USB規(guī)范(USB 1.0、USB 1.1、USB 2.0、等等)。
為什么會(huì)這樣的呢?當(dāng)然是因?yàn)樗歇?dú)特之處了,具體請(qǐng)參考本文后續(xù)的描述。
2. 概述
我們接著上面的問(wèn)題講。
Type C之前的規(guī)范(Type A、Type B、等等),偏重于USB接口的“硬”的特性,如信號(hào)的個(gè)數(shù)、接口的形態(tài)、電氣特性、等等,這些特性一旦固定,就沒(méi)有更改的需求了,這就導(dǎo)致了:
1)這些接口規(guī)范不需要單獨(dú)存在(因?yàn)闆](méi)有更新、演化的要求),“隨便”在USB規(guī)范的哪個(gè)章節(jié)交代一下就行了。
2)同時(shí)存在五花八門(mén)、種類繁多的接口(因?yàn)椴荒芨?、演化啊,一旦新需求出現(xiàn),只能再搞一個(gè)新的了)。
到USB Type C的時(shí)候,USB標(biāo)準(zhǔn)化組織的這些家伙突然開(kāi)竅了(管他主動(dòng)開(kāi)竅還是被動(dòng)開(kāi)竅,反正是開(kāi)竅了),在定義USB接口“硬”的特性的基礎(chǔ)上,增加了一些“軟”的內(nèi)容,一下子就海闊天空了。至此,USB接口(僅僅指Type C)擺脫了和USB的從屬關(guān)系,變成了一個(gè)可以和USB規(guī)范平起平坐的新規(guī)范。
大家估計(jì)會(huì)很好奇,這家伙到底Get了什么新技能,從而成功上位了呢?讓我們簡(jiǎn)單總結(jié)一下(注意其中黃色高亮部分):
▲ 定義一套新的接口形態(tài)(Receptacle/Plug/Cable)
▲ 插座(Receptacle)可以用在很薄的電子設(shè)備上,因?yàn)樗母叨戎挥?mm
▲?插頭(Plug)更容易使用了,可以正著插、反著插、隨便插、想怎么插怎么插,終于不再反人類了(想想之前,插一個(gè)U盤(pán)到電腦中:哦,好像插不進(jìn)去,反過(guò)來(lái)試試;嗯?還是插不進(jìn)去,再反過(guò)來(lái)試試;噢!終于插進(jìn)去了……流汗中……)
▲?線纜(Cable)也更容易使用了,兩端一模一樣(當(dāng)然,為了兼容、轉(zhuǎn)接舊有規(guī)范的除外),也是想怎么插就怎么插
▲ 插頭(Plug)和線纜(Cable)的改進(jìn),并不是一個(gè)空手套白狼的買(mǎi)賣(mài),是要付出代價(jià)的,因?yàn)樾枰粋€(gè)稱作“Configuration Process”的過(guò)程解決如下的兩個(gè)問(wèn)題:?
???? □ 插頭可以隨便插,因而需要一套檢測(cè)插入方向的機(jī)制,并可以通過(guò)插入方向動(dòng)態(tài)的map管腳信號(hào)以便進(jìn)行后續(xù)的通信?
???? □ 線纜的兩端一模一樣,就無(wú)法區(qū)分所連接的兩個(gè)USB設(shè)備的角色(Host or Device、等等),因而需要一套協(xié)商機(jī)制,以便讓兩端的USB設(shè)備進(jìn)行角色的溝通
▲ 以上的“Configuration Process”是使用兩個(gè)稱作CC(CC1和CC2)的管腳進(jìn)行的,利用不同電壓,傳遞一些簡(jiǎn)單的信息,以滿足上面的需求。?
???? □ 后來(lái),一個(gè)稱作USB PD(Power Delivery)[3]的規(guī)范出現(xiàn)了,它在這兩個(gè)管腳上實(shí)現(xiàn)了一種簡(jiǎn)單的、半雙工的通信協(xié)議,以完成USB power供給有關(guān)協(xié)商(有關(guān)USB PD,可參考相應(yīng)的規(guī)范[3]以及本站后續(xù)的文章)??梢哉f(shuō),這個(gè)通信協(xié)議就是打開(kāi)新世界的鑰匙。基于它,更多有意義的事情出現(xiàn)了(因此,USB Type C可以單獨(dú)存在了),例如?
???? □?支持?jǐn)U展功能。通過(guò)擴(kuò)展功能,USB Type C接口擁有了無(wú)線的想象空間,可以搖身變成任意其它協(xié)議的物理接口,例如配件接口、音頻接口、視頻接口、debug接口等等,大有一統(tǒng)天下之勢(shì)。從這個(gè)角度看,USB Type C不僅僅是成功上位(從USB規(guī)范中獨(dú)立出來(lái)),而是成功逆襲(凌駕于USB規(guī)范之上),格局?。。?/p>
對(duì)USB Type C有個(gè)基本的了解之后,我們?cè)俸?jiǎn)單分析一下它的主要特性(主要從軟件的角度,純電氣方面的內(nèi)容直接插規(guī)范就行了,這里不再羅嗦)。
3. 主要特性
3.1 接口形態(tài)(Receptacle/Plug/Cable)
為了實(shí)現(xiàn)自己的理想和抱負(fù),USB Type C定義了新的接口形態(tài)。另外,為了兼容舊的接口以及一些特殊功能,它定義了不同形態(tài)的插座、插頭、線纜。主要包括:
1)定義了2種Type-C的插座
a)全功能的Type-C插座,可以用于支持USB2.0、USB3.1、等特性的平臺(tái)和設(shè)備。?
b)USB 2.0 Type-C插座,只可以用在支持USB2.0的平臺(tái)和設(shè)備上。
2)定義了3種Type-C插頭
a)全功能的Type-C插頭,可以用于支持USB2.0、USB3.1、等特性的平臺(tái)和設(shè)備。?
b)USB 2.0 Type-C插頭,只可以用在支持USB2.0的平臺(tái)和設(shè)備上。?
c)USB Type-C Power-Only插頭,用在那些只需要供電設(shè)備上(如充電器)。
3)定義了3種標(biāo)準(zhǔn)的Type-C線纜
a)兩端都是全功能Type-C插頭的全功能Type-C線纜。?
b)兩端都是USB 2.0 Type-C插頭的USB 2.0 Type-C線纜。?
c)只有一端是Type-C插頭(全功能Type-C插頭或者USB 2.0 Type-C插頭)的線纜。
4)為兼容舊設(shè)備而定義的線纜或者適配器
a)一種線纜,一端是全功能的Type-C插頭,另一端是USB 3.1 Type-A插頭。?
b)一種線纜,一端是USB 2.0 Type-C插頭,另一端是USB 2.0 Type-A插頭。?
c)一種線纜,一端是全功能的Type-C插頭,另一端是USB 3.1 Type-B插頭。?
d)一種線纜,一端是USB 2.0 Type-C插頭,另一端是USB 2.0 Type-B插頭。?
e)一種線纜,一端是USB 2.0 Type-C插頭,另一端是USB 2.0 Mini-B插頭。?
f)一種線纜,一端是全功能的Type-C插頭,另一端是USB 3.1 Micro-B插頭。?
g)一種線纜,一端是USB 2.0 Type-C插頭,另一端是USB 2.0 Micro-B插頭。?
h)一種適配器,一端是全功能的Type-C插頭,另一端是USB 3.1 Type-A插座。?
i)一種適配器,一端是USB 2.0 Type-C插頭,另一端是USB 2.0 Micro-B插座。
注1:再吐槽一下,看了上面的a-i,應(yīng)該能感受到之前的USB接口規(guī)范是多么的能折騰了吧?
3.2 管腳及信號(hào)的定義
USB Type-C接口有24個(gè)管腳,插座和插頭在管腳信號(hào)的定義上有一點(diǎn)點(diǎn)的不同,分別如下:
A1 | A2 | A3 | A4 | A5 | A6 | A7 | A8 | A9 | A10 | A11 | A12 |
GND | TX1+ | TX1- | VBUS | CC1 | D+ | D- | SBU1 | VBUS | RX2- | RX2+ | GND |
? |
GND | RX1+ | RX1- | VBUS | SBU2 | D- | D+ | CC2 | VBUS | TX2- | TX2+ | GND |
B12 | B11 | B10 | B9 | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 |
表格1:USB Type-C Receptacle Interface (Front View)
A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 |
GND | RX2+ | RX2- | VBUS | SBU1 | D- | D+ | CC | VBUS | TX1- | TX1+ | GND |
? |
GND | TX2+ | TX2- | VBUS | VCONN | ? | ? | SBU2 | VBUS | RX1- | RX1+ | GND |
B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | B9 | B10 | B11 | B12 |
表格2:USB Full-Featured Type-C Plug Interface (Front View)
以上信號(hào)按照功能可以分為5類:
1)Power有關(guān)的信號(hào),包括?
???? a)VBUS,USB線纜的bus power(和我們通常意義上VBUS保持一致)。?
???? b)VCONN(只有在插頭上才會(huì)有該信號(hào)),用于向插頭供電(由此可以推測(cè)出有些插頭中可能會(huì)有電路)。?
???? c)GND,接地。
2)USB 2.0數(shù)據(jù)線,D+/D-。它們?cè)诓孱^端只有一對(duì),和舊的USB 2.0規(guī)范一致。但為了支持正反隨意插。在插座端定義了兩組,這樣插座端可以根據(jù)實(shí)際情況進(jìn)行合適的mapping。
3)USB3.1數(shù)據(jù)線,TX+/-和RX+/-,用于高速的數(shù)據(jù)傳輸。插頭和插座端都有兩組,用于支持正反隨意插。
4)用于Configuration的信號(hào),對(duì)插頭來(lái)說(shuō),只有一個(gè)CC,對(duì)插座來(lái)說(shuō),有兩個(gè)CC1和CC2。
5)擴(kuò)展功能所需的信號(hào),具體使用場(chǎng)景由相應(yīng)的擴(kuò)展功能決定。
注2:對(duì)于3.1中所描述的不同類型的插座和插頭,這24個(gè)管腳以及信號(hào)不一定全部使用,具體可參考USB Type-C的規(guī)范[2]。
注3:大家可能注意到了,USB Type-C 24個(gè)管腳信號(hào)中,Power類(GND/VBUS)和數(shù)據(jù)類(D+/D-/TX/RX)是完全對(duì)稱的(對(duì)Power來(lái)說(shuō),無(wú)論怎么插,都是一樣;對(duì)數(shù)據(jù)線來(lái)說(shuō),簡(jiǎn)單的路由一下,就可以工作)。剩下的,包括CC、SBU和VCONN,用于方向、線類型等檢測(cè),具體可參考后面的介紹。
3.3 USB port的Data Role
在USB 2.0及以前的時(shí)代,根據(jù)功能的不同,USB端口分為Host、Device、OTG(Host和Device二者皆可)、Hub等。在Type C時(shí)代,事情的本質(zhì)還在,不過(guò)名字稍微有些調(diào)整,分別稱作:
DFP(Downstream Facing Port),一般作為Host或者Hub,在初始配置下通過(guò)VBUS或者VCONN向device供電。
UFP(Upstream Facing Port),一般作為Device或者Hub,連接到Host上,初始配置下通過(guò)VBUS或者VCONN由Host供電。
DRD(Dual-Role-Data),類似于以前的OTG,既可以作為DFP,也可以作為UFP。設(shè)備剛連接時(shí)作為哪一種角色,由端口的Power Role(參考后面的介紹)決定;后續(xù)也可以通過(guò)data role switch過(guò)程更改(如果支持USB PD協(xié)議的話)。
3.4 USB port的Power Role
根據(jù)USB port的供電(或者受電)情況,USB type c將port劃分為Source、Sink等power角色,具體如下:
Source,通過(guò)VBUS或者VCONN供電。
Sink,通過(guò)VBUS或者VCONN接受供電。
DRP(Dual-Role-Power),既可以作為Source,也可以作為Sink。到底作為Source還是Sink,由設(shè)備連接后的Configuration Process(具體可參考后面的介紹)以及后續(xù)的power role switch過(guò)程決定。
3.5 連接檢測(cè)
USB Type-C的連接檢測(cè)包括3部分的內(nèi)容:
連接檢測(cè);
連接方向檢測(cè);
Power Role檢測(cè)。
這三部分都是通過(guò)USB Type-C接口的CC(CC1和CC2)管腳進(jìn)行的,原理總結(jié)如下(具體細(xì)節(jié)請(qǐng)參考[2]中的說(shuō)明,本文不詳細(xì)羅列了):
1)參考3.2小節(jié)的說(shuō)明,USB Type-C的插座有兩個(gè)CC(CC1和CC2),而插頭(或者說(shuō)USB cable),有兩種情況:
▲ 正常情況下,只有一個(gè)CC,兩個(gè)Type-C端口連接到一起之后,只會(huì)存在一個(gè)CC連接。通過(guò)檢測(cè)哪一個(gè)CC有連接,就可以判斷連接的方向。
▲ 如果是可供電的USB cable(Powered cable),一個(gè)用做CC,另一個(gè)用作Vconn,檢測(cè)方式參考后面的介紹。
2)不同功能的USB port,需要在CC1和CC2管腳上接不同的上拉或者下拉電阻,規(guī)則如下:
Source需要在CC1和CC2管腳接上拉電阻Rp(也可以使用電流源取代,本文就不介紹了),Rp的值可參考[2]中“Table 4-20 Source CC Termination (Rp) Requirements”的介紹。
Sink需要在CC1和CC2管腳接下拉電阻Rd,Rd的值可參考[2]中“Table 4-21 Sink CC Termination (Rd) Requirements”的介紹。
可以通過(guò)VCONN供電的USB電纜(Powered cable)為了讓Source檢測(cè)到(以便通過(guò)VCONN為它供電),需要在CC腳接下拉電阻Rd,并在Vconn串接一個(gè)電阻Ra(代表Vconn的負(fù)載)。
其它配件的規(guī)則,不再介紹了(可參考[2]中有關(guān)的章節(jié))。
3)基于上面的規(guī)則,Source需要根據(jù)CC1和CC2的狀態(tài)(阻值)檢測(cè)Sink的連接及方向,規(guī)則如下:
如果CC1和CC2均為Open狀態(tài),表示沒(méi)有Sink連接。
如果CC1和CC2中的一個(gè)的阻值為Rd(除去自己的Rp或者電流源的阻值)、另一個(gè)為Open,表示有Sink連接,連接的方向由哪一個(gè)CC為Rd決定。
如果CC1和CC2中的一個(gè)的阻值為Ra(除去自己的Rp或者電流源的阻值)、另一個(gè)為Open,表示有不帶Sink的Powered cable連接,連接的方向由哪一個(gè)CC為Ra決定。
如果一個(gè)CC的阻值為Ra,另一個(gè)為Rd,則表示有帶SInk的Powered cable連接,連接方向由哪個(gè)CC為Ra(Rd)決定。
4)Source檢測(cè)到Sink的連接(及方向)后,會(huì)向Vbus和Vconn供電。之后:
Sink通過(guò)檢測(cè)Vbus來(lái)確定Source的連接。
Sink檢測(cè)到連接后,同樣根據(jù)CC管腳的狀態(tài)檢測(cè)連接方向。
5)Source檢測(cè)到不帶Sink的Powered cable的連接后,不會(huì)向Vbus或者Vconn供電。
6)Source檢測(cè)到帶Sink的Powered cable的連接(及方向)后,會(huì)向Vbus和Vconn供電,Sink的行為后上面4)類似。
3.6 Power role檢測(cè)
上面的過(guò)程,是基于某個(gè)port作為Source,另一個(gè)port作為Sink為假設(shè)的。實(shí)際上,某一個(gè)Type-C port可能是DRP port,怎么辦呢?簡(jiǎn)單:
它可以在Source和Sink兩個(gè)狀態(tài)來(lái)回切換,在某一個(gè)狀態(tài)下的檢測(cè)邏輯,和上面3.5描述的完全一樣。
當(dāng)在Source狀態(tài)下,成功的檢測(cè)到Sink的連接時(shí),則自己作為Source;當(dāng)在Sink狀態(tài)下成功檢測(cè)到Source的連接時(shí),則自己作為Sink。
另外,Type-C規(guī)范也提供了一個(gè)后悔藥,雖然我是DRP(Source或者Sink都可以支持),但我更傾向于作為Source(或Sink)怎么辦?好辦:
當(dāng)在動(dòng)態(tài)檢測(cè)的過(guò)程中,自己變成了一個(gè)自己不喜歡的角色,還可以執(zhí)行一個(gè)Try.SRC或者Try.SNK的過(guò)程,嘗試變成自己喜歡的角色。如果碰巧對(duì)方認(rèn)可你作為這個(gè)角色,OK,萬(wàn)事大吉。
注4:到目前為止(在沒(méi)有USB PD協(xié)議參與的情況下),USB Type-C port的data role必須和power role保持一致(因?yàn)門(mén)ype-C規(guī)范沒(méi)有提供多余的機(jī)制去單獨(dú)的協(xié)商data role)。
3.7 USB PD協(xié)議
正確連接后,雙方通過(guò)CC管腳,使用USB PD(Power Delivery)協(xié)議,可以進(jìn)行后續(xù)配置和操作,包括:
Data Role的切換(類似USB OTG的切換);
Power Role的切換;
Vconn role的切換(誰(shuí)通過(guò)Vconn向Powered cable供電);
供電的調(diào)整;
等等(具體可參考[3]以及后續(xù)有關(guān)USB PD協(xié)議的介紹)。
4. 參考文檔
[1]?https://en.wikipedia.org/wiki/USB#2.0
[2] USB Type-C Specification Release 1.3.pdf
[3] USB_PD_R3_0 V1.1 20170112.pdf
評(píng)論
查看更多