【type-c】DP协议通信过程

发布时间:2026/11/2 1:40:01
【type-c】DP协议通信过程

DP协议通信过程

  • 前言
  • CC通信
    • cc1/2正反插确认
    • source和sink确认
    • PD充电协议确认
    • VDM 消息
  • DP协议
    • 基本流程
    • DPCD核心寄存器表
    • LT8712 内部寄存器速查表(调试高频,配合 DPCD 0x202 定位黑屏)
    • DPCD 0x202 详细 bit 定义(再次整理,抓包解码直接对照)
    • CC 消息关键 VDM 报文(抓包过滤关键字,Ellisys/Acute 直接搜)
    • Ellisys/Acute 抓包实战:Enter Mode 请求与 ACK 字段级解析
    • 调试抓包判断逻辑(你定位黑屏 / 无信号 / 训练失败)
    • 黑屏 / 无信号故障排查速查表
    • 抓包仪触发建议(Ellisys CTA/Acute)
    • LT8712 特有坑点(调试高频踩坑)
    • 整体调试决策树(快速定位卡在哪一步)
    • 总结

以LT8712SX,DP转两路HDMI口为例

前言

  • 黑屏先查 Enter Mode ACK
  • ACK 后无 AUX 查 SBU/MUX
  • DPCD202=0x77 训练成功
  • 0x00 查主链路/固件
  • 0x07/0x70 查单 lane
  • HDCP 失败但 0x77 查 HDCP key

本文以LT8712SX(DP 转双路 HDMI)为例,系统讲解 Type-C/DP 的完整通信过程:从 CC 线上的 PD 协商、VDM Alt Mode 建立,到 AUX 读 DPCD、链路训练,再到黑屏/无信号故障的抓包定位方法。内容面向正在调试 DP 转 HDMI 方案的硬件与嵌入式工程师,重点给出可直接对照抓包仪(Ellisys/Acute)的寄存器与报文特征,帮助你在实际项目中快速定位协商失败点。

CC通信

cc1/2正反插确认

如何确认哪根cc线进行通信,
source依据cc1和cc2的电平决定哪个cc线用于BMC通信,
保持高电平5v左右cc一般未使用,如果线材带有e-Marker芯片,即给这颗芯片供电
电压在1.68v左右,用于cc通信,BMC通信
原理:
sink的cc1或cc2带有下拉电阻Rd,而source的cc1和cc2都带有上拉电阻Rp

source和sink确认

充电角色可以分
source和sink角色
source (供电端):向外输出电源
sink(受电端):接收电源,负责端
DP角色也可以分
source和sink角色

DRP表示dual roal power 双角色端口,既能source供电,也能当sink取电
比如手机,或者lt8712

PD充电协议确认

PD源端发送 Source capabilities(VBUS供应协商),
从设备回复sink capabilities
这个能力指的是在确认谁做source后,source获取sink端的受电能力

VDM 消息

VDM是PD协议里厂商自定义消息,跑在cc线上,
普通的PD消息只是负责充电功能,VDM负责除usb外的替代模式(Alt Mode).如PD,PCIE等
VDM Discovery Identify
VDM Discovery SVIDs—— LT8712SX上报支持SVID=0xFF01(DP Alt Mode)
VDM Discovery Modes——LT8712SX上报DP Alt Mode 能力(lane 配置)
VDM Enter Mode:PC发送进去DP Alt Mode命令
LT8712SX内部MUX切换
:SUB1/SUB2——>AUX_P/AUX_N
高速差分脚切换为DP Main Link

DP协议

基本流程

1、LT8712SX检测到显示器HPD为高,LT8712SX发送Attention_H给到PC
2、PC启动AUX,写DPCD 0x100/101,链路训练,读DPCD0x202
3、中途,显示器重新上电,切换分辨率,HDMI HPD不变,LT8712SX向PC发送Attention_H
4、PC抓到HPD脉冲,触发AUX重读EDID,不会重跑CC VDM

AUX读DPCD 0x00~0x0D:读取LT8712的DP能力(max lane、max rate)
AUX读EDID(I2C-over-AUX):LT8712缓存了后端HDMI显示器EDID
AUX写DPCD 0x100 LINK_BW_SET 设置链路速率
AUX写DPCD 0x101 LANE_COUNT_SET 设置通道数(1、2、4lane)
AUX写DPCD 0x102 使能TPS1训练序列,关闭加扰
PC发送Main Link TPS1训练码型
AUX读 DPCD 0x202 (Lane0、1 Link Status)
AUX读 DPCD 0x203 (Lane2、3 Link Status)
判断CR_DONE、EQ_DONE、SYMBOL_LOCK、LANE_ALIGN
全部Lane状态位OK,进入TPS2/3均衡训练
训练完成,DPCD 写0x102退出训练,开启Scrambler
若开启 HDCP,LT8712 与 PC 做 HDCP 1.4/2.2 握手;HDCP 失败同样黑屏,但此时 DPCD 0x202 已为 0x77
开始正常视频传输,LT8712把DP主链路HDMI送给显示

