PD协议_什么是PD协议快充

PD协议_什么是PD协议快充标题:PD协议什么是USBPD协议?USBPD(PowerDeliver)协议是USBIF协会制定的USB充电标准与技术,是目前主流的快充协议之一,其最大供电能力可达100W,被应用在各种设备的电源上。USBPD协议利用USBType-C接口的CC(Configurationchannel)引脚作为数据传输通道来协商充电的电压、电流和功率传输方向,在介绍USBPD协议的具体内容之前,先简单介绍一下其依赖的USBType-C接口。如上图所示,Type-C接口可以完全替代Type-A、T

什么是USBPD协议?
USB PD(Power Deliver)协议是USB IF协会制定的USB充电标准与技术,是目前主流的快充协议之一,其最大供电能力可达100W,被应用在各种设备的电源上。USB PD协议利用USB Type-C接口的CC(Configuration channel)引脚作为数据传输通道来协商充电的电压、电流和功率传输方向,在介绍USB PD协议的具体内容之前,先简单介绍一下其依赖的USB Type-C接口。
在这里插入图片描述

如上图所示,Type-C接口可以完全替代Type-A、Type-B、Micro AB等各种USB接口,实现数据传输、电力传输。USB PD协议就是基于Type-C接口的强大功能实现的。Type-C接口的引脚示意图如下所示,VBUS为总线电源,D+、D-为USB2.0的差分信号线,TX+、TX-、RX+、RX-为SuperSpeed差分信号,SBU(Sideband Use)为旁路使用,CC为配置通道。Type-C接口最大功率传输可达100W(20V/5A),最大数据传输速率为10Gbps。可以看到,在公头上只有一个CC引脚,母头上的CC引脚是对称的,所以也可以利用CC引脚判断正反插。
在这里插入图片描述
USB PD协议的工作原理是利用Type-C接口的CC线作为数据线来协商电压、电流以及供电方向,整个通信过程需要按照特定的数据包格式,并且存在相互认证的过程。下面先介绍一些USB PD中常见的名词,这些名词在后面也会用到。

Source:通常指电源提供端,如电源适配器。
Sink:通常指电源消耗端,如手机、平板。
E-Marker(electronic marker):电子标记,一般存在于Type-c to Type-c的线缆中。
CC(Configuration Channel) :配置通道,用于识别、控制等。
BMC(Biphase Mark Coding):双相位标识编码,通过CC通信。
DFP(Downstream Facing Port):下行端口,即为HOST或者HU B下行端口。
UFP(Upstream Facing Port):上行端口,即为Device或者HUB的上行端口。
DRD (Dual-Role Data):能作为DFP/UFP。
DRP (Dual-Role Power):能做为Sink/Sour ce。
SOP(Start of Packet Sequences):所有的PD传输流程,都是以SOP开始,SOP代表SOP,SOP’,SOP’’。
EOP (End of Packet):数据包结束标志。
USB PD协议通过特定格式的数据包进行通信,数据包的格式如下所示。
在这里插入图片描述
一个完整的USB PD数据包由前导码(Preamble),使用场景码(SOP
),功能码(MessageHeader),数据码(Byte0-n)、校验码(CRC)以及结束码(EOP)组成,如果数据部分为空,说明数据包仅作为控制指令使用,称为控制消息。有数据内容的称为数据消息,通常数据消息里包含了要变化的电压值和电流值等信息。整个USB PD数据包中,除了前导码不需要进行4b5b编码外,数据包的其他部分均需要进行4b5b编码,指定数据经过4b5b编码后,数据包中所有数据都需要使用BMC编码之后才能通过CC发送。4b5b编码和BMC编码会在下一章节详细介绍。
前导码(Preamble)

前导码(Preamble)是为了锁定接收端,预示发送端将要有数据到达,前导码由64位交替的‘0’和‘1’组成,以’0’开始,以’1’结束。

使用场景码(SOP*)

所有的USB PD传输流程,都是以SOP开始,SOP代表SOP,SOP’,SOP’’。不同的使用场景会用到不同SOP,每一个SOP也由不同的特殊编码组成。如SOP是由3个Sync-1和1个Sync-2组成,对应的5b编码可以在4b5b编码表中查到。
在这里插入图片描述
数据包使用SOP作为开头,说明该数据包是在Source与Sink之间进行的。
SOP’由2个Sync-1和2个Sync-3组成,其顺序如下图。
在这里插入图片描述
SOP’‘也是由2个Sync-1和2个Sync-3组成,但是其顺序与SOP’不同。
在这里插入图片描述
数据包使用SOP’或SOP’’,则说明是Source与E-Marker之间的通信过程,不同的是,SOP’体现的是Source与线材近端E-Marker的通信,SOP’’体现的是Source与线材远端E-Marker的通信。

