这是目录
- 写在前面
- 1、概览
- 2、信息
- 2.1 消息结构
- 2.1.1 消息头
 
 
- 3、soft or hard reset
- 1、soft reset
- 2、hard reset
 
- 3、TYPE-C相关握手
- 3.1、CC线的状态
- 3.1.1、默认电源值
- 3.2 TYPE-C设备握手
- 协商过程
- 确定握手类型
- DRP和DRP设备握手
 
 
写在前面
1、记录自己的学习PD协议层的文章
1、概览
1、关于如何构造和使用消息的详细信息。
 2、计时器和超时值的使用。
 3、使用消息和重试计数器。
 4、重置操作。
 5、错误处理。
 6、状态行为
2、信息
三种信息
 1、控制消息–16 bit
 2、数据消息–48-240 bit
 3、扩展消息–
 适配器和电池信息
 安全
 固件更新
 自定义
2.1 消息结构
2.1.1 消息头

 15bit:1位扩展字段应设置为0以表示控制消息或数据消息,并设置为1以表示扩展消息。扩展字段应适用于所有SOP*数据包类型。
 14-12:当扩展为0时,此字段为0表示控制,非0表示数据。
 8:
 Port Power Role:
 0b Sink
 1b Source
 Cable Plug:
 • 0b Message originated from a DFP or UFP.
 • 1b Message originated from a Cable Plug or VPD
 5:
 Port Data Role:
 • 0b UFP
 • 1b DFP
3、soft or hard reset
reset发生的条件
 
1、soft reset
规格书里明确指出,soft reset 不能影响VBUS,‘“Voltage and current remain unchanged.”
 
但是如果软复位消息失败了,就会触发hard reset,硬件复位会导致VBUS的改变。
 
2、hard reset
hard reset会发生在和power相关的消息传递期间。
 src发起的hard reset时序,
 
snk发起的hard reset时序,
 
3、TYPE-C相关握手
TYPEC相关的握手在另一个文档中:
 在连接中 https://www.usb.org/documents 下载下列文档:
 
 
3.1、CC线的状态
CC线默认的电平表示当前设备的角色:如图
 
 对于SRC.open,CC需要open或者上拉,这里VOPEN是高于1.65V的,这是硬性指标.VRa需要根据不同的电流状态配置,如下图: 
 对于snk角色CC状态:
 
 SNK电平
 
3.1.1、默认电源值
除了PD3.0协议握手电流以外,没有握手时,可以通过CC的Rp电平确定source的电流:
  snk端电阻
snk端电阻
 
3.2 TYPE-C设备握手
协商过程
具体的协商过程如图:
 

 PD_PHY芯片就是按照这套流程来做的。
确定握手类型
其实一直有个疑问,type-c设备,DRP和DRP的设备握手的,如何实现的?
 假设:如果当前设备是try_snk,对方是try_src,两个设备都在toggling,假设try_snk的设备刚好是src,try_snk设备刚好是snk,这不就反过来了吗??src和snk是通过高低电平判断的,但是在握手协商的过程中,不完全是这样。
 答案:是根据高低电平来的,但不完全是。
其实不然,传统意义上如果设备当前是src那么CC需要拉高,如果是snk,CC需要拉低,。如果是DRP,就需要来回切换CC,如下图:
 
 可以看出CC一直在来回切换,放大:
 
 可以看出周期内,有高低电平来回变化,这就是toggling。
DRP和DRP设备握手
看图:两个DRP设备是通过高低电平来确定自身的角色的,但不是由某个时刻的高低电平决定。
 
  具体的时间由下表决定:
具体的时间由下表决定:
 
 当有设备插入后,状态需要从unattached.snk切换,流程如下:
 