下面是 PC(Source)与 LT8712(Sink)之间从 CC 通信到 HDMI 输出的完整交互时序图,包含关键报文与寄存器读写动作:

HDMI 显示器LT8712SX(Sink / UFP)CC 总线PC(Source / DFP)HDMI 显示器LT8712SX(Sink / UFP)CC 总线PC(Source / DFP)① CC 通信:正反插与角色确认② VDM Alt Mode 协商(SVID=0xFF01)MUX 切换:SUB1/SUB2 → AUX_P/AUX_N高速差分切为 DP Main Link③ HPD 与 AUX 读 DPCD④ 链路训练(写 DPCD + TPS)判断 CR_DONE / EQ_DONE / SYMBOL_LOCK / LANE_ALIGN全部 OK → 进入 TPS2/3 均衡训练⑤ HDCP 与 HDMI 输出CC1/CC2 电平检测(Rp/Rd)确认正反插、source/sink 角色PD Source Capabilities(VBUS 协商)Sink Capabilities 应答Discover Identity / SVIDs / Modes上报 SVID=0xFF01、DP Alt Mode 能力Enter Mode(VDM Type=0x01, SVID=0xFF01)Enter Mode ACKAttention_H(HPD 拉高)AUX Read DPCD 0x00~0x0D(能力)AUX Read EDID(I2C-over-AUX)AUX Write DPCD 0x100(LINK_BW_SET)AUX Write DPCD 0x101(LANE_COUNT_SET)AUX Write DPCD 0x102(使能 TPS1)Main Link 发送 TPS1 训练码型AUX Read DPCD 0x202(Lane0/1 状态)AUX Read DPCD 0x203(Lane2/3 状态)AUX Write DPCD 0x102(退出训练,开启 Scrambler)HDCP 1.4/2.2 握手(若开启)转换 DP 主链路为 HDMI 信号出图成功

DPCD核心寄存器表

DPCD 地址名称用途
0x0000DPCD_REVDP 版本(LT8712 是 1.2,值 = 0x12)
0x0001MAX_LINK_RATE最大速率:0x06=1.62G;0x0A=2.7G;0x14=5.4G
0x0002MAX_LANE_COUNT最大通道数,LT8712 支持 2/4lane
0x0100LINK_BW_SETSource 写入,选定本次链路速率
0x0101LANE_COUNT_SETSource 写入,选定本次使用 lane 数量
0x0102TRAINING_PATTERN_SETTPS 码型选择、scrambler 开关
0x0103~0x0106LANE0~3 PRE_EMPH / SWING每 lane 电压摆幅、预加重配置
0x0202LINK_STATUS LANE0+LANE1Lane0、Lane1 训练状态寄存器(你问的 DPCD202)
0x0203LINK_STATUS LANE2+LANE3Lane2、Lane3 训练状态寄存器
0x0204LANE0~1 ADJUST_REQUESTSink 反馈均衡调整请求
0x0205LANE2~3 ADJUST_REQUESTLane2/3 均衡请求

bler,进入正常视频传输

调试要点:抓包时看到 DPCD 0x102 从 0x01 → 0x02/0x03 → 0x00 的变化,就说明训练在正常推进;若一直停在 0x01 且 DPCD202 为 0x00,说明 CR 阶段就失败了。

LT8712 内部寄存器速查表(调试高频,配合 DPCD 0x202 定位黑屏)

以下为 LT8712SX 内部寄存器(I2C 从机地址 0x98/0x9A 等,具体以数据手册为准),用于在 DPCD 0x202 之外进一步定位黑屏根因。地址为示意,实际以 Lontium 数据手册为准。

