五、USB PD协议层之控制消息

当Message Header中的Number of Data Objects字段设置为0,控制消息仅由一个Message Header和一个CRC组成。协议层发起控制消息(如,Accept Message, Reject Message 等)。
控制消息类型在消息头的Message Type字段(位4…0)中指定,并汇总在下表中。
image.png
image.png

1、GoodCRC Message

GoodCRC消息应由接收方发送,以确认之前的消息已经被正确的接收,GoodCRC消息应返回消息的MessageID,以便发送方可以确定正在确认正确的消息。GoodCRC消息的第一bit应该在tTransmit 之内接收到上一条消息的最后一bit,也就是说在收到消息后回复GoodCRC要在tTransmit时间内,这个时间后面的文章会讲到
BIST模式下不发送GoodCRC消息
当消息发送者在CRCReceiveTimer到期之前无法接收到GoodCRC消息,那么重发机制将被触发,它由消息发送者用来检测消息是否被消息接收方由于配置信道(CC)上的噪声或其他干扰。重发机制不得用于其他目的。
注意:CRCReceiveTimer是一个定时器,文中还有很多类似的定时器,它的作用为限定接收消息的有效期时间,后面会列出一个定时器列表供参考。

2、GotoMin Message

此消息只适用于那些在Sink请求数据对象中设置了GiveBack capable flag已请求电力的Sink。
这是一条对Sink端口的指令目的是为了降低其当前的功率到在最近的Sink请求数据对象中的最小工作电流位的指定水平
GotoMin被设计用于允许Source临时重新分配电力满足短期的需求,比如,Source可以减少Sink的功耗持续10-20秒来允许其他Sink
Source发送这条消息获取功率满足其无法满足的功率要求。设备策略管理器决定哪一个端口或者哪些端口将接收消息
Sink应该在tSnkNewPower时间内回复一条GotoMin消息通过降低功耗小于或等于预先协商的值{最小工作电流}
Source发送GotoMin消息作为功率协商过程中的捷径,自Source和Sink已经做了一个关于返回功率的约定。Source没有广播能力,Sink没有基于它们提出请求。Source简单的发送GotoMin在功率协商过程中替代Accept消息的正常发送。
功率协商过程以正常方式完成之后,一旦电源转换完成Source就会发送PS_RDY
Source应该返回它之前借的来自任何新电源分配给其他设备之前使用GotoMin机制的电源

3、Accept Message

Accept消息在以下情况下是有效的:

  1. 它应由Source发送,在SPR模式向Sink发送Source愿意满足Request消息的信号
  2. 它应由Source发送,在SPR模式向Sink发送Source愿意满足ERP_Request消息的信号
  3. 它应由PR_Swap消息的接收方发送,以表明其愿意进行电力角色交换并且已经开始了电力角色交换序列。
  4. 它应由DR_Swap消息的接收方发送,以表明其愿意进行数据角色交换并且已经开始了数据角色交换序列。
  5. 它应由VCONN_Swap消息的接收方发送,以表明其愿意进行VCONN交换并且已经开始VCONN交换序列。
  6. 它应由FR_Swap消息的接收方发送,以表明其已开始快速角色交换序列
  7. 它应由Soft_Reset消息的接收方发送,以表明其已完成软重置。
  8. 它应由Enter_USB消息的接收者发送,以表明它已开始输入USB序列
  9. 应由Data_Reset消息的接收方发送,以表明其已开始数据重置序列

接受消息应在收到消息最后一位后的**tReceiverResponse_时间内发送

4、Reject Message

Reject Message在以下情况中是有效的:

  1. 在SPR模式下,应向Sink发送信号,表明Source无法满足Request消息。这可能是由于无效请求,或者Source无法再提供以前的功率。
  2. 应在EPR模式下向Sink发送信号,表明Source无法满足EPR_Request消息。这可能是由于一个无效的请求,或者源无法再提供它之前的功率。
  3. 它应由PR_Swap消息的接收方发送,以表明其无法进行权力角色交换。
  4. 它应由DR_Swap消息的接收方发送,以表明其无法进行数据角色交换。
  5. 它应由当前不是VCONN源的VCONN_Swap消息的接收方发送到表示它无法进行VCONN交换。
  6. UFP应在收到Enter_USB消息时发送该消息,以表明其无法输入请求的USB模式。

