TYPE-C PD供电协议消息格式
PD定义了两种消息类型,分别为控制消息(Control Messages)、数据消息(Data Messages )和扩展消息(Extend Messages)。
PD控制消息
控制消息属于短消息类型,用于管理端口与设备之间的消息流或交换不需要额外数据的消息。控制消息的长度为16位长。
控制消息的包结构如下图所示:
PD数据消息类型
数据消息的长度为48位到240位,用于控制端口与设备之间进行数据交换。
数据消息分为三种类型:
- 用于展示供电方的电源能力的数据消息。
- 用于BIST的设备的数据消息。
- 厂商自定义的数据消息类型。
PD数据消息类型的结构如下图所示:
PD扩展消息
扩展消息用于在一对端口之间交换信息。扩展消息最多为MaxExtendedMsgLen字节。
扩展消息的类型有:
- 用于源和电池信息的
- 用于安全的。
- 用于固件更新的。
- 那些是供应商定义的
PD扩展消息的结构如下图所示:
PD消息组成
数据消息和控制消息的数据包组成基本类似。基本都包括:
-
前导码:32位连续的01序列,不进行4b5b编码,总共64位。
-
SOP包开始:可能是SOP,SOP’或SOP’’.
-
2字节的信息头:消息包类型
-
CRC校验位:对消息头和消息数据(如果有的话)的CRC校验
-
EOF结束包:5位的4b5b编码。
除过EOF和SOF是4b5b编码后的长度,其余均为原始长度。
消息头(紧随 SOP 包之后)
消息头包括2字节,总共16位。
位 | 名称 | 说明 | |
---|---|---|---|
15 | Extended | 此消息是否为扩展类型 | |
14…12 | Number of Data Objects 数据个数 | 后面数据的个数,每个数据是4字节了,对于非扩展包,此字段的值为0~7 | |
11…9 | MessageId消息ID | 消息ID,每发送一次,增加一次 | |
8 | Port Power Role 接口供电角色 | 对于SOP信息,代表接口的供电角色 | |
8 | Cable Plug 线缆或接口 | 对于SOP’或SOP’’信息,代表此消息是接口发送的还是线缆发送的 | |
7…6 | Specification Reversion规范版本 | 此消息的当前版本 | |
5 | Port Data Role 接口通讯功能角色 | 对于SOP消息代表接口的功能角色 | |
5 | Reserved | 对于SOP’和SOP’’保留 | |
4…0 | MessageType消息类型 | 消息类型 |
Number of Data Objects 数据个数
使用3位给示4字节的数据个数,对于控制消息,数据个数为0.对于数据消息,此字节不为0.
消息ID MessageId
消息ID此为计数,当软件复位或硬件复位时,初始化为0.
当接收到GoodCRC消息时,表示成功接收到消息时,消息ID计数器应加1。注意:在BIST期间,发送测试帧时,发送方不会增加MessageID,接收方会忽略MessageID。
Port Power Role
1位端口电源角色字段应指示端口的当前电源角色:
- 0b Sink耗电方
- 1b Source,供电方
Specification Revision
- 00b –Revision 1.0
- 01b –Revision 2.0
- 10b - 11b – Reserved, Shall Not be use
Port Data Role
- 0b UFP
- 1b DFP
Cable Plug
- 0 表示消息来自 DFP or UFP
- 1 表示消息来自电缆插头
Message Type消息类型
如果是控制信息,则有以下:
“Bits4…0” | Message Type | Sent by | “Valid Start ofPacket” |
---|---|---|---|
0000 0 | Reserved | N/A | |
1 | GoodCRC 收到消息的应答 | Source, Sink or Cable Plug | SOP* |
10 | GotoMin 供电调节到最小 | Source only | SOP only |
11 | Accept 接收对方的请求 | Source, Sink or Cable Plug | SOP* |
100 | Reject 拒绝对方的请求 | Source or Sink | SOP only |
101 | Ping | Source only | SOP* |
110 | PS_RDY 供电已经准备好 | Source or Sink | SOP only |
111 | Get_Source_Cap 获取对方的供电能力消息 | Source or Sink | SOP only |
1000 | Get_Sink_Cap 获取对方耗电的需求 | Source or Sink | SOP only |
1001 | DR_Swap 通信功能角色切换 | Source or Sink | SOP only |
1010 | PR_Swap 供电角色切换 | Source or Sink | SOP only |
1011 | VCONN_Swap VCONN供电角色切换 | Source or Sink | SOP only |
1100 | Wait 回复对方的请求,让结方稍等再进行请求 | Source or Sink | SOP only |
1101 | Soft_Reset 软复位 | Source or Sink | SOP* |
1110 | Data_Reset 数据复位 | Source or Sink | SOP only |
0 1111 | Data_Reset_Complete 数据复位完成 | Source or Sink | SOP only |
1 0000 | Not_Supported 不支持对方发送的请求 | “Source, Sink orCable Plug” | SOP* |
1 0001 | Get_Source_Cap_Extended 获取对方的供电相关的扩展信息 | Sink or DRP | SOP only |
1 0010 | Get_Status 获取对方的状态 | Source or Sink | SOP* |
1 0011 | FR_Swap 快速供电角色切换 | Sink1 | SOP only |
1 0100 | Get_PPS_Status 获取供电言的额外信息 | Sink | SOP only |
1 0101 | Get_Country_Codes 获取本地化信息 | Source or Sink | SOP only |
1 0110 | Get_Sink_Cap_Extended | Source or DRP | SOP only |
1 0111 | Get_Source_Info | Sink or DRP | SOP Only |
1 1000 | Get_Revision | “Source, Sink or Cable Plug” | SOP Only” |
1 1001-1 1111” | Reserved | N/A | 保留 |
如果是数据消息,则消息类型有:
Bits 4…0 | Type | Sent by | “Valid Start of Packet” |
---|---|---|---|
0 0000 | Reserved | “All values not explicitly definedare Reserved and Shall Not be used.” | |
0 0001 | Source_Capabilities 供电方的供电能力信息 | “Source or Dual Role Power” | SOP only |
0 0010 | Request 请求供电 | Sink only | SOP only |
0 0011 | BIST 自测 | “Tester, Source or Sink” | SOP* |
0 0100 | Sink_Capabilities 耗电方的耗电需求信息 | “Sink or Dual-Role Power” | SOP only |
0 0101 | Battery_Status 电池状态 | Source or Sink | SOP only |
0 0110 | Alert 警告 | Source or Sink | SOP only |
0 0111 | Get_Country_Info 获取要地化信息 | Source or Sink | SOP only |
0 1000 | Enter_USB | DFP | SOP* |
0 1001 | EPR_Request | Sink | SOP only |
0 1010 | EPR_Mode | Source or Sink | SOP only |
0 1011 | Source_Info | Source | SOP only |
0 1100 | Revision | “Source, Sink orCable Plug” | SOP* |
“0 1101 -01110” | Reserved | “All values not explicitly definedare Reserved and Shall Not be used.” | |
0 1111 | Vendor_Defined 厂商用自定义信息 | “Source, Sink or Cable Plug” | SOP* |
“1 0000-11111” | Reserved | “All values not explicitly defined are Reserved and Shall Not beused.” |
如果是扩展消息,则消息类型有:
Bits 4…0 | Type | Sent by | “Valid Startof Packet” |
---|---|---|---|
0 0000 | Reserved | “All values not explicitlydefined are Reserved andShall Not be used.” | |
0 0001 | Source_Capabilities_Extended | “Source or DualRole Power “ | SOP only |
0 0010 | Status | Source or Sink | SOP* |
0 0011 | Get_Battery_Cap | Source or Sink | SOP only |
0 0100 | Get_Battery_Status | Source or Sink | |
0 0101 | Battery_Capabilities | Source or Sink | SOP only |
0 0110 | Get_Manufacturer_Info | Source or Sink | SOP* |
0 0111 | Manufacturer_Info | “Source, Sink orCable Plug” | SOP* |
0 1000 | Security_Request | Source or Sink | SOP* |
0 1001 | Security_Response | “Source, Sink orCable Plug” | SOP* |
0 1010 | Firmware_Update_Request | Source or Sink | SOP* |
0 1011 | Firmware_Update_Response | “Source, Sink orCable Plug” | SOP* |
0 1100 | PPS_Status | Source | SOP only |
0 1101 | Country_Info | Source or Sink | SOP only |
0 1110 | Country_Codes | Source or Sink | SOP only |
0 1111 | Sink_Capabilities_Extended | “Sink or DualRole Power” | SOP only |
1 0000 | Extended_Control | Source or Sink | SOP only |
1 0001 | EPR_Source_Capabilities | “Source or DualRole Power” | SOP only |
1 0010 | EPR_Sink_Capabilities | “Sink or DualRole Power” | SOP only |
“1 0011 -1 1111” | Reserved | “All values not explicitlydefined are Reserved andShall Not be used.” | |
1 1110 | Vendor_Defined_Extended | “Source, Sink orCable Plug” | SOP* |
1 1111 | Reserved | “All values not explicitlydefined are Reserved andShall Not be used.” |