USB Type C规范详解

USB Type C规范详解
目前USB Type C接口应用非常广泛,可以传输DP,USB,PCIE,音频等信号,已经不是纯粹的用来传输USB信号了,即USB Type C摆脱了和USB的从属关系,自己当家作主了。下面来介绍下USB Type C里面比较重要的点。

 

协议来源
USB官方网站上可以下载到最新的协议《USB Type-C Specification Release 1.4.pdf》,最新的为2019年4月3日。文末也会共享出来。
该协议主要内容是:定义USB Type C的插头,插座,和线缆
USB Type-C的Vbus的电流的检测与使用
使用USB Type-C的源(主机或下游集线器端口)可以在vbus上实现更高的源电流,以便能够更快地充电需要比USB3.2规范中指定的更多电流的移动设备或供电设备。所有USB主机和集线器端口都通过CC引脚来设置当前可用的电流水平。
USB PD各个模式供电能力如下表:

 

USB Type-C接口
 
Type-c接口有公头和母座,如下图:
 
 
 

Power有关的信号     
VBUS,USB线缆的bus power(和我们通常意义上VBUS保持一致),电源和GND都有4根线,这就是为什么能支持到100W的原因。      
 VCONN(只有在插头上才会有该信号),当线缆里有芯片的时候,用来给线缆里的芯片供电(3.3V或5V)。      
USB 2.0数据线,D+/D-。它们在插头端只有一对,和旧的USB 2.0规范一致。但为了支持正反随意插。在插座端定义了两组,这样插座端可以根据实际情况进行合适的mapping。 
USB3.1/USB3.2数据线,TX+/-和RX+/-,用于高速的数据传输。插头和插座端都有两组,用于支持正反随意插。 
Configuration的信号,对插头来说,只有一个CC,另外一个伪VCONN,对插座来说,有两个CC1和CC2。
SUB信号,用于USB拓展功能,可用于模拟音频。

 

USB Type-C电缆
如下表,USB2.0规范的电缆长度小于4米,USB3.2 Gen1的长度小于2米,USB3.2Gen2的电缆长度小于1米。
 
全功能USB Type-C电缆信号说明
 
 
上图是标准的USB Type-C的电缆,高速信号差分对SDP都采用同轴线,信号地回流是通过屏蔽GND。

USB2.0/USB3.1/USB3.2线缆说明
如下图,如果type-c线缆仅仅用作USB功能,那么其实有很多信号线是不需要的,只需要以下信号即可(USB3.2 Gen2x2除外)。USB2.0需要更少的线,其5-10信号是不需要的。
 
线缆的粗细线号
规范不指定金属丝规。更粗的线造成较少的损失,但代价是电缆直径和灵活性。多根电线可用于一条单线,如Vbus或地。建议使用最小的线号,以满足电缆组装、电气和机械的要求。为了最大限度地提高电缆的灵活性,电缆的外径应该尽可能的减小。一个典型的USB全功能型Type-C型电缆外径可从4mm至6mm,而一个典型的USB2.0型Type-C电缆外径可从2mm至4mm。一个典型的USB Type-C的USB3.1电缆外径可以从3mm到5mm。
线号参考如下表:
 
阻抗控制
SDP屏蔽差分线的阻抗控制在90Ω±5Ω,单端同轴线控制在45Ω±3Ω。阻抗应该用200 ps(10%-90%)的上升时间来评估。
电源VBUS和GND
如下图,电源的压降要小于500mV,Gnd上面的压降要小于250mV

配置通道(CC)详解
配置通道CC的用途如下:
检测USB设备是否接入;
检测USB插入方向,并以此建立USB 数据通道的路由;
插入后帮助建立USB设备角色(谁为HOST,谁为Device);
发现并配置VUBS,配置USB PD供电模式;
配置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电力传输,选择供电模式,电池充电等)。
最后进行USB枚举。
Source to Sink的连接检测
如下图,Source端是上拉电阻,Rp,Sink端接下拉电阻Rd

在未对接时,Source检测到CC管脚都为高电平,Sink端检测到CC管脚都未低电平。对接后,形成分压,电平为中间值。Rp的阻值能表明Source能够提供的功率水平。
源端CC1,CC2模型
 