功能码(Message Header)

功能码长度16-bits,通常包含数据包类型、端口角色(UFP/DFP)、PD协议版本等信息,功能码的组成如下图所示。
在这里插入图片描述
从列表中可以看出,不同的功能码需要特定的SOP*,这个在之前也有提到,下面介绍一些常用的功能码。

Extended

Extended是用来表示该数据包是否包含外部指令的功能码,该位置1,表示数据包中存在外部指令,反之则没有。如果数据包中包含外部指令,指令内容会跟在功能码后面进行传输。USB PD协议的外部指令使用的比较少,在这里就不做详细的介绍了。

Number of Data Objects

当Extended置0时,Number of Data Objects才可以使用,该功能码有3-bits,用来表示功能码后跟的数据的位数,如果Number of Data Objects置0,则表示功能码后没有数据,该数据包为控制消息。如果该功能码置1,则表示该数据包为数据消息。

Port Power Role & Port Data Role

这两个功能码都是表示端口的电源角色(Source/Sink)和数据角色(DFP/UFP),该位置1时表示Source/DFP,该位置0表示Sink/UFP。

Message Type

Message Type有5-bits,是功能码中比较重要的位,需要和Number of Data Objects 结合使用,前面提到Number of Data Objects决定了数据包的消息类型,Message Type 则表示具体的指令类型。当Number of Data Objects置0, Message Type则可以表示以下控制指令。例如当接收器成功接收数据包并CRC校验正确后,会向发送端发送带有GoodCRC和Message ID的数据包,来表示通信成功。

在这里插入图片描述
当Number of Data Objects置1时,Data Message Types可表示以下指令,例如Source会在通信过程中向Sink发送Source_Capabilitties来表示供电能力,Sink可以从供电能力列表中进行选择并通过Request指令发送给Source端。
在这里插入图片描述
数据码(Byte0-n)

数据码只有在数据包类型为数据消息时才会使用,具体的数据内容需要根据指令的内容改变,例如在使用Source_Capabiliities消息指令时,数据码就会存放Source的供电能力。数据码同样需要使用4b5b进行编码。

校验码(CRC)

功能码和数据码都需要由32bits的CRC校验进行保护,校验码的生成机制比较繁琐,一般都会使用查表的方式实现,在这里也不做详细的介绍了,感兴趣的小伙伴可以参考USB IF协会的官方文档。

结束码(EOP)

结束码表示整个数据包的结束,在4b5b编码表中可以找到对应的5b编码,为01101。
4B5B编码

0x02 USB PD协议的编码方式

在USB PD协议的数据包中,除了前导码(Preamble)之外,其他部分均需要使用4b5b编码,官方的说法是为了降低接收端设计的复杂度,提高接收端设计的自由度。4b5b编码的原理是建立一个4b5b编码表,将4-bits的数据与5-bits的数据进行对应,发送端根据编码表对4-bits数据进行编码,接收端根据编码表对5-bits数据进行解码,编码表的具体内容如下图所示。
在这里插入图片描述
从图中可以看出,除了基本的hex数据外,还定义了一些特定的编码,如Sync-1、RST-1等,这些特定的编码会组成SOP*,在介绍USB PD协议数据格式时也有提到。另外,编码表中还预留了多个未定义的5b编码,可以作为的扩展指令使用。

BMC编码

USB PD协议的数据包中,所有的数据都需要使用BMC进行编码,BMC编码属于物理层的操作,经过编码之后的数据通过CC线进行传送。
在这里插入图片描述
上图为BMC编码的示例,BMC编码规则是曼切斯特编码的一个版本,按照脉宽来设定的0和1,从示例中可以看到,在一个周期里有高低电平变化为1,否则为0。

USB PD协议编解码流程

以上详细介绍了USB PD协议数据包的格式和各个部分的功能,那么对于一个完整的数据包,发送端发送的流程是什么,接收端接收到数据之后会进行哪些处理呢。
在这里插入图片描述
上图为一个完整的数据包发送和接收的流程图,可以看到,在发送数据时,需要将经过CRC校验后的数据使用4b5b编码,再使用BMC编码才可以通过CC发送。在接收数据时,首先进行BMC解码,然后需要确定SOP的位置,因为SOP后的数据才是真正的有用的数据,再进行5b4b的解码,校验CRC。

