USB --- PD协商

news/2025/11/11 15:27:07/文章来源:https://www.cnblogs.com/god-of-death/p/19210519

 USB PD 从机(Sink)的状态机流程(SNK_STARTUP→DISCOVERY→...→SNK_READY)是从机(Sink)主动发起并主导,配合主机(Source)响应完成的协商过程,每个状态的切换由特定消息交互或超时机制触发。以下是各步骤的详细说明:

1. SNK_STARTUP(从机启动)

  • 角色:从机(Sink)主动初始化。
  • 触发条件:从机物理连接到主机(如插入 USB-C 线缆),硬件检测到 VBUS 电压(或 CC 线信号)后进入该状态。
  • 行为:从机初始化 PD 控制器(如 TCPM 模块),配置底层硬件(如 CC 线检测电路),准备进入协议协商。
  • 状态切换触发:初始化完成后,自动进入 SNK_DISCOVERY 状态。

2. SNK_DISCOVERY(从机发现)

  • 角色:从机主动发起,探测主机是否支持 PD 协议。
  • 触发条件:从 SNK_STARTUP 完成后进入。
  • 行为:
    • 从机通过 CC 线发送 PD_CTRL_GET_SOURCE_CAP 消息(请求主机发送供电能力)。
    • 若主机支持 PD,会响应 PD_DATA_SOURCE_CAP 消息(包含主机的电压、电流等供电能力)。
    • 若超时未收到响应,可能回退到非 PD 模式(如 USB 2.0/3.0 标准供电)。
  • 状态切换触发:收到主机的 SOURCE_CAP 消息后,进入 SNK_WAIT_CAPABILITIES 状态。

3. SNK_WAIT_CAPABILITIES(等待主机能力)

  • 角色:从机等待并解析主机的完整能力集。
  • 触发条件:从 SNK_DISCOVERY 收到主机首条 SOURCE_CAP 消息后进入。
  • 行为:
    • 主机可能分多条消息发送完整供电能力(若能力较多,需分片传输),从机在此状态等待所有分片并整合。
    • 若主机只发送一条 SOURCE_CAP 消息,此状态会快速完成。
  • 状态切换触发:从机成功解析主机完整的供电能力集后,进入 SNK_NEGOTIATE_CAPABILITIES 状态。

4. SNK_NEGOTIATE_CAPABILITIES(协商供电能力)

  • 角色:从机主动选择供电方案,发起协商。
  • 触发条件:从机解析完主机能力集后进入。
  • 行为:
    • 从机根据自身需求(如所需电压、电流),从主机能力集中选择一个方案,发送 PD_CTRL_REQUEST 消息(包含选中的方案索引)。
    • 主机收到请求后,若同意,会返回 PD_CTRL_ACCEPT 消息;若拒绝,返回 REJECT 或不响应(超时)。
  • 状态切换触发:收到主机的 ACCEPT 消息后,进入 SNK_TRANSITION_SINK 状态;若收到 REJECT 或超时,可能重新协商或退出 PD 模式。

5. SNK_TRANSITION_SINK(切换供电状态)

  • 角色:主机执行供电切换,从机等待确认。
  • 触发条件:从机收到主机的 ACCEPT 消息后进入。
  • 行为:
    • 主机收到 ACCEPT 后,开始调整输出电压 / 电流(切换到协商的供电方案)。
    • 从机在此状态等待主机完成供电切换,并准备接收新电压。
    • 主机完成切换后,发送 PD_CTRL_PS_RDY 消息(Power Supply Ready,供电就绪)。
  • 状态切换触发:收到主机的 PS_RDY 消息后,进入 SNK_READY 状态;若超时未收到,可能触发重试或报错。

6. SNK_READY(从机就绪)

  • 角色:双方完成协商,进入稳定供电状态。
  • 触发条件:从机收到主机的 PS_RDY 消息后进入。
  • 行为:
    • 从机确认主机供电稳定,开始正常工作(如设备充电、数据传输)。
    • 双方可能周期性发送 PD_CTRL_PING 消息确认连接(可选,取决于协议配置)。
  • 状态切换触发:若检测到断开(如 VBUS 掉电、CC 线信号丢失),回退到 SNK_UNATTACHED 状态;若需要重新协商(如从机需求变化),可能触发重新进入 DISCOVERY 流程。

总结:核心交互逻辑

  • 主导方:从机(Sink)全程主动发起请求(GET_SOURCE_CAP、REQUEST),驱动状态机推进。
  • 主机(Source) 仅被动响应从机的请求(返回 CAP、ACCEPT、PS_RDY),不主动触发状态切换。
  • 关键消息:GET_SOURCE_CAP(从机→主机)、SOURCE_CAP(主机→从机)、REQUEST(从机→主机)、ACCEPT(主机→从机)、PS_RDY(主机→从机),这五条消息是状态切换的直接触发信号。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/962481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

T690363 促销活动

使用分块与维护下凸壳解决问题。考虑分块,然后拆贡献。对于所有散块我们直接暴力重构后操作/查询。对于整块的 1 操作,我们考虑打一个标记 \(T_x\),那么之后的查询块 \(x\) 就相当于查询 \[\max((p_i+T_x)q_i)=\max…

1-3-2-线程生命周期与状态转换

提示词: 请你作为一位资深Java技术面试官兼职业导师,专注于帮助用户系统性地准备Java资深开发和架构师岗位的面试。你应具备深厚的技术底蕴、广泛的知识视野(涵盖从基础到高阶、从单体到分布式的一切相关内容)和丰…

1-2-2-异常体系

Java异常体系是面试中的核心考察点,下面我将从机制原理、应用场景和避坑指南三个方面,为你梳理一份全面的面试要点总结。面试要点维度 关键内容核心体系结构 Throwable > Error / Exception > Checked Excepti…

1-5-1-设计模式与OOP

理解23种设计模式如何体现面向对象(OOP)思想,能帮助我们在设计和编码时更好地运用这些模式。下面我将这些设计模式按类型分类,并说明它们如何体现了OOP的核心理念。 一、设计模式及其OOP思想 下面是23种设计模式及…

1-6-0-总纲

以下是网络编程和I/O模型领域的核心知识原理及面试常见考点的详细总结。我将从网络基础、核心协议、Socket编程、I/O模型到高并发设计逐步展开,并穿插面试高频问题与解答思路。一、网络基础与分层模型 1. 核心分层模型…

1-6-2-网络协议基础

一、基础知识 以下是网络编程和I/O模型领域的核心知识原理及面试常见考点的详细总结。我将从网络基础、核心协议、Socket编程、I/O模型到高并发设计逐步展开,并穿插面试高频问题与解答思路。1、网络基础与分层模型 1.…

1-3-5-AQS详解

AQS(AbstractQueuedSynchronizer)详解 一、AQS是什么? AQS(AbstractQueuedSynchronizer)是Java并发包(java.util.concurrent.locks)中的核心同步框架,用于构建锁和同步工具。其核心设计思想是通过一个FIFO队列…

起飞啦,太easy啦!!!小白的神级AI辅助工具,一句话即可搭建超50个节点的工作流~~~~

嗨,我是小华同学,专注解锁高效工作与前沿AI工具!每日精选开源技术、实战技巧,助你省时50%、领先他人一步。👉免费订阅,与10万+技术人共享升级秘籍!n8n-MCP 是 n8n 的“智能中间件”:它向大模型(如 Claude De…

3-1-1-2-MySQL锁机制

MySQL中锁的分类 1、按照实现方式: 乐观锁、悲观锁; 2、按照作用对象: Lock、Latch 3、按照锁定对象: 全局锁、表锁、页锁、行锁 4、按照操作类型: 共享锁、独占锁 5、按照用途场景: 记录锁、间隙锁、临键锁、意…

Debug日志

2025.11.11 今天在做TFT LCD屏幕 4线SPI时,出现屏幕背光打开,但是屏幕无任何显示。软件进行了debug好久一无所获,最终检查硬件连线,发现CS引脚存在虚焊(量电压竟然有,测试阻抗才发现虚焊),补焊后正常。程序后续…

3-1-1-4-ACID特性底层原理

1、ACID的底层保障机制 一、前言:ACID是事务的核心契约 MySQL的ACID(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)是事务的基石,其实现依赖InnoDB存储引擎的底层组件协同工作(如日志…

1-6-5-Netty

1、Netty的工作流程和底层机制 要理解Netty的核心价值(高性能、低延迟的异步事件驱动网络框架),必须从其工作流程(业务视角的全链路)和底层机制(技术实现的本质)两方面展开。以下是结构化的拆解: 一、明确Nett…

2025年11月北京离婚房产律师对比榜:五强机构多维评测

当婚姻走到尽头,房产往往成为双方最关切的“硬资产”。在北京,一套房子可能凝聚着两代人积蓄、学区资格、央产政策限制,甚至公司股权与境外信托的交叉安排。用户搜索“北京离婚房产律师”时,通常处于三种场景:一是…

3-1-2-1-MySQL整体架构详解

1、MySQL整体架构 MySQL 整体架构与底层原理详解 MySQL 是一款关系型数据库管理系统(RDBMS),以分层架构为核心设计思想,将功能解耦为多个模块,兼顾扩展性、性能与易维护性。以下从整体架构分层、核心组件底层原理…

3-1-2-2-MySQL分页查询机制

1、MySQL分页查询处理流程 要理解MySQL分页查询的处理流程与底层原理,我们需要从SQL执行生命周期、存储引擎行为、性能瓶颈根源三个维度展开,并结合LIMIT子句的本质展开分析。 一、分页查询的核心语法与本质 MySQL分…

3-1-2-3-MySQL高可用与容灾

1、MySQL高可用与容灾设计全解析 MySQL的高可用(High Availability, HA)聚焦减少服务不可用时间(降低RTO,恢复时间目标),容灾(Disaster Recovery, DR)则关注应对区域性/毁灭性故障(降低RPO,恢复点目标,即数…

打印文件怎么居中,占整个页面

通用核心步骤设置最小页边距:在打印设置中把边距设为0或最小值启用缩放/自适应:让内容自动缩放以填满纸张检查纸张方向:横向/纵向选择能最大化利用空间的方向

3-1-0-MySQL知识总览

在互联网大厂的资深开发岗和架构师岗面试中,数据库知识的考察注重底层原理、分布式架构设计、性能优化及安全防护,核心围绕“如何用数据库支撑高并发、高可用、可扩展的业务场景”展开。以下是全面且深入的数据库知识…

AT AGC043D Merge Triplets 题解

SolutionLink 神题。 手玩一下样例,发现重点肯定在这个顶部元素和 \(3\) 的大小之间的次序关系。考虑最特殊的,即对于 \(n\) 个三元组,都有如 \(A_{i, 1} \lt A_{i, 2} \lt A_{i , 3}\) 的形式,那么我们最终得到一…

4-1-2-Kafka-Broker-log

0、分区目录内物理存储文件类型 Kafka的消息存储体系围绕分区(Partition)展开,每个分区对应一个物理目录,目录内包含核心日志文件、索引文件、事务相关文件及元数据文件四大类,共同支撑消息的高效存储、查询与一致…