Type-C PD充电简介

嵌入式Linux

共 2858字,需浏览 6分钟

 · 2020-10-22

一、Type-C简介




1998年以来,USB发布至今,USB已经走过20个年头有余了。在这20年间,USB-IF组织发布N种接口状态,包括A口、B口、MINI-AMINI-BMicro-AMicro-B等等接口形态,由于各家产品不同,不同产品使用不同类型的插座,因此我们也要常备各种不明用途的接口转接线材。

USB协议发布时间节点

对于Type-C,USB标准化组织意识到统一和标准化问题,在定义标准时,做了如下规定:


1、接口形态




支持正反插,同时也规范了对应的线材,接口定义如下:


其中,具备全功能的Type-C应该具备E-Marker功能,由于具备E-Marker,线缆能够被读到其带电流的能力、特性、线材ID等等。E-Marker的供电电源来自于VCONN,线缆会通过下拉的电阻Ra,Source检测到之后会提供VCONN。


2、传输速率

最大传输速度10Gb/s,即是USB 3.1 Gen2标准,也支持4 Lane DP模式,传输高清图像,在供电部分,最大可以支持100W(20V/5A)






3、协商机制

为了能够区分两端USB设备的角色(Host/Device),必须有一套协商机制,便于进行角色确认,这部分通过CC(Configuration Channel)管脚进行设置。后面随着PD规范的面世,CC脚开始被用来做简单的半双工通信,用来完成POWER供给的协商。



二、Type-C Port的Data Role、Power Role




1、Type-C 的 Data Role

(1)DFP(DownstreamFacing Port):
下行端口,可以理解为Host或者是HUB,DFP提供VBUS、VCONN,可以接收数据。在协议规范中DFP特指数据的下行传输,笼统意义上指的是数据下行和对外提供电源的设备。

(2)UFP(Upstream Facing Port):
上行端口,可以理解为Device,UFP从VBUS中取电,并可提供数据。典型设备是U盘,移动硬盘。

(3)DRP(Dual Role Port):
双角色端口,DRP既可以做DFP(Host),也可以做UFP(Device),也可以在DFP与UFP间动态切换。典型的DRP设备是笔记本电脑。设备刚连接时作为哪一种角色,由端口的Power Role决定;后续也可以通过switch过程更改(需支持USB PD协议)。


2、Type-C 的 Power Role

根据USB PORT的供电(或者受电)情况,USB Type-C将port划分为Source、Sink等power角色

如下图显示常用设备的Data Role和Power Role


Power Role 详细可以分为:
a)Source Only 
b)默认Source,但是能够通过PD SWAP切换为SINK模式
c)Sink Only
d)默认SINK,但是能够通过PD SWAP切换为Source模式
e)Source/SINK 轮换
f)Sourcing Device(能供电的Device,如显示器)
g)Sinking Host(吃电的Host,如笔记本电脑)

USBType-C的插座中有两个CC脚,角色检测就是通过CC脚进行的,但是对于插头、或者线缆正常只有一个CC引脚,两个端口连接在一起之后,只存在一个CC引脚连接,通过检测哪一个CC有连接,就可以判断连接的方向。如果USB线缆中有需供电的器件,其中一个CC引脚将作为VCONN供电。
CC引脚有如下作用:
a)检测USB Type-C端口的插入,如Source接入到Sink
b)用于判断插入方向
c)在两个连接的Port之间,建立对应的Data Role
d)配置VBUS,通过下拉电阻判断规格,在PD协商中使用,为半双工模式
e)配置VCONN
f)检测还有配置其他可选的配置模式,如耳机或者其他模式


3、连接方向、Data Role、PowerRole角色检测

SourceSink Connection


Source端CC引脚为上拉,Sink端CC引脚为下拉。握手过程为接入后检测到有效连接(即一端为Host一端为Device),随后检测线材供电能力,再进行USB枚举。

a)SINK的两个CC引脚均通道Rd下拉到GND
b)SINK通过检测VBUS,来判断Source的连接与否
c)SINK通过CC引脚上拉的特性,来检测目前的USB通信链路(翻转)
d)SINK可选地去检测Rp的值,去判断Source可提供的电流。同时管理自身的功耗,保证不超过Source提供的最大范围
e)同样的,如果支持高级功能,通过CC引脚进行通信。



三、PD充电通信过程




PD协议是Power Delivery,简单来说是一种快速充电标准。
包含PD协议的Type-C 系统从Source到SINK的系统框图大致如下:


在Source的内部包含了一个电压转换器,且受到PD控制器控制,他会根据输入电压的条件以及最高可输出规格需求,此电压转换器可以是BUCK、Boost、Buck-Boost或者反激转换器。整个通信过程都在PD控制器的管控之下,USB PD还有一个开关,用于切换VCONN电源(电缆包含电子标签时用到)。

当电缆接通之后,PD协议的SOP通信就开始在CC线上进行,以此来选择电源传输的规格,此部分由Sink端向Source端询问能够提供的电源配置参数(5V/9V/12V/15V/20V)。

如下波形为SINK 控制器申请一个9V电压输出的例子。



1、充电器在连接建立后,会通过CC线进行广播,告诉连接的另外一方,充电器能够提供多少种电压以及对应的电流;

2、手机侧USB PD 设备策略管理器(policy_engine.c)监控CC上是否耦合了BMC信号,并且解码消息得出是SourceCapabilities消息,就根据USB PD规范解析该消息得出USB PD充电器所支持的所有电压和电流列表对;

3、手机根据充电的配置从SourceCapabilitie消息中选择一个电压和电流对,向适配器发送请求数据包,将电压和电流对加在Request消息的payload上,然后PD phy将BMC 信号耦合到CC上;

4、充电器解码BMC信号并发出Accept消息给手机,同时调整Power Supply的直流电  压和电流输出;

5、手机收到Accept消息,调整Charger IC的充电电压和电流;

6、手机在充电过程中可以动态发送Request消息来请求充电器改变输出电压和电流,从而实现快速充电的过程。



#推荐阅读:
    专辑|Linux文章汇总
    专辑|程序人生
    专辑|C语言


嵌入式Linux
微信扫描二维码,关注我的公众号 
浏览 53
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报