USB PD快充协议详解(待续)

本文详细解析了USB OTG和PD充电技术的工作原理,包括USB OTG如何通过PHY监控VBUS电压和OTGID脚来识别USB PD协议,以及USB PD 2.0和3.0如何通过Type-C接口实现快速充电。同时,介绍了USB PD 3.0相较于2.0的主要改进,包括设备内置电池特性的详细描述、设备软硬件版本识别和软件更新功能以及数字证书和数字签名功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、原理

1.1 USB OTG充电原理:

(1)USB OTG的PHY监控VBUS电压,如果有VBUS的5V电压存在,并且检测到OTG ID脚是1K欧的下拉电阻(不是 OTG HOST模式 ,其ID电阻小于1K)就说明该电缆支持USB PD;
(2)USB OTG做正常的BCS V1.2规范的充电器探测,并且启动USB PD设备策略管理器,策略管理器监控VBUS的直流电平上是否耦合FSK信号,并且解码消息得出是Capabilities Source消息,就根据USB PD规范解析该消息USB PD充电器所支持的所有电压和电流列表对;
(3)手机根据用户的配置,从Capabilities Source消息中选择一个电压和电流对,并将电压和电流加在Request消息的Payload上,然后策略管理器将FSK信号耦合到VBUS直流电平上;
(4)充电器解码FSK信号并发出Accept消息给手机,同时调整Power Supply直流电压和直流电流的输出;
(5)手机接收到Accept消息,调整Charge IC的充电电压和电流;
(6)手机在充电过程中可以动态发送Request消息来请求充电器改变输出电压和电流,从而实现快速充电。

1.2 USB PD2.0 和Type-C接口的充电原理:

(1)适配器在连接建立后,会通过D+、D-线进行广播,告诉连接建立的另一方,适配器能够提供多少种电压以及对应的电压;
(2)用电器在获悉适配器的供电能力后,从中选择一个最适合自己的供电方式,并向适配器发送请求数据包;
(3)适配器根据用电器的选择,评估自身的供电能力后,发送“接收”命令;
(4)适配器进行内部电压变换,并向用电器发送"电源准备好"数据包;
(5)适配器向VBUS施加协商后新的供电电压。

1.3 USB PD3.0与USB PD2.0的区别

PD3.0相对于PD2.0的变化主要是三方面:
(1)增加了对设备内置电池特性更为详细的描述。
(2)增加了通过PD通信进行设备软硬件版本识别和软件更新的功能。
(3)增加了数字证书及数字签名功能。

2 通信协议

2.1 物理层

物理层由一对收发器和接收器组成,通过单个信号线进行半双工通信。
主要作用:

发送数据包:

  • 接收来自协议层的数据包
  • 进行CRC校验
  • 将CRC校验结果编码到数据包上
  • 将校验后的数据包通过信号线传送出去

接收数据包:

  • 恢复时钟,并锁定到数据包的前导码上
  • 检测SOP
  • 解码接收到的数据,包括CRC
  • 判断接收到的数据是否是有效数据

数据包格式:
在这里插入图片描述
Preamble:

The Preamble is used to achieve lock in the receiver by presenting an alternating series of “0s” and “1s”, so the average frequency is the carrier frequency. Unlike the rest of the packet, the Preamble Shall Not be 4b/5b encoded. The Preamble Shall consist of a 64-bit sequence of alternating 0s and 1s. The Preamble Shall start with a “0” and Shall end with a “1”.

SOP(Start Of Packet):
CRC:
EOP(End of Packet)

2.2 协议层

### USB PD协议的工作原理 USB Power Delivery (PD) 协议是一种用于通过USB接口传输更高功率的技术,旨在解决传统电器和设备之间不兼容的问题。其核心目标是提高效率并减少资源浪费。USB PD协议允许电源适配器和设备之间的双向通信,从而动态调整电压和电流以满足特定需求。 #### 动态功率分配机制 USB PD协议的核心在于它能够根据连接设备的需求动态调整输出功率。例如,默认情况下,USB 3.2 Gen1 提供的是4.5W(5V、900mA)的电力支持[^1]。然而,当使用USB PD时,可以通过协商提升至更高的功率水平。对于最新的USB PD 3.1版本,引入了Extended Power Range (EPR),使得最大功率可达到240W,远超之前的100W限制[^2]。 #### 数据交换流程 为了实现上述功能,USB PD定义了一套严格的消息传递体系。其中包括但不限于`Get_Source_Info`, `Get_Revision`等控制消息以及新增的数据消息如`EPR_Request`. 当Sink端(用电设备)向Source端(供电设备)发送请求时,通常会附带一个Request Data Object (RDO), 它包含了期望获得的具体参数比如电压等级与所需电流强度等内容[^2]. ### 实现方式概述 硬件层面, 需要确保所使用的电缆和支持组件符合新标准下的电气特性要求。特别是针对那些希望利用EPR特性的产品来说, 必须采用能承受至少50伏特压力测试并通过认证的安全线缆[^2]. 此外, 软件部分则依赖于固件编程来处理复杂的握手过程及错误管理逻辑. 具体而言: - **初始化阶段**: 设备插入后立即启动识别程序. - **能力通告**: 双方互相通报各自的能力集(即它们所能提供的或者接受的不同组合形式). - **配置选择**: 根据先前得知的信息决定最佳匹配方案. - **持续监控&重新评估**: 在整个操作期间保持联系以便适时作出相应改变. 值得注意的是, 整个过程中涉及到多种安全措施防止过载或其他潜在危险情况发生. ### 标准规范要点 目前主流遵循的标准主要是围绕着以下几个方面展开讨论: - **版本迭代**:从最初的USB PD 2.0发展至今已有多个修订版发布,其中每一个都带来了不同程度上的改进优化。 - **功率分级**:除了传统的Standard Power Range(SPR)之外现在还加入了Extended Power Range(EPR), 扩展后的选项让更多的应用场景成为可能。 - **互操作性考量**:无论何时何地都应该保证不同品牌型号间良好的协作体验。 ```python def negotiate_power(source_caps, sink_reqs): """ Simulates a basic negotiation process between Source and Sink devices using RDO logic. Args: source_caps (list): List of tuples representing available voltage/current pairs from the Source. sink_reqs (tuple ): Desired operating point specified by the Sink as per its needs. Returns: tuple: Final agreed upon Voltage/Current pair after successful negotiations or None otherwise. """ for cap in source_caps: if all([cap[i]>=sink_reqs[i] for i in range(len(sink_reqs))]): return cap print(negotiate_power([(5,2),(9,3)],(9,2))) # Example usage demonstrating compatibility check during handshake phase. ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值