Request、EPR_Request、PR_Swap、DR_Swap,VCONN_Swap或Enter_USB消息的发送方,在收到Reject消息回复时,不应该发送相同的消息给接收方知道下列情况之一出现:

  1. Source发送Source_Capabilities消息或EPR_Source_Capabilities消息。这可以通过以下方式触发:
  2. Source的设备策略管理器。
  3. 在SPR模式下从Sink发送到Source的Get_Source_Cap消息。
  4. 在EPR模式下从Sink发送到Source的EPR_Get_Source_Cap消息。
  5. 电力角色互换。
  6. 软重置。
  7. 硬重置。
  8. 断开/重新连接。
  9. 数据角色交换。
  10. 数据重置。

Sink可以向被拒绝的Requset消息发送不同的Requset消息,但不应重复相同的Request消息,使用相同的RDO,除非有新的明确合同谈判、数据角色交换或数据重置如上所述。
Reject消息应该在消息的最后一位被接收到的tReceiverResponse时间内发送

5、Ping Message

Ping消息以前用于USB Type-A和USB Type-B连接器,以确定是否继续当没有其他消息发生时,Sink的存在。USB Type-C®连接器具有一种机制确定接收器的存在,以便当端口都使用USB Type-C®连接器连接时,Ping消息是不必要的,但如果需要,可以由Source发送。使用USB Type-C®连接器的Sink不能期望接收Ping消息,但如果接收到Ping消息,则不应将其视为错误。

6、PS_RDY Message

PS_RDY消息应由Source发送(或由新Sink和新Source发送在权力角色交换序列或快速角色交换序列期间),以指示其电源已达到所需的操作条件

7、Get_Source_Cap Message

Get_Source_Cap(获取Source能力)消息可以由端口发送,以请求Source能力和其端口伙伴的双重角色能力(例如,双重角色能力)。端口应通过返回Source_Cap消息回复

8、Get_Sink_Cap Message

Get_Sink_Cap(获取Sink能力)消息可以由端口发送,以请求其端口伙伴的Sink能力和双重角色能力(例如,双重角色能力)。端口应通过返回Sink_Cap消息回复

9、DR_Swap Message

DR_Swap消息用于在端口伙伴之间交换DFP和UFP操作,同时保持VBus上功率的流向,端口合作伙伴可以使用DR_Swap流程,无论他们是否支持USB通信功能,支持USB通信功能的DFP作为USB Host连接,支持USB通信功能的UFP作为USB Device连接。
[USB类型-C2.3]DRDs应能够从PE_SRC_Ready(这里涉及到状态机,后面会说到)PE_SNK_Ready状态下执行数据角色交换。DFPs和UFPs可以从PE_SRC_ReadyPE_SNK_Ready状态执行数据角色交换。数据角色交换应与端口合作伙伴之间正在进行的任何USB通信中的电缆分离/重新连接相同。如果在接收到DR_Swap消息时,端口合作伙伴之间存在任何活动模式,则应执行硬重置。如果电缆插头具有任何活动模式,则DFP不应发出DR_Swap消息并且应在接受DR Swap请求之前退出电缆插头中的所有活动模式。
在CC线上的数据角色交换过程中,VBUS源和VCONN源以及Rp/Rd电阻器应保持不变。
DR_Swap消息可以由任一端口合作伙伴发送。DR_Swap消息的接收方应通过发送Accept消息、Wait消息或Reject消息。

  1. 如果发送了Accept消息,则Source和Sink应交换操作角色。
  2. 如果发送了Reject消息,则会通知请求者无法或不愿意执行数据角色互换,不得采取任何行动。
  3. 如果发送了Wait消息,则会通知请求者将来可能进行数据角色交换但不得立即采取行动。

在数据角色交换之前,初始DFP应将其端口数据角色位设置为DFP,并且初始UFP应将端口数据角色位设置为UFP。
数据角色交换成功后,DFP/主机应成为UFP/设备,反之亦然;新的DFP将其端口数据角色位设置为DFP并且新的UFP将其港口数据角色位设为UFP。 USB通信被两个端口支持USB数据连接的方向应该根据新的数据角色被确认
如果数据角色交换,在被港口合作伙伴接受后没有成功,为了尝试在CC线上重新建立连接,USBType-C®错误恢复操作,例如断开连接,如[USB Type-C 2.3]中所定义将是必须的。

10、PR_Swap Message

PR_Swap消息可以由任一端口合作伙伴发送,以请求交换权力角色。消息的接收者应该通过发送Accept消息、Wait消息或Reject消息回复响应。

  1. 如果发送了Accept消息,则Source和Sink应进行电源角色交换。
  2. 如果发送了Reject消息,则会通知请求者无法或不愿意执行权力角色互换,不得采取任何行动。
  3. 如果发送了Wait消息,则会通知请求者将来可能进行权力角色交换但不得立即采取行动。

