USB Type-C Configuration Channel (CC) 功能分析
架构总览
从Type-C开始,USB扩充了其通讯信号,增加了CC1/CC2和SBU1/SBU2,其中CC1/2作为configuration channel,在USB Type-C的各种模式-Normal,PD,ALT,Accessory-中都发挥相当重要的作用;而SBU,主要是为USB 4.0设计,并且在ALT、Accessory模式也有其作用。这篇文档就具体分析CC在不同使用场景或者阶段下的作用和功能。
根据Type-C Spec R2.0 Chap 4.5,CC主要有以下功能:
- 插入检测
- 识别电缆方向
- 在两个端口间协商建立DFP和UFP身份
- 发现和配置VBUS,电流模式或者PD模式
- 配置Vconn
- 发现和配置其他外设模式-替代(alt)和外设(accessory)模式
插入检测
DPF(下行端口)为主机端口,UFP(上行端口)为设备端口,USB Type-C也开始引入powered cable,cable可能也需要单独供电。
一种经典连接如下;
Role | Method |
---|---|
DPF, source | Pull up with Rp, or with current source |
Cable | Pull down with Ra |
UFP, sink | Pull down with Rd |
在DFP上有两个CC引脚,DFP通过检测三种不同形式的UFP端下拉电阻(Open开路、Ra=0.8-1.2K、Rd=5.1K)来识别各种配置模式。
具体CC1/2上检测到不同下拉组合的配置如下:
识别电缆方向
USB Type-C连接器没有方向要求,可以支持正插和反插,但对于设计者,则需要识别电缆的方向,来建立正确的信号连接。并且对于USB 3.2 Gen2x2及USB 4.0 Gen1x2,也需要识别两组差分对中哪一组作为LANE1,因此电缆识别对于USB Type-C是必须要做的一项工作。
在不同的DFP和UFP配置下,这种识别的组合也相当多,但根本上是匹配当前侧CC pin的属性,有没有下拉电阻,下拉电阻阻值多少来实现的。
在两个端口间协商建立DFP和UFP身份
在Type-C中,定义了三种身份,DFP,UFP,DRP。
DFP是下行端口,位于主机(HOST)侧;UFP是上行端口,位于设备(DEVICE)侧;DRP全称Dual-Role-Port,是指这个设备既支持DFP又支持UFP。
这三种身份的设备互相连接的结果如下表:
不同于USB2.0,HOST端不应该默认向VBUS和Vconn提供电压,因为用户可能连接两个HOST在一起,上表中Non-functional的意思就是这种情况下双方都不启动功能。
值得一提的是,因为上面三种功能,CC在芯片内部的连接关系是不断变化的,举个栗子,对于source端,在插入检测和识别阶段,是通过Rp上拉的,但在建立身份后,不传输信号侧的CC可能会用来为cable供电,而切换到Vconn。因此在这个过程中随着CC的功能变化,芯片内部也会做出各种相应的调整来满足功能的要求。
再来看下DRP的配置电路示意图:
通过两个单刀双掷开关的切换,CC可以连接到Rp,Rd,Vconn或者对外输出Vconn,这样就满足自己进行DFP或者UFP的切换。
发现和配置VBUS,电流模式或者PD模式
USB从引入Type-C,再到引入PD(power delivery)之后,供电就变得不好解释了,基本可以分为两大类,USB框架下电压一直是5V,电流随着不同代际上升;PD框架下则是电压电流都在不断升高。各家公司的私有协议就更多了,不在本文讨论之内。
不同的情况下Vbus的电平和电流能力如下表:(PD协议已经超过20V和5A)
这些识别在Type-C框架内,都是通过CC引脚来互相传递各自属性,并且通过可选的通信方式来确定输出输入功率的。
Type-C有 1.5A 和 3A 两种电流模式,取决于DFP的输出能力。DFP通过CC引脚上的电压告知UFP供电能力。UFP端的下拉电阻Rd=5.1K,DFP就可以通过其上拉电阻或者电流源在CC引脚上产生电压。
Type-C给出了不同输出模式下上拉电阻或电流源的规格:
举例来说,当DFP给CC引脚提供330uA的电流时,CC引脚上电压则为330uA * 5.1kOhms = 1.683V。根据下表,DFP则被识别为vRd-3.0标准。当DFP用10k电阻把CC引脚上拉至4.75~5.5V时,CC引脚上的电压则为1.688V,DFP也会被识别为vRd-3.0标准。
举例来说,当DFP给CC引脚提供330uA的电流时,CC引脚上电压则为330uA * 5.1kOhms = 1.683V。根据下表,DFP则被识别为vRd-3.0标准。当DFP用10k电阻把CC引脚上拉至4.75~5.5V时,CC引脚上的电压则为1.688V,DFP也会被识别为vRd-3.0标准。
当处于PD模式的时候,PD controller通过CC引脚发送接收PD协议。
配置VCONN
在上文提过,当一个CC引脚作为识别的时候,另一个CC引脚可以作为Vconn来为cable提供能量,
当DFP检测到下拉电阻为Ra=800 ~ 1200Ohms时,这个CC引脚将切换至VCONN对外输出4.75 ~ 5.5V,功率最大1W。
配置使用其他外设模式
Type-C规范定义了替代(Alt)模式与外设(Accessory)模式。如何识别在上文插入检测中有简单介绍。
对于Type-C,面对不同的模式,引脚功能也会做相应变化,具体需要参考协议附录。
主机、设备与线缆可以发送格式化的厂商自定义信息(VDM)来交换信息和发现USB ID。当主机通过VDM与设备交换信息厚进入 Alt 模式后,Type-C接口中的引脚定义将会改变以支持PCIe或者DisplayPort。下面的例子是一个Type-C扩展坞,它使用MUX切换PCIe或USB 3.1信号通至Type-C端口。
设计要点
防短路,目前的VBUS已经高达28V,并且下一代会到40V,Type C引脚分布决定了VBUS旁的信号都需要防护VBUS意外短路的情况,因此CC引脚也就需要串联buffer或者并联二极管进行保护。
高速信号处理,虽然这篇文章都是在讨论CC,但USB的data rate也已悄然买入20Gbps,信号完整性也变成了一个挑战,re-timer的使用也变成了一个习以为常的操作,在这种情况下信号的连接的布局分析也变得更加重要。
总结
USB Type-C早已脱离了USB 2.0时代的easy to use & easy to design,对于用户也要区分自己的设备和充电器,对于设计更是极大的挑战,但随着技术的不断扩充,设计难度未来还会进一步提升——拓扑复杂度和信号完整性问题。
这篇文章只是从硬件和协议的角度分析CC引脚的功能,相当于只进行了设备插入这一步,都还没有进行枚举分析,有机会再详细了解下USB的枚举过程吧。
参考文档
- USB Type-C Configuration Channel (CC)引脚功能介绍andylauren的博客-CSDN博客typec的cc引脚下拉电阻
- Universal Serial Bus Type-C Cable and Connector Specification