手机USB接口DP&DM协议识别信号解析
一、USB 介绍
USB1.0——1996.1 发布,第一次用在计算机上是在 WIN95 上。
USB1.1——1998.9 发布,增加了一个新的传输类型(终端 OUT)。
USB2.0——2000.4 发布,添加了高速模式(HS)。
USB3.0——2008.11 发布,增加了超高速模式,USB 从半双工变成了全双工总线,速率高达 5Gbit/s。
USB3.1——2013.11 发布,Gen2, 通过单 lane,采用 128b/132b 编码,速率最高支持到 10Gbit/s。
USB3.2——2017.9 发布,Gen2*2 Super speed 通过双 lane,采用 128b/132b 编码,可以支持速率高达 20Gbit/s。
以 Type C 座子为例,如下图 3 为 USB3.0 的接口 pin 脚定义。
USB3.2 传输模式有四种,具体如下图 4 所示:
二、USB 的 DP&DM 在连接 SDP,CDP,DCP 时通信波形分析
2.1.1 USB 枚举介绍
进行通信前,Host 需要了解设备,并为其分配相应的驱动。枚举就是互相了解的过程,这个过程包括,确定设备速率,给设备分配地址,从设备读取描术字,分配并加载驱动程序以及选择规定了设备功耗要求和接口的配置信息。枚举过程如下:
1、设备插入主机,此时设备可以从主机获得 100mA 电流。
2、主机集线器开始检测设备,集线器在 D+ 和 D-上有一个 15K 的下拉电阻,集线器会监测 D+ 和 D-线上的电压;低速设备在 D-上有一个 1.5K 上拉(到 3.3V)电阻,而全速和高速设备的上拉电阻在 D+ 上;集线器监测到任何一根线上的电压,就认为设备已连接到主机。
3、主机获悉新设备,主机的集线器得知设备已经插入,向主机上报事件;主机得知事件,给集线器一个 Get Port Status 请求,以了解更多信息。
4、集线器监测设备是 LS 还是 FS;如何区分,请看下面章节。之后集线器发送给你主机信息,然后相应下一个 Get Port Status 请求。
5、集线器复位新设备,主机得知有新设备后,立即发送 Get Port Status 请求,要求集线器复位端口设备,这时 D+ 和 D-都拉低至少 10ms。
6、主机了解全速设备是否支持高速状态,检测设备是否支持高速状态使用两个特殊信号状态。Chirp J 状态只有 D+ 线被驱动,Chirp K 状态只有 D-线被驱动。
复位期间,高速设备会发送 Chirp K 信号。高速集线器检测到该 Chirp K 信号后,会立即响应一串 KJKJKJ….。当设备检测到连续 6 个 KJKJKJ 的样式时,设备移除它的上拉电阻,然后以高速状态执行接下来的通信。如果集线器在收到 K 信号后,没有响应 KJKJKJ,设备得知它连接到了一个全速设备,那就以全速模式通信。
7、集线器在设备和总线建建立一条信号路径。主机发送 Get Port Status 请求证明设备已经摆脱了复位状态。返回数据中的一个数据位将用于标明设备是否处于复位状态。若有必要,主机还会重复此请求直到设备离开复位状态。当集线器的复位信号被移除,设备处于缺省状态(Default state)。设备的 USB 寄存器都处于复位状态。且设备已经准备好响应断电 0 处的控制传输。设备会使用缺省地址 00h 来与主机通信。
8、主机发送 Get Port Status 请求以了解缺省管道的最大信息尺寸。
9、主机指定新的地址。
10、主机通过新地址了继续解设备能力。类似第 8 步,但比第 8 步了解的内容更多。
11、主机制定并加载设备驱动程序。加载 INF 文件。
12、主机的设备驱动程序会选择配置。主机从设备描数字那里了解完设备信息后,发送 Set Configuration 请求某一种配置。设备接到请求,进入相应配置,设备接口就算是使能了。
2.2.1 当手机插入电脑 SDP 口
如下以手机为例讲解 USB 在手机插入电脑 SDP 端口后的 DP&DM 信号波形实测情况,其中阶段(1)是充电器识别过程,阶段(2)是 USB 枚举和通信过程,如图 5。
其实在阶段(1)之前,还有一个阶段,就是 Vbus 电压检测,当手机检测到 Vbus 大于 VOTG_SESS_VLD(一般是 4V)时,认为 Vbus 有效,才会进行下面的阶段。
阶段(1)的放大波形如下,细分为(a)和(b)两个阶段,如图 6.
(a)手机开始做数据线连通性检测(Data contact Detect,DCD),手机在 D+ 上施加一个小电流 IDP_SRC(一般 10uA),因为电脑的 SDP 端口在 D+ 线上有一个下拉电阻 RDP_DOWN(一般 20K),因此 D+ 上会有一个电压,图中阶段(1)电压实测为 200mV,电压小于 VLGC_LWO(0.8V),则认为 USB 的数据 PIN 已经连上。
协议规定:DCD 阶段不是必须的,如果没有做 DCD,阶段(a)将不存在,而是在 Vbus 有效后 900ms,直接开始阶段(b);如果做了 DCD,但 900ms 内检测不到 D+ 电压小于 VLGC_LWO(0.8V),也会强制进入阶段(b)。DCD 的存在只是为了缩短进入阶段(2)的时间。
(b)手机在 D+ 上施加电压 VDP_SRC(一般 0.7V),之后手机检测 D-上的电压,发现 D-电压小于 VDAT_REF(0.4V),此时手机认为自己连接到了一个 SDP。BC1.2 协议中这个过程叫 Primary Detection。PD 最多从 SDP 汲取电流 500mA。SDP 的 D+ 和 D-线,没有短接电阻或者开关,所以 D+ 上的电压传不到 D-上。
[SDP:Standard Downstream Port 标准下行端口,比如电脑的 USB 口,通常充电能力是 0.5A。
CDP:Charging Downstream Port 带较强充电能力的电脑 USB 口,通常充电能力 1.5A。
DCP: Dedicate Charging Port 专用充电口,比如手机充电器。
PD:Portable Device 便携设备,如手机。]
2.2.2 当手机插入电脑 CDP 口
下图 7 是手机插入电脑 CDP 的波形,阶段(1)识别充电器,阶段(2)是 USB 枚举。如同第 2 章,本章节只分析阶段(1)。
阶段(1)有三个小阶段:(a)(b)和(c),前两个阶段与第 2 章的(a)(b)相同。
(a) 手机开始做数据线连通性检测(Data contact Detect,DCD),手机在 D+ 上施加一个小电流 IDP_SRC(一般 10uA),因为电脑的 SDP 端口在 D+ 线上有一个下拉电阻 RDP_DOWN(一般 20K),因此 D+ 上会有一个电压,图中阶段(1)电压实测为 200mV,电压小于 VLGC_LWO(0.8V),则认为 USB 的数据 PIN 已经连上。
协议规定:DCD 阶段不是必须的,如果没有做 DCD,阶段(a)将不存在,而是在 Vbus 有效后 900ms,直接开始阶段(b);如果做了 DCD,但 900ms 内检测不到 D+ 电压小于 VLGC_LWO(0.8V),也会强制进入阶段(b)。DCD 的存在只是为了缩短进入阶段(2)的时间。
(b) 手机在 D+ 上施加电压 VDP_SRC(一般 0.7V),之后手机检测 D-上的电压,发现 D-电压大于 VDAT_REF(0.4V),此时手机认为自己连接到了一个 CDP 或者 DCP。这个过程叫 Primary Detection。
(c) 手机在 D-上施加电压 VDM_SRC(一般 0.7V),之后手机检测 D+ 上的电压,发现 D-电压小于 VDAT_REF(0.4V),此时手机确定自己连接到了一个 CDP。BC1.2 协议中这个过程叫 Secondary Detection。PD 最多从 SDP 汲取电流 1.5A。注意 Primary Detection 是手机的 D+ 发起,Secondary Detection 是手机的 D-发起。
特别注意:电脑的 CDP 端口的 D+D-线内部有一个开关,在(b)阶段是闭合的,连通 D+ 和 D-,所以能看到 D+D-电压几乎同时上升下降。(b)阶段完成后,CDP 立即这个开关断开,进入(c)阶段。
2.2.3 当手机插入专业的 DCP 口。
手机插入充电器口如图 8。
(a)属于 BC1.2 协议规定的识别过程,由于 QC2.0 充电器内部在 USB 插入后,D+ 和 D-通过一个开关短路。我们能看到 Primary Detection 和 Secondary Detection 过程,D+ 和 D-都有 0.7V 脉冲。这时手机认为自己连接到了 DCP。
(b)完成 DCP 检测后,手机开始检测 DCP 是否还支持 QC2.0 协议。手机会在 D+ 上施加 0.7V 电压,并且维持 1.25s,之后充电器断开 D+ 和 D-间的开关。
(c)充电器断开 D+ 和 D-间的开关后,D-电压立马跌落到 0V,并维持一段时间。此时手机知道这个充电器是支持 QC 协议的。
(d)手机按照如下规则,通知充电器,输出对应的电压。这个过程 D+=0.7,D-=3.3。是 continuous mode
(e) D+=0.7,D-=0,对应输出 5V。
(f) D+=3.3,D-=0.7,对应输出 9V。
识别的流程图如下:
三、总结
本文介绍了 USB DP&DM 信号在连接不同端口时的识别流程和波形细节分析,主要包含连接电脑端口,以及充电器端口时的信号。