地址名称读写类型典型值 / 含义调试用途
0x0000CHIP_IDR芯片 ID,LT8712SX 固定值确认 I2C 通路是否正常、芯片是否上电
0x0001FW_VERSIONR固件版本号(如 0x10 = v1.0)判断是否老固件导致 DPCD202 误报 0x77
0x0002MUX_CTRLR/W0x00=CC 直通;0x01=切 AUX;0x02=切 DP Main Link确认 Enter Mode ACK 后 MUX 是否真正切换
0x0003HPD_CTRLR/W0x00=HPD 低;0x01=HPD 高(内部模拟)手动拉高/拉低 HPD,验证 PC 是否触发 AUX 重读
0x0004HDCP_STATUSRbit0=HDCP1.4 完成;bit1=HDCP2.2 完成DPCD202=0x77 但黑屏时,查 HDCP 握手是否完成
0x0005HDCP_KEY_VALIDR0x00=key 未烧录;0x01=key 有效HDCP 失败黑屏时,优先确认 key 是否烧录
0x0006LINK_TRAIN_STATER0x00=未训练;0x01=TPS1;0x02=TPS2/3;0x03=完成对照 DPCD202,确认 LT8712 内部训练状态机进度
0x0007AUX_ERR_FLAGRbit0=AUX 超时;bit1=AUX NAKAUX 读 DPCD 超时时,定位是通路断还是协议错
0x0008EDID_CRCR缓存 EDID 的 CRC 校验值确认 LT8712 内部 EDID 缓存是否被正确写入

这些寄存器如何配合 DPCD 0x202 定位黑屏:

DPCD 0x202 是 PC 视角的「训练结果」,而 LT8712 内部寄存器是「芯片侧的真实状态」,两者对照才能快速收敛根因:

  • DPCD202 恒为 0x00:先读LINK_TRAIN_STATE,若为 0x00 说明 LT8712 根本没进入训练,查MUX_CTRL是否切到 DP Main Link、CHIP_ID是否正常;若LINK_TRAIN_STATE已到 0x03 但 DPCD202 仍为 0x00,则是固件上报异常(老固件坑点)。
  • DPCD202=0x77 但黑屏:读HDCP_STATUS,若 bit0/bit1 均为 0,说明卡在 HDCP 握手,再读HDCP_KEY_VALID确认 key 是否烧录;若 HDCP 正常,则查 HDMI 侧输出(非 DP 训练问题)。
  • AUX 读 DPCD 超时:读AUX_ERR_FLAG,bit0=1 说明 AUX 通路断(查 SBU/MUX),bit1=1 说明协议层 NAK(查 LT8712 固件/状态机)。
  • HPD 相关黑屏:读HPD_CTRL确认 LT8712 是否已拉高 HPD;若为 0 而 DPCD202 正常,说明 PC 根本没收到 HPD,不会发起 AUX,直接无信号。

DPCD 0x202 详细 bit 定义(再次整理,抓包解码直接对照)

8bit 寄存器,bit0=LSB

Bit归属含义置 1 = 成功
Bit0Lane0CR_DONE 时钟恢复完成1
Bit1Lane0CHANNEL_EQ_DONE 通道均衡完成1
Bit2Lane0SYMBOL_LOCKED 符号锁定1
Bit3Lane0LANE_ALIGN_DONE 通道对齐完成1
Bit4Lane1CR_DONE 时钟恢复完成1
Bit5Lane1CHANNEL_EQ_DONE 通道均衡完成1
Bit6Lane1SYMBOL_LOCKED 符号锁定1
Bit7Lane1LANE_ALIGN_DONE 通道对齐完成1

✅ 正常训练成功(Lane0+Lane1 全部 OK)读到值:0x77

  • 0x77 = 0b01110111
  • bit0~3 = 0b0111(Lane0 CR、EQ、SYM_LOCK 完成;对齐完成)
  • bit4~7 = 0b0111(Lane1 CR、EQ、SYM_LOCK 完成;对齐完成)

常见失败值:

  • 0x00:CR 全部失败,AUX 通但高速主链路没抓到时钟;查 MUX、DP 差分、LT8712 供电 / 固件
  • 0x07:Lane0 成功,Lane1 CR 失败,单 lane 训练
  • 0x70:Lane1 成功,Lane0 失败

CC 消息关键 VDM 报文(抓包过滤关键字,Ellisys/Acute 直接搜)

DP Alt Mode VDM SVID=0xFF01

  1. Discover Identity:LT8712 上报自身 ID
  2. Discover SVIDs:返回支持 SVID 列表,包含 0xFF01
  3. Discover Modes:返回 DP Alt Mode Mode1 能力(lane 映射,Type‑C 引脚分配)
  4. Enter Mode:PC 发送 VDM,LT8712 确认 ACK,进入 DP Alt Mode,切换 MUX

