标签 USB 下的文章

USB-C与PD学习笔记——在新的USB应用中换用Type-C接口

USB 发展概览

USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,目前由USB-IF维护。自1994年问世,大致经历了以下时期:USB1.0(1.5Mb/s ,Low-Speed, 1996.01)、USB1.1(12Mb/s ,Full-Speed, 1998.09)、USB2.0(480Mb/s ,High-Speed, 2000.04)、USB3.0(5.0Gb/s ,Super-Speed, 2008.11,又称USB3.1 Gen1、USB3.2 Gen1)、USB3.1 Gen2(10Gb/s ,Super-Speed+, 2013.12,又称USB3.2 Gen2)、USB3.2 Gen2x2(20Gb/s,Super-Speed++, 2017.09,仅支持Type-C接口)、USB4(包含 USB4® 20Gbps与USB4® 40Gbps并向下兼容前述规范,2019.09)。需要注意的是,雷电接口不属于USB规范,它是英特尔维护的一个接口规范,切莫混淆。

版本 速度 发布年份(参考)
USB1.0 1.5Mb/s ,Low-Speed,低速 1996.01
USB1.1 12Mb/s ,Full-Speed,全速 1998.09
USB2.0 480Mb/s ,High-Speed,高速 2000.04
USB3.0 5.0Gb/s ,Super-Speed 2008.11
USB3.1 Gen2 10Gb/s ,Super-Speed+ 2013.12
USB3.2 Gen2x2 20Gb/s,Super-Speed++ 2017.09
USB4® 20Gbps 20Gbps 2019.09
USB4® 40Gbps 40Gbps 2019.09

USB3时代命名混乱,最初的USB3.0速率为5.0Gb/s,后来USB3.1和3.2发布后,速度使用Gen1、Gen2、Gen2x2来表示。USB4时代USB-IF已经意识到了这个问题,简化USB版本命名。

USB-IF除维护上述的USB数据协议标准之外,他也定义了USB协议所使用的各种接口和电气规范。在USB3.1以及之前,接口与电器规范包含在USB规范中;从USB3.2开始,USB 3.2规范已经不再包含接口和电气规范,转为单独提供。

USB-IF定义了USB的电源规范。从最初的BC1.0(Battery Charging1.0)到提供5V1.5A电流支持的BC1.2。又从PD1.0开始,到广泛使用的PD2.0&3.0,支持最高20V5A的100W供电能力。最新的PD3.1快充标准由USB-IF 于2021年5月发布。由此,基于USB Type-C的电源支持添加了28V、36V、48V档,其分别能够提供140W、180W、240W三档功率;可调电压模式提供了15V到电源适配器最大电压的可调范围,分辨率100mV。在PD协议中,电源的供给方向与USB接口的功能角色通过单独的导线通信进行配置,实现了大量的功能。

笔者最初开始学习USB-PD的目的是为USB2.0设备更换Type-C接口。本学习笔记最初的目标是为电子工程师提供参考,以便快速将Type-C接口应用于电路设计中;后期若有机会深入,可以研究一下快充协议触发。当然笔者才疏学浅,这个目标目前还很遥远。目前我为探索通过Type-C充电时各IO的信号,画了一张板子做测试用,文件已上传GitHub

本文相关的参考文档,如往常一样,我会在文末附加链接。

USB Type-C 接口定义

USB Type-C 母座定义(前视图):

USB Type-C 公头定义(前视图):

如何从C口获得电力

这个标题可能看起来有些无聊,但很多初学者对此并不了解。从传统的几款USB接口中获取电力非常简单,你只需要连接VBUS和GND,即可轻松获得电力。但Type-C 接口并非如此。这时有人会说,我画了张板子,Type-C口只是用来供电,我只连接了VBUS和GND,手机充电器插上,板子就工作了。哪有你说的那么悬?

传统5V取电:

目前市面常见的Android手机已经普遍采用Type-C 接口,但充电线与电源适配器间的连接仍大量使用USB A型接口,而这类充电器并不能代表全部。有一类电源适配器的输出口也是C口,它们应当支持PD快充协议。按PD规范,C口应该支持双向充电,这是两者协商决定的,提供电力的设备被称为Source,而受电的设备被称为Sink。Source端应上拉CC,Sink端应下拉CC,以此完成识别。复杂的快充协商要求两边是IC来执行,而普通的5V设备想做到被其他设备识别,只需要几颗电阻就可以。

所以,如上图所示。如果我们要从C口获取电力,我们需要的便是在受电即Sink端Type-C母口的CC1和CC2分别连接一个下拉电阻即可,一般取值5.1K。为什么要分别连接一颗下拉电阻,而不能直接短接CC1和CC2共用一颗电阻?因为在双头Type-C连接线缆中,CC实际只有一条,另一条将作为VCON,给线缆中的EMark芯片供电。注意,这里的EMark芯片是选配的,USB-IF规定了载流能力超过3A的线缆必须带有EMark芯片。而EMark 芯片会将CC线短接的情况识别为耳机附件模式,最终导致在Source端不能正确识别Sink设备。

按照上面介绍的逻辑,如果我们设计的是Type-C公头取电,比如是一条5V电源转接线。这种情况下我们只需要在CC上设计一个5.1K下拉电阻,VCON悬空即可。毕竟在公头Type-C上,只有一个CC线。另外,如果我们设计的是一个连接到Sink端的Type-C公头,此时我们应该为CC添加上拉电阻,以保证Sink正确识别到插入的是电源。具体的电阻大小与电源供电能力有关,此处不在赘述。

如何实现快充:

目前市面上有大量的快充协议,最广泛的可能要属USB PD 和高通的 QC。前者是在CC线上使用PD协议进行通信,后者是在D+和D-上加载不同电压来协商。学习这些信号的时序、协议需要耗费大量的时间。业界有公司专门为此设计了专用的接口芯片,他们往往提供了多种与单片机通信的方式,使用时无需关注PD协议信号的处理,通过简单的配置即可使用。此类产品如:沁恒CH224。

参考