当前位置: 首页 > news >正文

USB --- PD协商

 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.jsqmd.com/news/37618/

相关文章:

  • T690363 促销活动
  • 1-3-2-线程生命周期与状态转换
  • 1-2-2-异常体系
  • 1-5-1-设计模式与OOP
  • 1-6-0-总纲
  • 1-6-2-网络协议基础
  • 1-3-5-AQS详解
  • 起飞啦,太easy啦!!!小白的神级AI辅助工具,一句话即可搭建超50个节点的工作流~~~~
  • 3-1-1-2-MySQL锁机制
  • Debug日志
  • 3-1-1-4-ACID特性底层原理
  • 1-6-5-Netty
  • 2025年11月北京离婚房产律师对比榜:五强机构多维评测
  • 3-1-2-1-MySQL整体架构详解
  • 3-1-2-2-MySQL分页查询机制
  • 3-1-2-3-MySQL高可用与容灾
  • 打印文件怎么居中,占整个页面
  • 3-1-0-MySQL知识总览
  • AT AGC043D Merge Triplets 题解
  • 4-1-2-Kafka-Broker-log
  • SqlSugar 在linux环境下连接sqlserver数据库报错SSL出错,因为升级了驱动,字符串增加Encrypt=True;TrustServerCertificate=True;
  • 2025年11月GPU服务器公司排名:五强技术方案与落地案例对比
  • 【JMeter】命令行方式使用 - 谷粒
  • 【JMeter】图形化方式使用 - 谷粒
  • 在 Windows 系统上安装官方 Codex CLI 教程
  • 关于CSS的三种引入方法的说明与区别说明
  • 薪酬管理:企业增长的“隐形引擎”—中国薪资管理系统Top 5深度分析与选型指南
  • SpringOJ竞赛计划----组件ElasticSearch
  • C# Avalonia 17- ControlTemplates - VisualTreeDisplay
  • 【软件测试】你需要的面试技巧全在这里,细节满满