如上图
Source端使用一个MOS管去控制Vbus,初始状态下,FET为关闭状态,Vbus不通。
Source端CC1/CC2均上拉至高电平,同时检测是否有Sink插入,当不论哪一个管脚检测到有Rd下拉电阻时,说明Sink被检测到。Rp的阻值表明Host能够提供的功率水平。
Source端根据Cable中哪一个CC引脚为Rd下拉,去建立正确的USB高速数据路由,同时决定另外一个CC引脚提供VCONN
当检查到Sink接入后,Source使能Vbus和Vconn。
Source可以动态调整Rp的值,告知Sink端的电流提供能力发生变化,告知SINK最大可以使用的电流
 Source会持续检测Rd,检测到拔出事件后会断开连接,Vbus和Vconn都会断开。
如果Source支持高级功能(PD或者Alternate Mode),会通过USB PD协议进行沟通实现。
Sink端CC1,CC2模型
 
如上图
SINK的两个CC引脚均通道Rd下拉到GND。
SINK通过检测电源VBUS是否存在,来判断Source的连接与否。
SINK通过CC引脚上拉的特性,来检测目前的USB高速数据链路。
SINK可选地去检测Rp的值,去判断Source可提供的电流。同时管理自身的功耗,保证不超过Source提供的最大范围。
同样的,如果支持高级功能,通过CC引脚进行USB PD协议进行沟通实现。
DRP的CC1,CC2模型
 
DRP模式(双向供电)如上图:
DRP使用MOS管来启用/禁用Vbus的电源传递,并且在开始时禁用Vbus。
DRP使用开关来决定自身是Source端还是Sink端。
DRP在Source和Sink之间的切换:在建立特定的稳定状态之前,DRP在将自己在Source和Sink之间交替进行,根据协议最终会确认是Source还是Sink。当DRP最终确定为Source端时,它遵循Source端操作协议来检测Sink端是否接入。如果检测到Sink端,则提供Vbus、Vconn,并继续作为Source运行。反之,当DRP最终确定为Sink端时,它监视Vbus以检测它是否连接到一个Source,如果检测到连接到Source,它将继续作为Sink运行。
Source to  Sink工作过程
 
工作过程如上图:
刚开始Source和Sink均处于未连接状态;
Source和Sink物理连接后,Source探测到CC的下拉电阻Rd信号,打开电源Vbus和Vconn;
然后Sink端会探测到Vbus,进入到连接状态。
当Source和Sink处于持续状态,Source会根据需要改变Rp来设置最大电流输出能力。Sink会检测Rd上面的电压来获取能从Vbus上获得的最大电流值。Source会监测CC管脚来判定Sink是否被移出。Sink会监测Vbus是否存在来判定是否和Source断开。
电流能力与Rd上电压vRd的关系如下表:
 
USB供电能力有三种,USB2.0,USB3.2单通道,USB3.2双通道
 
除了Source to sink,当Source连接到DRP,DRP端会自适应为Sink端。
当Sink连接到DRP,DRP端会自适应为Source端。
Source连接到Source,Sink连接到Sink,都是不会成功的。
USB Power Delivery
USB Power Delivery电力传输是Type-C接口的特征之一。当需要USB PD电力传输时,使用Bi-phase Mark Coded(BMC)编码协议,通过CC管脚进行通信。
CC的通信图如下:
 
CC上面的BMC信号如下图:

供电和充电
任何USB Type-c端口提供超过默认电流和/或支持USBPower Delivery传送应满足要求,就像它是一个充电器。
电源(如电池充电器、集线器、下游端口和主机)均可用于电池充电。充电器使用USB Type-C接口或USB Type-C电缆实现时,应遵循以下要求:
电源应使用USB Type-C current方法公开其功率能力,并可额外支持其他USB标准(USB BC 1.2或USB PD)
如果电源能够提供大于默认的VBUS的电压,则应完全符合USB PD规范,并应仅使用USB PD协商其电源供电。
如果电源能够提供大于3.0A的电流,则应使用US PD规范来确定电缆的载流能力。
Type  C接口的充电器,只有当它检测到一个接收器被连接时,才能将电源VBUS接通,并且当它检测到Sink端被分离时,应该从VBUS上移除电源。