成功切换电源角色后,端口对之间应重置各自的协议层(相当于软重置):在尝试之前重置其MessageIDCounter、RetryCounter和协议层状态机建立明确协商。此时,Source还应重置其CapsCounter。
Source应在CC线上断言Rp,Sink应在CC线上断言Rd,如[USB Type-C 2.3]。当执行电源角色从Source到Sink的切换时,端口应更改其CC线从Rp到Rd的电阻器。当执行从Sink到Source的电源角色交换时,端口应更改其CC线从Rd到Rp的电阻器。DFP(主机)、UFP(设备)角色和VCONN源应在权力角色交换过程中保持不变。
注意:在电源角色交换过程中,即使VBUS降至vSafe5V以下,初始接收器也不会断开连接。

11、VCONN_Swap Message

VCONN_Swap消息应由任何可作为VCONN源操作的端口支持。
VCONN_Swap消息可由任一端口伙伴发送,以请求交换VCONN源。这个消息的接收者应通过发送Accept消息、Reject消息和Wait消息或者Not_Supported消息进行响应

  1. 如果发送了Accept消息,端口合作伙伴应执行VCONN交换。新的VCONN源应tVCONNSourceOn内发送PS_RDY消息,以指示它现在是VCONN_Source。初始VCONN Source应在tVCONNSourceOff内收到PS_ RDY消息的EOP的最后一位后来停止VCONN_Source.
  2. 如果发送了Reject消息,则会通知请求者收件人无法或不愿意执行VCONN交换,不得采取任何行动。Reject消息只能由当前不是Vconn源的端口来发送作为Vconn_ Swap消息的回复。当前为Vconn的端口不应发送拒绝消息以响应VCONN_Swap消息。
  3. 如果发送了Wait消息,则会通知请求者将来可能进行VCONN交换,但不得立即采取行动。Wait消息只能由当前不是Vconn源的端口以响应Vconn_ Swap消息。当前为Vconn的端口源不应发送Wait消息以响应VCONN_Swap消息。
  4. 如果发送了Not_Supported Message,则会通知请求者不支持VCONN Swap。当前不是Vconn Source的端口可以打开Vconn,当Not_supported消息被接受作为Vconn_Swap消息的响应时

在CC线上的VCONN交换过程中,DFP(主机)、UFP(设备)角色和VBUS源应保持不变。
VCONN应在VCONN交换过程中持续供电,以保持电缆插头的电源,即断开前。
在与电缆插头通信之前,端口应确保它是VCONN源,并且电缆插头如有必要,可通过执行VCONN Swap来供电。由于无法保证当前VCONN源正在提供VCONN,确保电缆插头通电的唯一方法是希望端口与电缆插头通信使其成为VCONN源。如果响应VCONN_ Swap消息,则允许端口成为VCONN源,直到硬重置或分离。
同时也是源的VCONN源可以尝试使用SOP向电缆插头发送Discover Identity命令
在明确协商成立之前,同时也是源的VCONN源可以尝试使用SOP’向电缆插头发送Discover Identity命令。
注意:即使目前是VCONN源,Sink也不允许使用电缆插头启动AMS除非Rp设置为SinkTxOk

12、Wait Message

等待消息对以下消息之一是有效的响应:

  1. 在功率协商期间,应发送该消息以向Sink发送信号,以响应SPR模式下的Request消息,指示Source当前无法满足请求。
  2. 在功率协商期间,应发送该消息以向Sink发送信号,以响应EPR模式下的EPR_Request消息,指示信Source当前无法满足请求。
  3. 它应由PR_Swap消息的接收方发送,以表明其当前无法进行权力角色交换。
  4. 它应由DR_Swap消息的接收方发送,以表明其当前无法进行数据角色交换。
  5. 它应由当前不是VCONN源的VCONN_Swap消息的接收方发送,以指示其当前无法进行VCONN交换。
  6. 它应由Enter_USB消息的接收方发送,以表明其当前无法进入请求的USB模式。

等待消息应在接收到消息最后一位的tReceiverResponse内发送

13、Soft Reset Message