这一步失败的话,后面完全不会有 AUX/DPCD 交互,直接无信号。
注意:LT8712 是 UFP,CC 上 LT8712 负责 VDM 应答;PC 是 DFP,发起 VDM。

Ellisys/Acute 抓包实战:Enter Mode 请求与 ACK 字段级解析

以 PC(DFP)发起、LT8712(UFP)应答的Enter Mode为例,抓包仪上按SVID=0xFF01过滤即可定位到这两条报文。下面逐字段拆解,并标注每个字段对应 LT8712 的哪个行为。

① PC → LT8712:Enter Mode 请求(DFP 发起)

字段值含义对应 LT8712 行为
VDM Type0x01(Enter Mode)请求进入指定 Alt ModeLT8712 收到后校验自身是否支持该 Mode
Command Code0x06(Enter Mode)与 VDM Type 配合,标识这是一条进入命令触发 LT8712 内部状态机进入 DP Alt Mode 流程
SVID0xFF01DP Alt Mode 的厂商 IDLT8712 比对自身支持的 SVID 列表,确认是 DP Alt Mode
Object Position0x01请求进入 Mode1(DP Alt Mode 的 lane 映射配置)LT8712 按 Mode1 配置切换 MUX:SUB1/SUB2 → AUX_P/AUX_N,高速差分切为 DP Main Link
VDO0x0001Mode1 能力描述(DP 引脚分配、lane 数)LT8712 依据 VDO 决定 lane 映射与引脚复用方式

② LT8712 → PC:Enter Mode ACK(UFP 应答)

字段值含义对应 LT8712 行为
VDM Type0x01(Enter Mode)应答同一命令类型表示 LT8712 已处理该 Enter Mode 请求
Command Code0x06(Enter Mode)与请求一致确认 LT8712 已进入 DP Alt Mode 状态机
SVID0xFF01应答同一 SVID确认 LT8712 接受 DP Alt Mode
Object Position0x01应答同一 Mode确认 LT8712 已按 Mode1 完成 MUX 切换
ACK/NAKACK应答结果ACK = MUX 已切换,后续 AUX/DPCD 才会出现;NAK = LT8712 拒绝,查固件/能力配置

实战定位要点:

  • 抓包时若只看到请求、没有 ACK → LT8712 未应答,卡在 VDM 层,查 CC 电平、LT8712 固件是否支持 0xFF01
  • 若 ACK 里 Object Position 与请求不一致 → LT8712 拒绝了 Mode1,查固件 lane 配置
  • ACK 之后才应出现 AUX 读 DPCD 0x00~0x0D;若 ACK 后无 AUX → MUX 未真正切换,查 SUB/SBU 通路

调试抓包判断逻辑(你定位黑屏 / 无信号 / 训练失败)

  1. CC 层:有没有成功收到Enter Mode ACK
    • 无 → 卡在 PD/Alt Mode 协商,DP MUX 没切,AUX 不会出现
  2. HPD:LT8712 是否拉 HPD 高;PC 检测 HPD 才会发起 AUX 读 DPCD/EDID
  3. AUX 读 DPCD 0x00~0x0D:PC 能否读到 LT8712 的 DP 能力,读超时 = AUX 断线(SBU 问题)
  4. 写 0x100/0x101:PC 配置速率和 lane;LT8712 是否 ACK
  5. 写 TPS1,发主链路训练码 → 读 DPCD0x202
    • 读到 0x77:Lane0/1 训练 OK;继续 TPS2/3
    • 反复读 DPCD202 一直为 0:高速 DP 主链路时钟恢复失败,优先查 LT8712 固件、Type‑C 走线、MUX 切换
    • 训练失败后 PC 会降级重试:降 lane(4→2→1)或降速率(5.4G→2.7G→1.62G),抓包注意观察 LINK_BW_SET / LANE_COUNT_SET 是否被改写
  6. AUX 读 EDID(I2C-over-AUX):读超时 = DDC 通路问题,查 SBU 差分、LT8712 到 HDMI 的 DDC 走线;EDID 读不到 PC 会直接报无信号
  7. 链路训练全部完成后,LT8712 再做 HDMI 侧时序、HDCP 握手,推画面给显示器

黑屏 / 无信号故障排查速查表