电子标记的线缆
所有USB全功能Type-C型电缆应电子标记。 eMarker是电子标记电缆中的元素,该电缆响应USB PD发出的标识命令返回有关电缆的信息(如电缆的电流承载能力、性能、厂商标识,支持的sstx/ssrx通道数等)。
电子标记的电缆本身用电一般来自于Vconn,Vbus也有可能被用到。
 
一种典型的电子标记电缆如上图。隔离元件(Iso)应防止Vconn通过电缆的端到端Ra电阻的作用是高速Source端,本电缆需要用到Vconn。


VPAs和VPDs
VPAs:VCONN-Powered Accessories--Vconn驱动的附件
VPDs:VCONN-Powered USB Devices--Vconn驱动的USB设备
VPAs和VPDs都是直接连接的sink,只需Vconn即可操作。两者都在Vconn上接有电阻Ra,在CC上接有电阻Rd。通过判断Vconn是否被移除,并以此来判断设备是否断开连接(在Vbus没有的时候)。
如果VCONN供电配件希望提供充电功能,则必须通过在主机和充电端口上独立协商电压和电流来实现,并且可能在将Source端电压传输到Sink之前重新调节电压。 Sink能够获取VPAs通告给它的可承载电流。

 

电阻值设置
各电流值对应的Rp的值如下表:
 
Rp都是5.1K电阻下地,电源供电能力的检测与否与电阻精度相关
 
Ra的值的大小范围为:800Ω-1.2K
 

相关电压范围
在Sink与Source连接后,因为Rp与Rd分压的原因,Sink端的CC的电压范围如下表:
 

功能扩展
USB Type-C的牛逼之处就在于其功能扩展,即它不仅仅在只是用来传输USB信号了,可以拓展用于其它功能。
USB Type-C协议里面,拓展功能称之为Alternate Mode,如何进入Alternate Mode呢。有很多种功能,比如4 lane DP,DP 2lane+USB3.0,自然得在一开始就通过协议来沟通告知进入哪一种模式。
那么是如何沟通的呢?还是通过CC管脚,通过PD协议来完成。

模拟音频模式
3.5mm音频接口可以转Type-C端口,USB2.0数据通道传输模拟音频信号,音频右声道接DP,音频左通道接DN,MIC信号则连接在SBU引脚上,在这个模式当中,电源可以提供到500mA电流。
如何工作在音频模式呢?
通过将CC引脚和VCON短接接,并且下拉电阻小于Ra/2(根据上文,Ra最小为800Ω,则小于400ohm),或者分别对地,下拉电阻小于Ra(小于800ohm),则Host会识别为音频模式。
 
 

扫描下方二维码,回复“USB”,可获得官方协议原文件。
获得硬件资料,欢迎关注微信公众号:硬件工程师炼成之路。

 
 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
USB转网口驱动是一种用于将USB接口转换为网口的驱动程序。它可以使得计算机通过USB接口连接到以太网,实现网络通信功能。 USB转网口驱动的详解如下: 首先,USB转网口驱动需要通过软件程序来实现系统对USB转网口设备的识别和控制。这些软件程序通常由设备制造商提供,需要在计算机上安装和配置。安装驱动程序后,计算机操作系统能够识别并与USB转网口设备进行通信。 其次,USB转网口驱动通过将USB接口转换为以太网接口,使得计算机可以连接到局域网或互联网。通过该驱动,计算机可以使用以太网协议进行数据传输,实现与其他计算机或网络设备的通信。 此外,USB转网口驱动还支持常见的网络协议,如TCP/IP协议。它能够实现计算机的IP地址分配、数据包的封装与解封装等功能,使得计算机可以正常地进行网络通信。 最后,USB转网口驱动还具备一些特殊功能,如QoS(Quality of Service)和流量控制等。QoS功能可以根据不同应用程序或数据流的特点,对网络资源进行优先级分配,提高网络传输效率。而流量控制功能可以限制数据传输速率,避免网络拥塞和数据丢失。 总结起来,USB转网口驱动是一种重要的软件程序,它将USB接口转换为以太网接口,实现计算机的网络通信功能。通过安装和配置驱动程序,计算机能够识别USB转网口设备,并与其他计算机或网络设备进行正常的通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值