Soft Reset消息可以由源或接收器向其端口伙伴发起,请求软重置。Soft Reset消息应导致连接端口对的软重置,如果软重置消息失败,则应在nRetryCount重试完成后到期的最后一个CRCRReceiveTimer的tHardReset内启动硬重置。
Soft_ Reset消息用于从协议层错误中恢复;将消息计数器置于已知状态以重新获得消息同步。
Soft_Reset消息对Source或Sink没有影响;这是先前协商的方向。电压和电流保持不变。模式操作不受软重置的影响。然而,在软重置完成后,会发生显式合同协商,以便重新建立PD通信,并使两个端口伙伴的状态操作恢复到PE_SNK_Ready或PE_SRC_Ready状态(视情况而定)
当出现消息同步错误时,Source或Sink可能会发送Soft_Reset消息。如果软复位未纠正错误,则应发出硬复位信号
软重置消息应针对特定实体,具体取决于所使用的SOP*数据包的类型。使用SOP数据包发送的Soft_Reset消息应仅软重置端口伙伴。使用SOP“/SOP”数据包发送的软重置消息只能软重置相应的电缆插头。
VCONN交换后,VCONN源需要重置电缆插头的协议层,以确保MessageID同步。如果VCONN交换后,VCONN源想要使用SOP’与电缆插头通信,则应使用SOP’发出软重置消息,以重置电缆插头的协议层。如果VCONN源希望使用SOP’‘数据包与电缆插头通信,则应使用SOP’'数据包发出软重置消息,以重置电缆插头的协议层。

14、Data_Reset Message

Data_Reset消息可由DFP或UFP发送,并应重置USB数据连接,并与其端口伙伴退出所有备用模式,同时保持VBUS上的电源。支持USB4®的端口应支持Data_Reset消息,其他端口可支持Data_Reset信息。
数据重置消息不应改变现有的:

  • 电力合同
  • 数据角色(即哪个端口是DFP或UFP)

Data_Reset消息的接收方应通过发送Accept消息进行响应,然后遵循以下步骤中概述的过程。在Data_Reset过程完成并且发送了Data_Reset_complete消息之前,发送方和接收方都不应进行VCONN交换。在接收到Accept消息之后,或在Accept之后的GoodCRC,取决于哪个端口发送Data_Reset消息:

  • DFP应:
    • 断开端口的[USB 2.0]D+/D-信号。
    • 如果在[USB 3.2]中操作,请移除端口的Rx终端(请参见[USB 3.2])。
    • 如果在[USB4]中操作,则将端口的SBTX驱动至逻辑低(请参阅[USB4])。
  • DFP和UFP均应退出所有备用模式(如有)。
  • 重置电缆:
    • 如果VCONN源端口也是UFP,则它应运行所述的UFP VCONN电源循环过程
    • 如果VCONN源端口也是DFP,则它应运行所述的DFP VCONN电源循环过程
    • DFP应退出VCONN电源循环过程,作为VCONN源,并采购VCONN。
  • tDataReset后,DFP应:
    • 重新连接[USB 2.0]D+/D-信号。
    • 如果端口在[USB 3.2]或[USB4]中运行,则重新应用端口的Rx终端(请参见[USB 3.2])。
  • 数据重置过程完成;DFP应发送Data_Reset_Complete消息,并进入USB4®发现和进入流程(请参阅[USB Type-C 2.3])。

如果数据重置消息的发起方在tSenderResponse内未收到有效响应,则应进入错误恢复状态。

15、Data_Reset_Complete Message

Data_Reset_Complete消息应由DFP发送至UFP,以指示数据重置过程的完成

16、Not_Supported Message

Not_Support消息应通过端口或电缆插头发送,以响应其不支持的任何消息。返回Not_Supported消息在本规范中是假定的,并且除了“消息适用性”中定义了返回Not_Ssupported消息的情况外,没有明确调用。

17、Get_Source_Cap_Extended Message

Get_Source_Cap_Extended(Get-Source Capabilities Extended)消息由端口发送,用于请求有关端口的源功能的其他信息。端口应通过返回Source_Capabilities_Extended消息进行响应

18、Get_Status Message

Get_Status消息由端口使用SOP发送,以请求端口合作伙伴的当前状态。港口合作伙伴应通过返回Status消息(参见第6.5.2节“状态消息”)进行响应。接收警报消息的端口(见第6.4.6节“警报消息”)表示Source或Sink的状态已更改,应使用Get_Status消息重新读取。Get_Status消息也可发送到活动电缆,以使用SOP’/SOP”获得其当前状态。有源电缆应通过返回Status消息进行响应

19、FR_Swap Message