介绍完理论,来看一下在实际的数据包。下面是使用逻辑分析仪抓取的USB PD协议通信数据包,使用上面介绍到的内容对这个数据包进行解析。
在这里插入图片描述
首先,BMC解码,根据BMC编码规则,识别出’0’和’1’,已经标注在图中。SOP识别,标注出的前20 bits为00011 00011 00011 10001,我们可以将这些数据理解为4组经过4b5b编码的数据,由于在传输数据时采用大端模式,所以需要将数据的高低位交换,转换之后为11000(Sync-1) 11000(Sync-1) 11000(Sync-1) 10001(Sync-2),也就是SOP(Sync-1、Sync-1、Sync-1、Sync-2)。同样的,SOP后的数据也需要先高低位交换,识别结果为Source_Capabilities,说明该消息是用来表明Source的供电能力的,那么数据包中也会包含数据码,分析的方法跟前面也是一样的。

在日常的工作中,其实并不需要手工去分析大量的USB PD的消息类型,目前大部分逻辑分析仪都可以对USB PD协议进行解析,另外也可以借助CY4500 EZ-PD™协议分析仪对USB PD通信逻辑进行分析,只有部分逻辑分析仪无法识别的内容,才需要我们根据协议内容去进行分析,这些内容大部分是USB PD芯片厂商定义的调试消息类型。

以上详细介绍了单个USB PD数据包的构成,以及如何去识别数据包的内容,DFP和UFP通过数据包进行通信,就是USB PD协议认证协商的过程。
0x03 USB PD协议认证协商

我们知道,不同的设备需要不同的充电电压、电流,手机需要9V/2A,平板需要15V/2A,电脑需要20V/3.25A,那么电源是如何实现根据设备需求提供定制化输出的呢?

支持USB PD协议的设备,在与电源连接时,会进行认证和协商,协商内容包括电源可提供的充电能力,设备支持的充电功率等。
在这里插入图片描述
上图为USB PD认证协商的流程图。首先DFP向UFP发送Source Capabilities 来表明其供电能力,UFP接收到该数据包校验无误后会向DFP发送GoodCRC,表明接收成功,随后UFP会从DFP的Capabilities中选择合适功率并使用Request消息发送给DFP,同样DFP也会对数据包校验并返回GoodCRC。DFP在收到UFP的Request之后,会判断能否满足该Request,如果可以则发送Accept,同时DFP会调整内部电源,准备向UFP供电,准备完成之后会向UFP发送PS_Ready消息并将电压、电流转换成UFP请求的值,待UFP回复GoodCRC,整个协商过程完成,电源与设备建立起快充关系。
在这里插入图片描述
上图是使用CY4500 EZ-PD™协议分析仪对协商过程进行监控得到的数据,从数据中可以看出,在DFP发送PS_Ready消息之前,VBUS的电压为5V,电流几乎为0,在DFP发送PS_Ready消息的同时,VBUS电压升为20V,开始对设备进行快充。

0x04 USB PD协议安全性分析

前面详细介绍了USB PD协议的数据格式、协商认证过程,了解了其工作原理,USB PD协议的具体实现需要使用USB PD芯片,USB PD协议本身也是公开的,数据包中包含CRC校验,并使用4b5b编码和BMC编码,可以说协议在设计的时候就把安全考虑进去,但是各个厂商的USB PD协议芯片的安全性可以说是参差不齐了。USB PD协议芯片一般包括物理层、协议层和策略层,物理层包括一些通用寄存器和PD专用寄存器,还有BMC编解码的功能等,协议层就会包含SOP*的识别、协议的实现等内容,策略层则包括一些上层策略。所以需要对芯片进行编程,配置策略,实现协议,当然就会存在固件。由于USB PD协议仅使用CC线进行通信,所以芯片厂商也会通过CC线对USB PD芯片进行固件烧录,在烧录方式上目前存在三种形态。

第一种是原厂单次烧录(OTP),这种芯片只在出货之前被烧录一次,不会被再次修改,也就是说不存在烧录恶意固件的问题。同时也因为只支持一次性烧录,所以这种协议芯片往往只会兼容标准的、成熟的快充协议,后续如果出现其他快充协议,协议芯片很难兼容。

第二种是开放式的多次烧录(eFlash/MTP),这种协议芯片配置灵活,可以利用开发工具修改固件,完成对新快充协议的兼容以及修复后续出现的BUG,出货量较大。不过这种芯片对应的开发工具可以比较容易买到,存在较大安全风险。

第三种是加密式的多次烧录(eFlash/MTP),芯片配置同样非常灵活,不过只有掌握了密钥才能获得固件更新的权限,而密钥一般都有充电器厂商保管。在技术层面,这样既保证充电器对BUG的修复能力,又能保护充电器不会被恶意更改程序,是USB PD快充充电器的最佳选择,但是如果厂商将密钥存储在烧录软件本地或者烧录设备中,也有可能存在密钥泄露的情况。

