目前最新的USB Type-C release版本就是2019年8月USB协会发布的2.0版本,相比目前主流的USB-Type-C-Specification-Release-1.3,1.4版本,2.0版本其实就说细化说明Type-C的功能,define,适用于接口,协议等,就是宣告USB Type C彻底摆脱了和USB的从属关系,自己当家作主了,很大篇幅介绍我强大到可以兼容各种协议和规范,我的USB Type C接口应用非常广泛,可以传输DP,USB,PCIE,音频等信号,已经不是纯粹的用来传输USB信号了,大家要重点关注,接下来我们看看这个版本的规范解读! 相关协议来源 USB官方网站(www.usb.org)上目前可以下载到最新的协议《USB Type-C Specification Release 2.0.pdf》,最新的为2019年8月. 该协议主要内容是:定义USB Type C的插头尺寸规格,PIN脚定义及相关供电,音频传输,插座,和线缆,特别增加说明USB3.0协议和PD协议分工。 最重要的差异,关于充电的细化说明 使用USB Type-C的源(主机或下游集线器端口)可以在vbus上实现更高的源电流,以便能够更快地充电需要比USB3.2规范中指定的更多电流的移动设备或供电设备。所有USB主机和集线器端口都通过CC引脚来设置当前可用的电流水平。 USB PD各个模式供电能力如下表: USB PD(Power Delivery) 如规范通过PD协议可以切换充电的source/sink,可以切换数据的DFP和UFP,也可以切换由谁来提供线缆电压Vconn。 名词解释 在USB2.0端口,USB根据数据传输的方向定义了HOST/Device/OTG三种角色,其中OTG即可作为HOST,也可作为Device,在Type-C中,也有类似的定义。 DFP(Downstream Facing Port):下行端口,可以理解为Host或者是HUB,DFP提供VBUS、VCONN,可以接收数据。在协议规范中DFP特指数据的下行传输,笼统意义上指的是数据下行和对外提供电源的设备。 UFP(Upstream Facing Port):上行端口,可以理解为Device,UFP从VBUS中取电,并可提供数据。典型设备是U盘,移动硬盘。 DRP(Dual Role Port):双角色端口,类似于以前的OTG,DRP既可以做DFP(Host),也可以做UFP(Device),也可以在DFP与UFP间动态切换。典型的DRP设备是笔记本电脑。设备刚连接时作为哪一种角色,由端口的Power Role(参考后面的介绍)决定;后续也可以通过switch过程更改(如果支持USB PD协议的话)。 USB PORT的供电(或者受电)情况,USB Type-C将port划分为Source、Sink。 Source:通过VBUS或者VCONN供电。 Sink:通过VBUS或者VCONN接受供电。 DRP(Dual-Role-Power):既可以作为Source,也可以作为Sink。到底作为Source还是Sink,由设备连接后的配置决定。 Source和Sink的连接过程 Source和Sink的通用USB情况下,配置接口的典型流程如下: 首先,检测端口之间的有效连接(包括确定电缆方向、源/接收器和DFP/UFP关系)。 其次检测电缆的能力。 再次接通USB供电(协商USB电力传输,选择供电模式,电池充电等 接下来是几种角色端口的交互行为之Source 到 Sink: 简单描述一下就是,source和sink通过typec连接后,source通过CC检测到sink的下拉电阻Rd,认为有sink连接,source打开VBUS和VCONN(在另一条CC上),双方建立连接,并且source可以通过调整上拉电阻Rp的大小来控制vRd的电压值,sink通过检测vRd的大小从而得知sink能从vbus上拉多大的电流。 接下来是几种角色端口的交互行为之Source to Sink的连接检测 在未对接时,Source检测到CC管脚都为高电平,Sink端检测到CC管脚都未低电平。对接后,形成分压,电平为中间值。Rp的阻值能表明Source能够提供的功率水平。 接下来是几种角色端口的交互行为之Source 到 DRP DRP在未建立连接前,会不断切换连接上下拉电阻Rp和Rd,source和DRP通过typec连接后,在DRP连接Rd时,source通过CC检测到Rd,之后打开VBUS和VCONN;DRP检测到source的Rp,之后等source打开Vbus后,确认转换为sink,并正式建立连接,除了Source to sink,当Source连接到DRP,DRP端会自适应为Sink端。当Sink连接到DRP,DRP端会自适应为Source端。Source连接到Source,Sink连接到Sink,都是不会成功的 接下来是几种角色端口的交互行为之DRP 到 DRP 此种情况最为复杂,因为DRP也可以分为三种角色,普通DRP,DRP try source,DRP try sink,即有些DRP,在DRP之间的连接中,会有prefer的角色,比如笔记本和手机,肯定都是DRP,但是笔记本可能会设定为try source,因为笔记本毕竟电池容量比较大,如果将笔记本和手机相连,最好还是笔记本作为source给手机充电,而不要反过来,但是笔记本与墙插充电器相连时,笔记本肯定是sink。 在typec spec中,DRP和DRP相连的行为中,提到了3个case,case2和case3就是有一方DRP是try source或try sink的情况,这两种情况比较复杂, 未正式建立连接时,两个DRP都在各自不断切换上下拉电阻,当有一时刻,DRP1是上拉电阻,DRP2是下拉电阻状态,然后接下来就和Source 到 Sink的情况是一样的。因为两个DRP状态是不断切换的,所以连接时刻的DRP各自的状态就决定了连接后的主从关系,当然如果某一时刻两个DRP都是上拉或下拉,那连接行为最终会失败,DRP重新进入不断切换状态等待连接。 那是否会有一种极端情况,两个DRP切换状态太同步了,一直是同上拉,同下拉,那这两个DRP是不是就一直不能连接了,这就涉及到了DRP切换周期的问题,具体看规范的描述说明。 可以看出,SPEC定义了DRP 切换source和sink的一个完整swap周期为tDRP,其中dcSRC.DRP为整个周期中DRP作为source的百分比。SPEC明确说明了,用于控制这个周期和百分比的时钟,不能来自于一个特别准确的时钟源如晶振或陶瓷晶振等,以此来最小化两个DRP在配对过程中出现无限失败的问题。而对于各周期的上下限也非常宽裕,所以实际情况下各DRP的周期会不尽相同,不会出现两个DRP切换周期一直同步而导致的配对过程无限fail的情况,所以结论是,两个DRP连接结果是主从随机的。