本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

探索CC

发布时间:2022-07-21
分享到:

探索CC

发布时间:2022-07-21
分享到:

CC 的功能
1.  检测 USB 端口之间的连接。
2.  检测电缆的方向和扭转状况,安排数据总线的路由。
3.  设定两个连接起来的端口的数据角色。
4.  发现并配置 VBUS:USB-C 的电流模式或使用 PD 协议。
5.  配置 VCONN。
6.  发现并配置可选的替代模式和配件模式。

前一篇文章通过深入 TCPCI 规范的方式介绍了 TCPC,它就位于 TCPM 和 USB-C 型连接器之间,其与 USB 接口的连接就是两条线 — CC1 和 CC2,它们会出现在各种 TCPC 芯片的引脚上和电路图上,但在完成了与电缆和设备间的连接时就变成了 CC 和 VCONN,一个是用来完成配置和通讯功能的,一个是用来给电缆里的有源电路供电的。其实这段话说起来就有点复杂,现在我们就通过深入 USB-C 规范的方式来加深对相关内容的理解。

从电源的角度来看,TCPC 出现在 USB 上可以有三种角色类型:Source(供电端)、Sink(用电端)和 DRP(双重角色,或为供电端,或为用电端,可根据需要随时变换)。

Source 的内部结构是这样的:

Sink 的内部结构是这样的:

Source 作为供电端,其输出的 VBUS 是可控的,所以内部包含一个 MOSFET 开关做输出控制,仅在需要时才会被打开送出电源。这个开关在早期的时候都用 P-MOSFET 来实现,后来改用 N-MOSFET,相应地就会在驱动它的地方使用电荷泵电路,再进一步就把这部分电路都集成进 IC 里了,下图就是可同时支持 PD/UFCS/私家协议的开关电源次级侧反馈控制芯片 RT7206KLA 的做法,几乎所有可见的东西都已经集成化了,露出芯片外的只有输入输出端子,使用起来是非常简单的。

两个端口都有 CC1 和 CC2 两个端子,Source 端的 CC1 和 CC2 都用电阻 Rp 连接到电源供应端(图中显示的是 5V 电源,但实际上也可以是其它电压源如 3.3V),Sink 的 CC1 和 CC2 都通过电阻 Rd 与地连接,这样一来这两个端口的空载特性马上就表现出来了,即在没有任何连接的时候去测量两个端口上的 CC1 和 CC2 的电压,Source 端的就是 5V(假如其供电就如图示是 5V 的话),Sink 端的就是 0V。
标准的 USB-C 型插座的端子布置如下图所示:

Source 和 Sink 内部的 CC1 和 CC2 就与其中的 A5 和 B5 连接在一起,而 USB-C 型电缆的插头引脚布置如下图所示:

把它左右颠倒一下就知道它和插座连接的时候各引脚是如何对应的了,此时插座的 CC1 到了插头上连接的是 CC,插座的 CC2 到了插头上变成了 VCONN,但是由于这个插头是没有方向性的,你再把它旋转 180 度也是同样可以插入的,这时候的连接关系就发生了变化,前述的 CC1 和 CC2 就要对换一下位置,相应的数据线连接也发生了变化。而在电缆内部呢,两端插头上的 CC 是连接在一起的,VCONN 则用于为电缆内部的电子电路供电,我们拿电子标签 IC RT1731 的应用电路图来看一看就可以了解这一点:

图中示范了两种电缆使用电子标签的情况,第一种只使用了一个电子标签,两个插头都把 VCONN 连接到了电子标签上,而电子标签只可能放在靠近一个插头的地方,另一端就需要引线过来,所以用线比较多。第二种电缆在靠近两个插头的地方都放置了电子标签,VCONN 线就不用拉得太长了,而工作的时候又只有 Source 端会给 VCONN 供电,所以总有一个标签处于闲置状态,看起来好像也有浪费之嫌。
深入电子标签 RT1731 的内部框图去看一看,我们能看到它有两个 VCONN 连接端子,它们都能实现给器件供电的任务,但相互之间是隔离的:

所以无论哪种使用方式都能看到电缆两端的 VCONN 是没有连接在一起的。从这个电路里我们又看到了一个接地电阻 RA,它在 USB-C 规范里被称为 Ra,阻值范围为 800Ω~1200Ω,它存在的目的是用来标示电缆的出现,但其作用在VCONN 供电正常以后就会消失或是减弱。

