一个数据消息应由一个消息头和一个或多个数据对象组成。数据消息很容易识别,因为消息头中的数据对象数量字段是一个非零值。一共有以下几种类型的数据对象:
- ‧ 用于PHY 层一致性测试的BIST 数据对象(BDO)。
- ‧ 电源数据对象(PDO),用于公开源端口的电源能力或接收器的电源要求。
- ‧ 接收端口用来协商合同的请求数据对象(RDO)。
- ‧ 供应商定义的数据对象(VDO),用于传达供应商特定信息。
- ‧ 电池状态数据对象(BSDO)用于传达电池状态信息。
- ‧ 警报数据对象(ADO),用于指示Source或Sink上发生的事件。
数据消息中使用的数据对象类型由消息头的消息类型字段定义,并在下表中进行了总结。Sent by列指示可以发送给定消息的source、sink或cable plug。未列出的实体不得发出相应的消息。Valid Start of Packet(数据包的有效起始)列表示只能在SOP数据包中发布的消息和可能在SOP*数据包中发布的消息。
Capabilities Message(Source_Capabilities消息或Sink_Capabilities消息)应具有至少一个用于vSafe5V的电源数据对象。能力消息还应包含发送端口的信息,后跟最多6个额外的电源数据对象。能力消息中的电力数据对象应按以下顺序发送:
- 1. vSafe5V固定电源对象始终是第一个对象。
- 2. 剩余的固定电源对象,如果存在,应按电压顺序发送;最低到最高。
- 3. 电池供电对象(如果存在)应按最低电压顺序发送;最低到最高。
- 4. 可变电源(非电池)对象(如果存在)应按最低电压顺序发送;最低到最高。
- 5. 可编程电源对象(如果存在)应按最大电压顺序发送,从最低到最高。
在上图中,数据对象数量字段为 2:vSafe5V加上另一个电压。
功率数据对象(PDO)和增强功率数据对象(APDO)由消息头的类型字段标识。它们用于形成Source_Capabilities消息和Sink_Capabilities消息。电源数据对象共有三种类型。它们包含除消息头中编码的信息之外的附加信息,以识别三种类型的Power数据对象中的每一种:
- 固定电源用于暴露调节良好的固定电压电源。
- 可变电源用于暴露稳压非常差的电源。
- 电池用于暴露电池,不能直接连接到VBUS。
有一种类型的增强功率数据对象:
- 可编程电源用于公开输出电压可以编程方式设置的电源在协议电压范围内调整。
Power Data Objects还用于公开可能使用的其他功能;例如在权力角色交换的情况下。
Source应发送一个或多个电源数据对象的列表,以传达其能力。Sink可以然后通过返回包含电源数据对象索引的请求数据对象来请求这些功能之一,以便协商双方同意的合同。
在PDO中给出最大和最小电压和电流值时,这些值应视为绝对值。Source和sink不得协商允许电流超过其插座或连接插头支持的最大电流的功率水平。source应限制其提供能力到其插座和连接插头支持的最大电流。Sink只能从Source提供的任何功能发出请求。
Source通过发送Source_Capabilities消息来暴露它们的能力。Sink通过发送Sink_Capabilities消息公开其功率要求。两者都由许多32位功率数据对象组成(见下表)。
00b 固定电源(最小电压等于最大电压) 01b 电池
10b 可变电源(非电池) 11b 增强功率数据对象(APDO)
当B31⋯B30为11b时,增强功率数据对象(APDO)被定义为通过将功率数据对象字段从2位扩展到4位来支持四种以上的PDO类型。通用APDO结构如上表所示。
B31...30 11b增强功率数据对象(APDO)
B29...28 00b 可编程电源 01b-11b 保留
B27...0 APDO 在以下部分中描述了特定的电源功能。