故障现象排查步骤关键寄存器 / 报文特征LT8712 侧优先检查项
CC 无 Enter Mode ACK① 抓包过滤 SVID=0xFF01,确认是否发出 Enter Mode 请求;② 检查 CC1/CC2 电平与 BMC 通信是否正常;③ 确认 LT8712 固件是否支持 0xFF01只有请求、无 ACK;无后续 AUX/DPCD 交互固件版本、CC 电平、MUX 是否未切换
AUX 读 DPCD 超时① 确认 HPD 已拉高;② 抓包看 AUX 是否有响应;③ 检查 SBU1/SBU2 差分通路AUX Read DPCD 0x00~0x0D 无 ACK / 超时SBU 走线、MUX 是否切到 AUX_P/AUX_N、供电
DPCD202 恒为 0x00① 确认已写 0x100/0x101 并发送 TPS1;② 抓包看主链路是否发出训练码型;③ 检查高速差分通路DPCD 0x202 反复读为 0x00,CR 全部失败固件、DP 差分走线、MUX 切换、供电
DPCD202 = 0x07① 确认 Lane0 训练 OK、Lane1 CR 失败;② 检查 Lane1 差分走线与预加重配置;③ 观察 PC 是否降级为单 lane 重试0x07 = Lane0 成功、Lane1 失败;LANE_COUNT_SET 可能被改写为 1Lane1 走线、PRE_EMPH/SWING 配置、固件
HDCP 失败黑屏① 确认链路训练已完成(DPCD202=0x77);② 抓包看 HDCP 1.4/2.2 握手是否完成;③ 检查 HDCP key 是否烧录DPCD202 已为 0x77,但 HDCP 握手无 ACK / 超时HDCP key、握手时序、固件 HDCP 支持

抓包仪触发建议(Ellisys CTA/Acute)

  • 触发点 1:CC 上 VDM Enter Mode
  • 触发点 2:AUX Read DPCD 0x202(你最关心的寄存器)
  • 同步采集:CC1、CC2、SBU1、SBU2、HPD,时间轴对齐,方便看 CC Alt Mode 完成之后 AUX 才开始跑 DPCD

LT8712 特有坑点(调试高频踩坑)

  1. LT8712 固件版本会影响 DPCD 返回值;老固件链路训练状态上报异常,DPCD202 误报 0x77 但实际锁不住
  2. LT8712 内部 EDID 缓存:PC 读到的 EDID 是 LT8712 缓存 HDMI 显示器 EDID,不是 DP sink 原生 EDID
  3. 4K@60 场景:LT8712 DP1.2 最多 2lane 5.4G;如果 EDID 报 4k60,PC 会尝试 2lane 训练,DPCD0x202 就是 Lane0/1 状态
  4. HPD 是 LT8712 内部模拟,后端 HDMI 显示器拔插,LT8712 会重新 assert HPD,触发整套 DPCD 链路训练重跑

整体调试决策树(快速定位卡在哪一步)

否

是

否

是

否

是

0x77

0x00/0x07/0x70

失败

成功

CC 层:收到 Enter Mode ACK?

卡在 PD/Alt Mode 协商,查 CC 电平、VDM、MUX

HPD 是否拉高?

查 LT8712 到 PC 的 HPD 通路

AUX 读 DPCD 0x00~0x0D 是否成功?

AUX 断线,查 SBU 差分

写 0x100/0x101 配置速率与 lane

发 TPS1,读 DPCD 0x202

训练 OK,继续 TPS2/3

训练失败,PC 降级重试或查主链路/MUX/固件

HDCP 握手(若开启)

HDCP 失败黑屏,查 HDCP key/握手时序

LT8712 转 HDMI 出图

总结

本文以 LT8712SX 为例,完整梳理了 DP 转 HDMI 的通信链路,核心要点可归纳为三层:

  1. CC 通信层:先通过 CC1/CC2 电平确认正反插与 source/sink 角色,再完成 PD 充电协商;随后通过 VDM(SVID=0xFF01)完成 DP Alt Mode 协商,Enter Mode ACK是 MUX 切换、AUX 通路建立的前提——这一步失败,后面不会有任何 DPCD 交互,直接无信号。
  2. DPCD 训练层:PC 通过 AUX 写 0x100/0x101 配置速率与 lane,发 TPS1 训练码型后读 DPCD 0x202 判断训练结果。0x77表示 Lane0/1 全部训练成功;0x00表示 CR 全部失败(查 MUX/差分/供电/固件);0x07/0x70表示单 lane 失败(查对应 lane 走线与预加重配置)。
  3. 故障排查层:按「CC → HPD → AUX → 训练 → HDCP」的顺序逐级定位,配合 Ellisys/Acute 抓包仪按 SVID=0xFF01、DPCD 0x202 触发,可快速锁定黑屏/无信号卡在哪一步。注意 LT8712 固件版本、内部 EDID 缓存、HPD 模拟等特有坑点。