资讯详情

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

📅 2026/11/2 1:40:04 | 华诺云谱 👁 阅读
【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/AcuteLT8712 特有坑点调试高频踩坑整体调试决策树快速定位卡在哪一步总结以LT8712SX,DP转两路HDMI口为例前言黑屏先查 Enter Mode ACKACK 后无 AUX 查 SBU/MUXDPCD2020x77 训练成功0x00 查主链路/固件0x07/0x70 查单 laneHDCP 失败但 0x77 查 HDCP key本文以LT8712SXDP 转双路 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都带有上拉电阻Rpsource和sink确认充电角色可以分source和sink角色source (供电端:向外输出电源sink(受电端):接收电源负责端DP角色也可以分source和sink角色DRP表示dual roal power 双角色端口既能source供电也能当sink取电比如手机或者lt8712PD充电协议确认PD源端发送 Source capabilities(VBUS供应协商),从设备回复sink capabilities这个能力指的是在确认谁做source后source获取sink端的受电能力VDM 消息VDM是PD协议里厂商自定义消息跑在cc线上普通的PD消息只是负责充电功能VDM负责除usb外的替代模式(Alt Mode).如PD,PCIE等VDM Discovery IdentifyVDM Discovery SVIDs—— LT8712SX上报支持SVID0xFF01(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 LinkDP协议基本流程1、LT8712SX检测到显示器HPD为高LT8712SX发送Attention_H给到PC2、PC启动AUX写DPCD 0x100/101链路训练读DPCD0x2023、中途显示器重新上电切换分辨率HDMI HPD不变LT8712SX向PC发送Attention_H4、PC抓到HPD脉冲触发AUX重读EDID不会重跑CC VDMAUX读DPCD 0x00~0x0D读取LT8712的DP能力max lane、max rateAUX读EDIDI2C-over-AUX:LT8712缓存了后端HDMI显示器EDIDAUX写DPCD 0x100 LINK_BW_SET 设置链路速率AUX写DPCD 0x101 LANE_COUNT_SET 设置通道数1、2、4laneAUX写DPCD 0x102 使能TPS1训练序列关闭加扰PC发送Main Link TPS1训练码型AUX读 DPCD 0x202 Lane0、1 Link StatusAUX读 DPCD 0x203 Lane2、3 Link Status判断CR_DONE、EQ_DONE、SYMBOL_LOCK、LANE_ALIGN全部Lane状态位OK进入TPS2/3均衡训练训练完成DPCD 写0x102退出训练开启Scrambler若开启 HDCPLT8712 与 PC 做 HDCP 1.4/2.2 握手HDCP 失败同样黑屏但此时 DPCD 0x202 已为 0x77开始正常视频传输LT8712把DP主链路HDMI送给显示下面是 PCSource与 LT8712Sink之间从 CC 通信到 HDMI 输出的完整交互时序图包含关键报文与寄存器读写动作HDMI 显示器LT8712SXSink / UFPCC 总线PCSource / DFPHDMI 显示器LT8712SXSink / UFPCC 总线PCSource / DFP① CC 通信正反插与角色确认② VDM Alt Mode 协商SVID0xFF01MUX 切换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 CapabilitiesVBUS 协商Sink Capabilities 应答Discover Identity / SVIDs / Modes上报 SVID0xFF01、DP Alt Mode 能力Enter ModeVDM Type0x01, SVID0xFF01Enter Mode ACKAttention_HHPD 拉高AUX Read DPCD 0x00~0x0D能力AUX Read EDIDI2C-over-AUXAUX Write DPCD 0x100LINK_BW_SETAUX Write DPCD 0x101LANE_COUNT_SETAUX Write DPCD 0x102使能 TPS1Main Link 发送 TPS1 训练码型AUX Read DPCD 0x202Lane0/1 状态AUX Read DPCD 0x203Lane2/3 状态AUX Write DPCD 0x102退出训练开启 ScramblerHDCP 1.4/2.2 握手若开启转换 DP 主链路为 HDMI 信号出图成功DPCD核心寄存器表DPCD 地址名称用途0x0000DPCD_REVDP 版本LT8712 是 1.2值 0x120x0001MAX_LINK_RATE最大速率0x061.62G0x0A2.7G0x145.4G0x0002MAX_LANE_COUNT最大通道数LT8712 支持 2/4lane0x0100LINK_BW_SETSource 写入选定本次链路速率0x0101LANE_COUNT_SETSource 写入选定本次使用 lane 数量0x0102TRAINING_PATTERN_SETTPS 码型选择、scrambler 开关0x0103~0x0106LANE0~3 PRE_EMPH / SWING每 lane 电压摆幅、预加重配置0x0202LINK_STATUS LANE0LANE1Lane0、Lane1 训练状态寄存器你问的 DPCD2020x0203LINK_STATUS LANE2LANE3Lane2、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芯片 IDLT8712SX 固定值确认 I2C 通路是否正常、芯片是否上电0x0001FW_VERSIONR固件版本号如 0x10 v1.0判断是否老固件导致 DPCD202 误报 0x770x0002MUX_CTRLR/W0x00CC 直通0x01切 AUX0x02切 DP Main Link确认 Enter Mode ACK 后 MUX 是否真正切换0x0003HPD_CTRLR/W0x00HPD 低0x01HPD 高内部模拟手动拉高/拉低 HPD验证 PC 是否触发 AUX 重读0x0004HDCP_STATUSRbit0HDCP1.4 完成bit1HDCP2.2 完成DPCD2020x77 但黑屏时查 HDCP 握手是否完成0x0005HDCP_KEY_VALIDR0x00key 未烧录0x01key 有效HDCP 失败黑屏时优先确认 key 是否烧录0x0006LINK_TRAIN_STATER0x00未训练0x01TPS10x02TPS2/30x03完成对照 DPCD202确认 LT8712 内部训练状态机进度0x0007AUX_ERR_FLAGRbit0AUX 超时bit1AUX 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则是固件上报异常老固件坑点。DPCD2020x77 但黑屏读HDCP_STATUS若 bit0/bit1 均为 0说明卡在 HDCP 握手再读HDCP_KEY_VALID确认 key 是否烧录若 HDCP 正常则查 HDMI 侧输出非 DP 训练问题。AUX 读 DPCD 超时读AUX_ERR_FLAGbit01 说明 AUX 通路断查 SBU/MUXbit11 说明协议层 NAK查 LT8712 固件/状态机。HPD 相关黑屏读HPD_CTRL确认 LT8712 是否已拉高 HPD若为 0 而 DPCD202 正常说明 PC 根本没收到 HPD不会发起 AUX直接无信号。DPCD 0x202 详细 bit 定义再次整理抓包解码直接对照8bit 寄存器bit0LSBBit归属含义置 1 成功Bit0Lane0CR_DONE 时钟恢复完成1Bit1Lane0CHANNEL_EQ_DONE 通道均衡完成1Bit2Lane0SYMBOL_LOCKED 符号锁定1Bit3Lane0LANE_ALIGN_DONE 通道对齐完成1Bit4Lane1CR_DONE 时钟恢复完成1Bit5Lane1CHANNEL_EQ_DONE 通道均衡完成1Bit6Lane1SYMBOL_LOCKED 符号锁定1Bit7Lane1LANE_ALIGN_DONE 通道对齐完成1✅ 正常训练成功Lane0Lane1 全部 OK读到值0x770x77 0b01110111bit0~3 0b0111Lane0 CR、EQ、SYM_LOCK 完成对齐完成bit4~7 0b0111Lane1 CR、EQ、SYM_LOCK 完成对齐完成常见失败值0x00CR 全部失败AUX 通但高速主链路没抓到时钟查 MUX、DP 差分、LT8712 供电 / 固件0x07Lane0 成功Lane1 CR 失败单 lane 训练0x70Lane1 成功Lane0 失败CC 消息关键 VDM 报文抓包过滤关键字Ellisys/Acute 直接搜DP Alt Mode VDM SVID0xFF01Discover IdentityLT8712 上报自身 IDDiscover SVIDs返回支持 SVID 列表包含 0xFF01Discover Modes返回 DP Alt Mode Mode1 能力lane 映射Type‑C 引脚分配Enter ModePC 发送 VDMLT8712 确认 ACK进入 DP Alt Mode切换 MUX这一步失败的话后面完全不会有 AUX/DPCD 交互直接无信号。注意LT8712 是 UFPCC 上 LT8712 负责 VDM 应答PC 是 DFP发起 VDM。Ellisys/Acute 抓包实战Enter Mode 请求与 ACK 字段级解析以 PCDFP发起、LT8712UFP应答的Enter Mode为例抓包仪上按SVID0xFF01过滤即可定位到这两条报文。下面逐字段拆解并标注每个字段对应 LT8712 的哪个行为。① PC → LT8712Enter Mode 请求DFP 发起字段值含义对应 LT8712 行为VDM Type0x01Enter Mode请求进入指定 Alt ModeLT8712 收到后校验自身是否支持该 ModeCommand Code0x06Enter Mode与 VDM Type 配合标识这是一条进入命令触发 LT8712 内部状态机进入 DP Alt Mode 流程SVID0xFF01DP Alt Mode 的厂商 IDLT8712 比对自身支持的 SVID 列表确认是 DP Alt ModeObject Position0x01请求进入 Mode1DP Alt Mode 的 lane 映射配置LT8712 按 Mode1 配置切换 MUXSUB1/SUB2 → AUX_P/AUX_N高速差分切为 DP Main LinkVDO0x0001Mode1 能力描述DP 引脚分配、lane 数LT8712 依据 VDO 决定 lane 映射与引脚复用方式② LT8712 → PCEnter Mode ACKUFP 应答字段值含义对应 LT8712 行为VDM Type0x01Enter Mode应答同一命令类型表示 LT8712 已处理该 Enter Mode 请求Command Code0x06Enter Mode与请求一致确认 LT8712 已进入 DP Alt Mode 状态机SVID0xFF01应答同一 SVID确认 LT8712 接受 DP Alt ModeObject 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 通路调试抓包判断逻辑你定位黑屏 / 无信号 / 训练失败CC 层有没有成功收到Enter Mode ACK无 → 卡在 PD/Alt Mode 协商DP MUX 没切AUX 不会出现HPDLT8712 是否拉 HPD 高PC 检测 HPD 才会发起 AUX 读 DPCD/EDIDAUX 读 DPCD 0x00~0x0DPC 能否读到 LT8712 的 DP 能力读超时 AUX 断线SBU 问题写 0x100/0x101PC 配置速率和 laneLT8712 是否 ACK写 TPS1发主链路训练码 → 读 DPCD0x202读到 0x77Lane0/1 训练 OK继续 TPS2/3反复读 DPCD202 一直为 0高速 DP 主链路时钟恢复失败优先查 LT8712 固件、Type‑C 走线、MUX 切换训练失败后 PC 会降级重试降 lane4→2→1或降速率5.4G→2.7G→1.62G抓包注意观察 LINK_BW_SET / LANE_COUNT_SET 是否被改写AUX 读 EDIDI2C-over-AUX读超时 DDC 通路问题查 SBU 差分、LT8712 到 HDMI 的 DDC 走线EDID 读不到 PC 会直接报无信号链路训练全部完成后LT8712 再做 HDMI 侧时序、HDCP 握手推画面给显示器黑屏 / 无信号故障排查速查表故障现象排查步骤关键寄存器 / 报文特征LT8712 侧优先检查项CC 无 Enter Mode ACK① 抓包过滤 SVID0xFF01确认是否发出 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 反复读为 0x00CR 全部失败固件、DP 差分走线、MUX 切换、供电DPCD202 0x07① 确认 Lane0 训练 OK、Lane1 CR 失败② 检查 Lane1 差分走线与预加重配置③ 观察 PC 是否降级为单 lane 重试0x07 Lane0 成功、Lane1 失败LANE_COUNT_SET 可能被改写为 1Lane1 走线、PRE_EMPH/SWING 配置、固件HDCP 失败黑屏① 确认链路训练已完成DPCD2020x77② 抓包看 HDCP 1.4/2.2 握手是否完成③ 检查 HDCP key 是否烧录DPCD202 已为 0x77但 HDCP 握手无 ACK / 超时HDCP key、握手时序、固件 HDCP 支持抓包仪触发建议Ellisys CTA/Acute触发点 1CC 上 VDM Enter Mode触发点 2AUX Read DPCD 0x202你最关心的寄存器同步采集CC1、CC2、SBU1、SBU2、HPD时间轴对齐方便看 CC Alt Mode 完成之后 AUX 才开始跑 DPCDLT8712 特有坑点调试高频踩坑LT8712 固件版本会影响 DPCD 返回值老固件链路训练状态上报异常DPCD202 误报 0x77 但实际锁不住LT8712 内部 EDID 缓存PC 读到的 EDID 是 LT8712 缓存 HDMI 显示器 EDID不是 DP sink 原生 EDID4K60 场景LT8712 DP1.2 最多 2lane 5.4G如果 EDID 报 4k60PC 会尝试 2lane 训练DPCD0x202 就是 Lane0/1 状态HPD 是 LT8712 内部模拟后端 HDMI 显示器拔插LT8712 会重新 assert HPD触发整套 DPCD 链路训练重跑整体调试决策树快速定位卡在哪一步否是否是否是0x770x00/0x07/0x70失败成功CC 层收到 Enter Mode ACK?卡在 PD/Alt Mode 协商查 CC 电平、VDM、MUXHPD 是否拉高?查 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 的通信链路核心要点可归纳为三层CC 通信层先通过 CC1/CC2 电平确认正反插与 source/sink 角色再完成 PD 充电协商随后通过 VDMSVID0xFF01完成 DP Alt Mode 协商Enter Mode ACK是 MUX 切换、AUX 通路建立的前提——这一步失败后面不会有任何 DPCD 交互直接无信号。DPCD 训练层PC 通过 AUX 写 0x100/0x101 配置速率与 lane发 TPS1 训练码型后读 DPCD 0x202 判断训练结果。0x77表示 Lane0/1 全部训练成功0x00表示 CR 全部失败查 MUX/差分/供电/固件0x07/0x70表示单 lane 失败查对应 lane 走线与预加重配置。故障排查层按「CC → HPD → AUX → 训练 → HDCP」的顺序逐级定位配合 Ellisys/Acute 抓包仪按 SVID0xFF01、DPCD 0x202 触发可快速锁定黑屏/无信号卡在哪一步。注意 LT8712 固件版本、内部 EDID 缓存、HPD 模拟等特有坑点。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