Type-C PD充电简介

一、Type-C简介

自1998年以来,USB发布至今,USB已经走过20个年头有余了。在这20年间,USB-IF组织发布N种接口状态,包括A口、B口、MINI-A、MINI-B、Micro-A、Micro-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

微信扫描二维码,关注我的公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux字符设备驱动内幕

哈喽,我是老吴,继续记录我的学习心得。一、保持专注的几个技巧将最重要的事放在早上做。待在无干扰环境下,比如图书馆。意识到刚坐下开始投入工作前,有点负面小情绪是特别正常的现象。让“开心一刻”成为计划的一部分。拥有合情合…

线性表的顺序存储

线性表是n个类型相同数据元素的有限序列,对n>0,除第一个元素无直接前驱,最后一个元素没有直接后继外,其他都是每个元素有一个直接前驱和直接后继,而且是一对一的关系。 线性表:顺序存储,链式存储。 &…

mysql 5.6.38 数据库编译安装

一、系统环境: # cat /etc/redhat-release CentOS release 6.9 (Final)二、mysql 编译安装: 1、安装依赖包: yum install -y ncurses-devel libaio-devel cmake2、创建mysql管理用户: useradd -s /sbin/nologin -M mysql id m…

旧地重游

光阴飞逝1991年跟随父母搬迁至长沙,至今已有16年。2007年春节舅妈大寿借此机会回到儿时旧地以了多年来的心愿。经过1个小时左右颠簸终于快回到儿时生长的地方,那里的路面年久失修,经过昨天的大雨,已经坑坑洼洼路面到处积水&#x…

我要不要离职?

1#读者提问来到四线城市的小公司,其他员工都是公司主动找到他们转正的,有的一个月有的三个月,而我半年过去了,以为时间到了也跟他们一样自动帮我转正。然而没有,昨天忍不住问了公司,今天就拿转正表来给我填…

单链表的应用 就地逆置

【问题描述】试实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1,a2,a3....an)逆置为(an...a3,a2,a1). [分析]就地逆置就是不需要额外申请结点空间,只需要利用原来的表中的结点空间。若对顺序表中的…

关于arguments的用法

当函数的参数个数无法确定的时候:用 arguments。函数的 arguments 对象并不是一个数组,它相当于是一个实参的集合,但是访问单个参数的方式与访问数组元素的方式相同。访问 函数中的第n个参数 则可以使用arguments[n-1]。 1、arguments实际为实…

搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

守护进程概念:守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。周期性的执行某种任务或等待处理某些发生的事件。Linux系统有很多守护进程,大多数服务都是用守护进程实现的。比如:像我们的tftp&#xf…

关于编译C#文件

使用csc.exe编译非控制台应用程序,常使用/target选项此选项可简写为/t,用来指定要创建的文件类型. 如编译一个类库文件(dll)Class1.cs: namespaceTest...{ /**//// <summary> /// Class1 的摘要说明。 /// </summary> public class Class1 ...{ …

中缀表达式转换为前缀及后缀表达式并求值【摘】

它们都是对表达式的记法&#xff0c;因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同&#xff1a;前缀表达式的运算符位于与其相关的操作数之前&#xff1b;中缀和后缀同理。举例&#xff1a;(3 4) 5 - 6 就是中缀表达式- 3 4 …

H5-geolocation学习

geolocation——定位PC——IP地址精度比较低IP库Chrome -> Google手机——GPSwindow.navigator.geolocation单次 getCurrentPosition(成功, 失败, 参数)enableHighAccuracy 高精度模式——更慢、更费电timeout 超时maximumAge 缓存时间…

【速来抢】iPhone12、STM32开发板、1024元现金红包…打包免费送!!!

没错&#xff01;华清远见在做1024狂欢节活动今年他们“玩”的有点大参与活动&#xff0c;抽取幸运锦鲤下面21件惊喜大礼&#xff0c;打包全部带回家????参与方式&#xff1a;扫码下方二维码&#xff0c;进活动群获取抽奖链接&#xff0c;参与抽奖????福利2除了万元锦鲤…

什么才是成熟

成熟就是你能控制你自己&#xff0c;知道自己想要什么&#xff0c;并能自如的朝着这个方向走&#xff0c;是你能控制自己的喜怒哀乐&#xff0c;而不是要别人左右你&#xff0c;他的表现应该是这样的 &#xff08;文摘&#xff01;&#xff09; 1.现实态度 一个心理健全的成年人…

1024,第 15 届「中国内核开发者大会」 参会指南(议程全剧透)

各位好&#xff0c;第 15 届「中国内核开发者大会」即将开幕&#xff0c;这些参会指南请提前收藏好&#xff1a;2020「中国内核开发者大会」&#xff08;以下简称 CLK&#xff09;将在 2020 年 10 月 24 日举办&#xff0c;线上线下同步进行&#xff0c;线上由 CSDN 进行全网直…

C语言中的转义字符【转ce123的技术博客】

C语言中的转义字符 简介 在字符集中&#xff0c;有一类字符具有这样的特性&#xff1a;当从键盘上输入这个字符时&#xff0c;显示器上就可以显示这个字符&#xff0c;即输入什么就显示什么。这类字符称为可显示字符&#xff0c;如a、b、c、$、和空格符等都是可显示字符。 另一…

Tomcat配置和Web应用程序开发

引自友人blog: [url]http://blog.csdn.net/senton[/url]◆tomcat是一个专门用于web服务的服务器软件.1&#xff0e;运行 &#xff1a;设置完毕后就可以运行tomcat服务器了&#xff0c;进入tomcat的bin目录&#xff0c;windows下用startup启动tomcat&#xff0c;相应的关闭tomca…

centos关闭防火墙

centos6.5 查看防火墙状态 &#xff1a; service iptable status 临时关闭防火墙 &#xff1a; servcie iptables stop 永久关闭防火墙 &#xff1a;chkconfig iptables off centos7 停止firewall&#xff1a; systemctl stop firewalld.service …

1024对话内核大神谢宝友

我看了CSDN的采访&#xff0c;感觉比较官方&#xff0c;不知道是不是编辑的原因把一些内容给隐藏了&#xff0c;所以我还是想完整的内容放出来给大家看看&#xff0c;这些问题&#xff0c;可能是很多后辈程序员非常关心的。今天是1024节&#xff0c;这个数字对于写在电脑前写代…

转义字符的应用

转义字符的应用 案列1&#xff1a;很多转义字符的作用是专门针对于打印机的,比如\b1、使用“Y”和“-”&#xff1b;2、打印Y&#xff0c;光标在Y后3、退格&#xff0c;这时光标落在Y字符处&#xff0c;由于是打印机&#xff0c;Y还是留了下来&#xff0c;就打出“”。案例2&am…

javascript 里Array的一些方法

1. join()方法&#xff1a;join()方法的用途是连接字符串值&#xff0c;join()方法只有一个参数&#xff0c;即数组项之间使用的字符串如&#xff1a;varaColors ["red","green","blue"];alert(aCloors.join("-"));//output "red…