这是目录
- 写在前面
- 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端电阻
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切换,流程如下: