1. 协议层

1.1 概述

本章描述了USB电源传输规范的协议层的要求,包括:
①有关如何构造和使用消息的详细信息。
②计时器和超时值的使用。
③使用消息和重试计数器。
④复位操作。
⑤错误处理。
⑥状态行为。

1.2 消息
本规范定义了三种类型的消息:
1.2.1 控制消息
包类型:
①GoodCRC:表示通讯crc校验没问题。
②Accept(接收):表示充电器接受了用电器的请求。
③Reject(拒绝):表示充电器拒绝了用电器的请求,比如说电压/电流请求不合规格。
④PS_RDY:表示请求的电压已就绪,一般是在Accept 后几百ms由充电器发出,告诉用电器电压已经调整好了
⑤Get_Sink_Cap:
包长度:16字节。

1.2.2 数据消息

包类型:

①公布支持的充电电压和充电电流。

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_分块


②公布PD版本

③pps状态

包长度:[48,240]字节。

1.2.3 扩展消息 不解释

1.3 消息结构

所有消息应由消息头和可变长度(包括零)数据部分组成。

图例:

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_USB_02

图6-1示出了作为分组的一部分的控制消息,显示了由协议和PHY层提供的部分。

图6-1包括控制信息有效载荷的USB电源传输数据包格式:

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_分块_03

图6-2显示数据消息作为分组的一部分,显示了协议层和PHY层提供的部分:

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_数据_04

图6-3说明了作为数据包一部分的扩展消息,该数据包显示了协议和物理层。

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_PD协议_05

1.4 消息头

每条消息应以图6-1、图6-2和图6-3所示的消息头开头,并在表6-1中定义。消息头包含有关消息和PD端口功能的基本信息。

当“数据对象数”字段为零时,可以将消息头单独用作控制消息;当“数据对象数”字段为非零时,可以将其用作数据消息的第一部分。

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_PD协议_06

数据长度:当扩展字段设置为零时,3位数据长度字段应指示消息头后面的32位数据长度。当此字段为零时,消息为控制消息;当此字段为非零时,消息为数据消息。
“数据长度”字段应适用于所有SOP数据包类型。
当扩展位和分块位都设置为1时,“数据长度”字段应指示消息中填充到4字节边界的数据长度,包括作为第一个数据对象一部分的扩展头。
当扩展位设为1,分块位设为0时,保留数据对象个数字段。注意,在这种情况下,消息长度仅由扩展消息头中的数据大小字段确定。
消息ID:3位消息ID字段是由消息发起人维护的滚动计数器生成的值。由于软重置或硬重置,消息ID计数器应在通电时初始化为零。当成功接收到GoodCRC消息时,消息ID计数器应递增。
注意:在使用BIST消息进行测试期间,消息ID的用法在[USBPDCompliance]中定义。
消息ID字段应适用于所有SOP
数据包类型。

端口电源角色:
0—充电者(充电头[充电宝])
1—放电者([充电宝]手机)

规范修订:
规范修订字段应为以下值之一(11b除外):
00b –版本 1.0
01b –版本 2.0
10b – 版本 3.0
11b – 保留,不得使用

消息类型:
5bit消息类型字段应指示正在发送的消息类型。要完全解码消息类型,首先检查“数据长度”字段,以确定该消息是控制消息还是数据消息。具体报文类型见表6-5(控制报文)或表6-6(数据报文)。
消息类型字段应适用于所有SOP*数据包类型。

1.5 控制信息

当消息头中的“数据长度”字段设置为0时,消息被定义为控制消息。控制消息仅由消息头和CRC组成。协议层发起控制消息(即接受消息、拒绝消息等)。

控制消息类型在消息头的消息类型字段(bit[0,4])中指定,并在表6-5中汇总。“发送方式”列指示可以发送给定消息的实体(放电者、充电者或电缆插头);未列出的实体不应发出相应的消息。“数据包的有效开始”一栏表示只能在SOP数据包中发出的消息和可以在SOP*数据包中发出的消息。

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_数据_07

1.6 数据信息

数据消息应由消息头组成,后跟一个或多个数据对象。数据消息很容易识别,因为消息头中的“数据长度”字段是一个非零值。

有几种类型的数据对象:

①用于物理层一致性测试的BIST数据对象(BDO)。

②电源数据对象(PDO),用于公开源端口的电源功能或用电器的电源要求。

③接收端口用来协商协定的请求数据对象(RDO)。

④供应商定义的数据对象(VDO),用于传递特定于供应商的信息。

⑤电池状态数据对象(BSDO),用于传递电池状态信息。

⑥警报数据对象(ADO)用于指示源或用电器上发生的事件。

数据消息中使用的数据对象的类型由消息头的消息类型字段定义,并在表6-6中汇总。“发送方式”列指示可以发送给定消息的实体(充电头、用电器或电缆插头);未列出的实体不应发出相应的消息。数据包的有效起始列表示只能在SOP数据包中发出的消息和可以在SOP*数据包中发出的消息。

表6-6 数据报文类型

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_USB_08

1.7 电压电流支持信息

支持充电类型消息(充电器能力消息或用电器能力消息)应至少有一个用于vSafe5V的电源数据对象。能力消息还应包含发送端口的信息,后跟最多6个附加电源数据对象。能力信息中的电源数据对象应按以下顺序发送:

①vSafe5V固定电源对象应始终是第一个对象。

②剩余的固定电源对象(如有)应按电压顺序发送;从低到高。

③电池供电对象(如有)应按最低电压顺序发送;从低到高。

④如果存在可变电源(非电池)对象,则应按最低电压顺序发送;从低到高。

⑤PPS(可编程电源对象)如果支持则应按最大电压顺序从低到高发送。

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_USB_09


图6-12带有2个电源数据对象的功能消息示例

USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译_USB_10


在图6-12中,数据对象数字段是2:vSafe5V加上另一个电压。

电源数据对象(PDO)和增强电源数据对象(APDO)由消息头的类型字段标识。它们用于形成源功能消息和接收功能消息。

有三种类型的电源数据对象。它们包含除消息头中编码的信息之外的其他信息,用于标识三种类型的电源数据对象:

①固定电源是最常用的外部稳压电源。

②可变电源用于外部调节较差的电源。

③电池用于外部电池,而不是直接连接到VBUS。

有一种类型的增强功率数据对象:可编程电源用于外部输出电压,在广播电压范围内以编程方式调整的电源。