FR_Swap消息应在检测到快速角色交换信号后由在tFRSwapInit内的新Source发送。快速角色交换AMS对于将Rp应用于新的Source和将Rd应用于新Sink以及重新同步状态机是必要的。tFRSwapInit time应从发送用于tFRSWapRx(max)的FRS信号到物理层发送FR_Swap消息的EOP的最后一位的时间开始测量。
FR_Swap消息的接收方应通过发送Accept消息进行响应。
快速角色交换成功后,端口伙伴应重置各自的协议层(相当于软重置):在尝试建立显式合约之前重置其MessageIDCounter、RetryCounter和协议层状态机。此时,Source还应重置其CapsCounter。
应该确保只有电缆插头对Discover Identity命令做出GoodCRC消息响应。
在快速角色交换AMS之前,新的Source应在CC线上断言Rd,而新的Sink应在CC上断言Rp。请注意,这是由快速角色交换AMS纠正的Rp/Rd的错误分配(因为根据[USB Type-C 2.3]中的定义,Rp跟随Source,Rd跟随Sink)。
在快速角色交换AMS过程中,新Source应将其CC线电阻器从Rd更改为Rp,新Sink应将其CC线电阻器从Rp更改为Rd。DFP(主机)、UFP(设备)角色和VCONN源在快速角色切换过程中应保持不变。
无论何时不主动与电缆通信,初始Source都应避免成为VCONN源(通过使用VCONN Swap过程),因为初始Source在快速角色交换过程中很难保持VCONN电源。
注:快速角色交换是一种“尽最大努力”解决PDUSB设备失去外部电源的情况。该过程可以在任何时候发生,即使是在AMS期间,在这种情况下,将触发错误处理,如硬重置或[USB Type-C 2.3]错误恢复。
注意:在快速角色交换过程中,即使VBUS降至vSafe5V以下,初始接收器也不会断开连接。

20、Get_PPS_Status

接收端发送Get_PPS_Status消息以请求有关Source状态的附加信息。端口应通过返回PPS_Status消息进行响应(参见第6.5.10节“PPS_StatusMessage”)。

21、Get_Country_Codes

Get_Country_Codes消息由端口发送,以请求其端口合作伙伴支持的字母-2国家代码,如[ISO 3166]中所定义。港口合作伙伴应通过返回Country_Codes消息进行响应(见第6.5.11节“Country_CCodes消息”)

22、Get_Sink_Cap_Extended Message

Get_Sink_Cap_Extended(Get Sink Capabilities Extended)消息由端口发送,用于请求有关端口的接收功能的附加信息。端口应通过返回Sink_Capabilities_Extended Message(见第6.5.13节“Sink_Cabilities_Extended Message”)进行响应。

23、Get_Source_Info Message

Get_Source_Info消息由端口发送,以请求端口作为Source运行时的类型、最大功能和当前功能。端口应通过返回Source_Info消息进行响应(参见第6.4.11节“Source_Info消息”)。

24、Get_Revision Message

Get_Revision消息由端口使用SOP发送,以请求其端口合作伙伴支持的电力输送规范的修订和版本。
港口合作伙伴应通过返回修订消息(见第6.4.12节“修订消息”)作出回应。
Get_Revision消息也可以发送到电缆插头,以请求使用SOP’/SOP”对其支持的电力输送规范进行修订和版本。
有源电缆应通过返回修订消息进行响应

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
USB PDUSB Power Delivery)协议是一种新兴的USB充电协议,它可以实现高效的充电和电源管理。USB PD协议包含多个数据包类型,这些数据包类型有特定的作用。下面,我们来看一下USB PD协议包解析的相关内容。 USB PD协议包分为以下几种: 1.令牌数据包(Token Packet):用于传输令牌,包含控制信息。令牌数据包被用于在接收器和发送器之间进行流控制。 2.数据数据包(Data Packet):用于传输数据,包括可变数据和固定数据;能够传输的数据速率与USB 2.0协议相同,最高速率为480 Mbps。 3.扩展数据包(Extended Data Packet):用于传输大量数据,其数据传输速率可高达10 Gbps。 4.源能量数据包(Source Power Packet):用于传输有关源能量能力的信息,包括最大输出电流和最大输出电压。 5.信令数据包(Message Packet):用于传输控制信息和通知信息,比如设备的连接和断开等;该类数据包还包括对安全性的支持。 6.硬件数据包(Hardware Packet):用于传输外设信息,比如设备的类型和识别信息等。 通过对上述USB PD协议包的解析,我们可以了解到USB PD协议的具体传输方式和数据类型,这对于开发和应用USB PD协议的设备非常重要。同时,我们也可以看到,USB PD协议的高速传输和可靠性能大大提升了设备的充电和电源管理效率,为设备的使用提供了更好的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦成大佬的第N天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值