PD协议,笔记


前言

记录自己学习PD协议开发项目的过程,不作为教学,只是以后自己可以翻翻复习复习,第一次写可能不是很清晰。写这文章自己理解的比较多,不是很专业。2024/11/8


一、PD协议常用名词

1.DFP:Downstream Facing Port。是下行端口,通常这种端口在Host上或者在USB的Hub上
2.UFP:Upstream Facing Port。是上行端口,通常这种端口在device上或者连接host的hub上
3.DRP:  双角色端口
4.Source:通常指电源提供端,如电源适配器。
5.Sink:通常指电源消耗端,如手机、平板。
6.E-Marker(electronic marker):电子标记,一般存在于Type-ctoType-c的线缆中。
7.CC(Configuration Channel):配置通道,用于识别、控制等。
8.BMC(Biphase Mark Coding):双相位标识编码,通过CC 通信。
9.DFP(Downstream Facing Port):下行端□,即为 HOST 或者 HU B下行端
10.UFP(Upstream Facing Port):上行端□ 即为 Device 或者 HUB 的上行端囗。
11.DRD (Dual-Role Data):能作为 DFP/UFP。
12.DRP (Dual-Role Power):能做为 Sink/Sour ce.
13.SOP(Start of Packet Sequences):所有的 PD 传输流程
14.EOP(End of Packet):数据包结束标志

二、PD协议通信过程

1.硬件通信

简单来讲就是主从之间通过BMC编码规则实现通信(这个不用多去了解一般硬件层都给你做好了)

2.握手过程


正常通信过程:

整个PD协议通信的过程需要注意的是,发送数据(无论是供电端还是受电端)后接收到会回复一个GOOD CRC ,如果协议交互没问题,就到下一个环节,如果有问题会重新发送上一环节的报文或者发送NOT_SUPPORT(不支持)。


在cc线上会一直检测是否有设备接入,一旦有设备接入,就以电平跳变作为信号,此时供电端会发送SOURCE CAP(能力包)给设备如下图

接着设备会按照自己电池的需求来选择已有的供电能力,REQUEST(请求供电)

供电端收到需求后会查询是否在能力范围内如果是会回复ACCEPT表示允许正常供电

在供电端回复完ACCEPT后会打开VBUS给设备供电,并在供电稳定后会发送PS RDY来告知设备供电稳定

 

三、PD协议申请调压

这一块其实是PD协议最精髓的部分了,PD协议可以实现在正常供电后调压。什么意思呢?举个栗子:我们可以理解为手机20%的电量时,手机就会REQUEST(请求供电)9V 3A(27W)的供电,在充到80%手机会REQUEST(请求供电)5V 3A(15W)降低电压来实现保护电池延长寿命的作用。还有就是PD2.0PD3.0的主要区别PPS

  • PD2.0支持固定电压档位(5V、9V、12V、15V、20V),无法在充电过程中调整电压。
  • PD3.0增加了PPS模式,可以动态调整电压和电流,精确到20mV,充电效率更高。

在协议层来说设备请求PPS一样的也是通过REQUEST(请求供电),但前提是供电端支持PPS也就是得支持PD3.0的协议


申请调压后,一样会进入允许供电,供电稳定的协议阶段。
 


总结

以上就是PD协议层的交互过程了,如果开发这一段只需要多注意报文的种类就行了,用逻分采集出来多看看,下篇讲讲复杂的厂商信息!

### PD协议的握手过程详解 #### 握手过程概述 Power Delivery (PD) 协议是一种用于通过USB接口提供更高功率传输的标准。其核心目标是在设备之间协商并分配合适的电压和电流等级,从而实现高效的电力输送。在握手过程中,源设备(Source)与接收设备(Sink)通过Configuration Message交换能力信息,并最终达成一致的工作参数。 #### 初始连接阶段 当两个支持USB-PD标准的设备首次建立物理连接时,它们会在配置通道(CC Pin)上发送初始信号以识别彼此的存在[^1]。此阶段的主要目的是确认双方均支持USB-PD协议,并准备进入后续的消息传递流程。 #### 能力消息交换 一旦成功完成初始化操作之后,接下来就是关键的能力消息(Capability Messages)交换环节。在此期间,Source向Sink传达其所能够供应的所有可能电源选项列表;与此同时,Sink则回应自己期望获取的最佳供电条件。这些交互通常借助Structured VDMs(Vendor Defined Messages)形式来进行表达。 #### 参数协商与选定 基于前面所提到过的双向沟通结果之上, Sink依据自身的实际需求以及来自Source所提供的可用资源情况作出决策——挑选出最适合自己运行状态的一个特定组合方案作为最终采纳对象。随后,Sink再次利用Request Command将这个决定正式通知给对应的Source端知晓。 #### 合同确立及稳定工作 最后,在上述所有步骤都顺利完成的前提下,两台装置之间便形成了所谓的“合同关系”。此时,按照之前商定好的条款执行相应的电能供给服务即可。值得注意的是,如果未来任何一方的状态发生变化(比如电池充满),都可以重新发起一轮新的谈判程序以便调整现有的合作模式。 ```python def pd_handshake(source_capacities, sink_requirements): """ Simulate the Power Delivery handshake process. Args: source_capacities (list): List of power options available from Source. sink_requirements (dict): Dictionary containing desired voltage and current by Sink. Returns: dict: Final agreed upon contract between Source and Sink. """ # Exchange capabilities exchanged_capabilities = exchange_messages(source_capacities) # Select optimal configuration based on requirements selected_config = select_configuration(exchanged_capabilities, sink_requirements) # Establish contract with chosen settings established_contract = establish_contract(selected_config) return established_contract def exchange_messages(capabilities): pass # Placeholder for capability message exchange logic def select_configuration(options, needs): pass # Placeholder for selecting best match among provided options def establish_contract(config): pass # Placeholder for establishing final contract details ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值