到现在为止,我们看到了三个电阻 Rp、Rd 和 Ra,它们只有在 Source、Sink 经由电缆连接起来的时候才会同时出现在一个电路中:

很显然,当这个连接一旦形成,上图中四个箭头所指的地方的电压就不再与悬空时的电压相同了,这个事件的发生就可以告诉 Source 和 Sink,一次 USB 设备间的连接已经形成,我们需要对这些地方的电压进行检测以确定连接是否正确。如图中所示,Sink端还用这个状态来确定连接的方向,但实际上 Source 端也需要做同样的动作,只是规范里是以另外的形式来表达的,我们以后再来谈这个问题。

为什么我会想到需要确定连接是否正确?有的问题确实是过去不曾遇到的。早期的 USB 电缆的两端其实都是不一样的,连接下行接口的一侧通常都是 USB-A 型接口,连接上行接口的一侧则变化多端,有的是 Micro-B,有的是 Mini-AB,……,还有后来的两组插头组合而成的插头,虽然我自己还在使用却叫不出来的类型,它们的问题就是互不兼容,而且每一个都是有方向性的,有时为了插进插座去要费很大的劲,要想在黑暗中完成操作几乎就是不可能的事情,但最新的 USB-C 却把这些问题都避免了,电缆的两端完全相同,也没有正反之别,怎样都能插进去,而且在 Source 和 Sink 上的插座也没有任何区别,所以你也可以把两个 Source 或两个 Sink 连接起来,只不过这是一个无意义的连接,它们之间根本无法适配。

当两个 Source 被连接起来的时候,会不会发生两个不同电压的电源通过 VBUS 被连接起来?不会的,因为前面的 Source 结构图上已经可以看到 VBUS 输出是受控的,只有连接正确以后该开关才会打开,打开以后 VBUS 上才会有正常的 5V 输出,而需要其他的电压则只有 PD 协议开始运作以后才会发生。两个 Sink 的连接就更没有这样的问题了,它们都是 VBUS 的使用者,不会有非零的电压输出的。

我们知道 USB-C 型接口容许的电流输出有几种规格,一种是所谓的标准接口,就是符合 USB2.0 或 USB3.1 的 500mA 或 900mA,一种是 1.5A,还有一种是 3A。一个 Source 要表示它的这种供电能力时就去选择一个合适的 Rp 电阻值,然后 Rd 的阻值又是固定不变的 5.1kΩ,这样的结果就是在 CC 线上表现出不同的电压,Sink 端看到不同的电压时就知道自己能够吸取的电流是多少,然后再控制自己的电流吸取能力,这样就能不超出 Source 的供电能力了。

Source 内部给 Rp 起上拉作用的电源电压可能是不同的,有的是 5V,有的是 3.3V,为了都能够正确地表达自己的供电能力,相应的 Rp 电阻值也就是不一样的,下表列出了相关的数据:

上表右侧第一列给出的是 Rp 上拉电压为 3.3V 时为表达标准输出能力、1.5A 和 3.0A 使用的 Rp 电阻值分别为 36kΩ、12kΩ 和 4.7kΩ,右侧第二列给出的是 5V 时的上拉电阻值。表中左侧第二列给出来的是另外一种表达方式——电流源,它的电路模型是这样的:

该电流源的输出电压容许范围为 1.7V~5.5V,其 80/180/330μA 的电流输出自然就会在 Sink 端的 Rd 上形成一个压差,只需检测上图箭头所指处的电压就知道 Source 的供电能力了。
而一个 Source 端的 TCPC 要表达这一点,控制它的 TCPM 只需要在其地址为 0x1A 的内部寄存器里写入数据就可以实现了。

这个就是 RT1718S 产品规格书里给出来的这个寄存器的定义,其中的 5:4 两个位的不同组合分别表达了能够提供的电流大小,与之对应的就是从 CC 端流出的电流的大小,其参数又表现在规格书的参数表格里:

其实在设置上述寄存器的时候还需要选择是对 CC1 还是 CC2 进行 Rp 的设定,这涉及到的是要如何确认哪条线被作为 CC 线来使用的问题。出于篇幅的限制,本文就到这里结束,我们下次再继续聊。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论