所以,USB PD协议的安全性主要取决于芯片厂商的取舍,以上三种形态都在一定程度上牺牲了产品的功能性或者安全性,至于如何去平衡功能性和安全性,这是开发人员和安全研究人员一直需要思考和面对的问题,我们要知道,没有绝对的安全。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处: https://ispacesoft.com/56059.html

(0)
思创斯忠实用户-ss思创斯忠实用户-ss
0 0

相关推荐

  • 坦它尼克号_泰坦尼克号生存者有多少[通俗易懂]

    坦它尼克号_泰坦尼克号生存者有多少[通俗易懂]

    坦它尼克号_泰坦尼克号生存者有多少[通俗易懂]主要涉及到的内容有:数据处理(对空白数据进行填充:Imputer)、自定义转换器、pipeline的编写以及采用SVC及RandomForestClassifier进行分类预测采用的数据集来自Kaggle的坦克尼克号的预测(Titanicchallenge )读取数据import

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2024年2月6日
  • React面试题最全

    React面试题最全

    React面试题最全React面试题最全_react面试题

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2023年8月1日
  • 知识点+练习题 部编版六年级语文上册 15 夏天里的成长

    知识点+练习题 部编版六年级语文上册 15 夏天里的成长

    知识点+练习题 部编版六年级语文上册 15 夏天里的成长15 夏天里的成长生字学习知识点一、我会写组词棚:péng(棚架、工棚、凉棚)苔:tái(苔痕、苔原、青苔)藓:xiǎn(苔藓、青藓、石藓)坪:

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2024年6月4日
  • 信号量(Semaphore)-你真的了解吗?[通俗易懂]

    信号量(Semaphore)-你真的了解吗?[通俗易懂]

    信号量(Semaphore)-你真的了解吗?[通俗易懂]什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2023年5月19日
  • PHP 基础知识_php语言基础 PHP

    PHP 基础知识_php语言基础

    PHP 基础知识_php语言基础前端开发者必会的后端语言

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2023年6月4日
  • wireshark tcpdump抓包_tcp抓包

    wireshark tcpdump抓包_tcp抓包

    wireshark tcpdump抓包_tcp抓包来源:https://ispacesoft.com/s/bHZ2_hgNQTKFZpWMCfUH9A头条号:大数据与云原生微信公众号:大数据

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2024年6月8日
  • 神经网络——最易懂最清晰的一篇文章「建议收藏」

    神经网络——最易懂最清晰的一篇文章「建议收藏」

    神经网络——最易懂最清晰的一篇文章「建议收藏」神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向–深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。  本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文。  神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技…

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2023年1月21日
  • linux系统错误代码_no default constructor found「建议收藏」

    linux系统错误代码_no default constructor found「建议收藏」

    linux系统错误代码_no default constructor found「建议收藏」###一、errno介绍###1.1errno简介Linux中系统调用的错误都存储于错误码errno中。errno由操作系统维护,存储**就近发生的错误**,即下一次的错误码会覆盖掉上一次的错误。errno是一个包含在中的预定义的外部int变量,用于表示最近一个函数

    思创斯忠实用户-ss 思创斯忠实用户-ss
    2024年4月16日

发表回复

您的电子邮箱地址不会被公开。

思创斯知道您想要的工具

  • pycharm2019激活工具_系统激活工具

    pycharm2019激活工具_系统激活工具

    2024年7月26日

  • idea2020.2.2激活码_Pycharm激活码

    idea2020.2.2激活码_Pycharm激活码

    2024年7月19日

联系我们

关注“Java架构师必看”公众号

回复4,添加站长微信。

附言:ispacesoft.com网而来。

关注微信

玻璃钢生产厂家玻璃钢恐龙雕塑哪家好范县玻璃钢雕塑加工厂家玻璃钢雕塑特点海南玻璃钢海豚雕塑定制灵宝商场美陈造景运城太湖石玻璃钢卡通雕塑厂家广场标识玻璃钢仿铜雕塑公司丽水人物玻璃钢雕塑优势商场艺术空间美陈邵阳玻璃钢造型雕塑南通商场中秋美陈安宁生产玻璃钢雕塑厂家多少钱邯郸玻璃钢雕塑价格经济实惠的玻璃钢花盆定制简单的玻璃钢花盆奉贤区拉丝玻璃钢雕塑厂家直供商场美陈项目的立项玻璃钢民俗雕塑设计加工玻璃钢卡通雕塑出厂价格山体玻璃钢雕塑虎年春节商场美陈浮雕玻璃钢雕塑制作楼盘玻璃钢雕塑销售电话太湖石玻璃钢彩绘雕塑制作厂家上海开业商场美陈价格玻璃钢雕塑供应商上海商场美陈装修视频宣城景观玻璃钢雕塑哪家便宜定制小型玻璃钢花盆商场里的美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化