主题

USB PD

USB PD 表示仓库围绕 USB Power Delivery 协议或 PD-aware 固件/驱动维护代码,并把协商档位、controller 行为、sink/source 语义、PPS/AVS 等供电协商边界当成长期知识。这里的主语是供电协商协议,不是 generic embedded I/O。

  • 硬件

目录

Definition

USB PD 表示仓库围绕 USB Power Delivery 协议或 PD-aware 固件/驱动维护代码,并把协商档位、controller 行为、sink/source 语义、PPS/AVS 等供电协商边界当成长期知识。这里的主语是供电协商协议,不是 generic embedded I/O。

它通常会和 Embedded Rust、Async embedded、STM32 firmware 一起出现,但不替代这些 Topic:USB PD 解释的是 PD controller/firmware 协议层语义,其他 Topic 才解释 MCU 运行时、总线或整机职责(projects/sw2303-rs.md、projects/pd-sink-stm32g431cbu6-rs.md、projects/ups120.md)。

When to use

当 README、crate 描述、project snapshot 或开发文档明确表明仓库围绕 PD controller、PD sink/source 行为、PPS request、PDO 选择或 PD-aware 供电路径维护代码时使用。若只是普通 USB 供电、不涉及协商协议,则不应命中。

如果一个改动会影响 PD controller register/protocol、sink/source 行为、PPS/AVS 请求、档位选择、保护联动、PD 事件处理或上层策略与 controller 的边界,就应该命中 USB PD。若问题只在 I2C/SPI 驱动层、无 PD 协议语义,则应回到更基础 Topic。

Habits / defaults

  • Mix of driver-crate work (projects/sw2303-rs.md) and device firmware (projects/ups120.md)
  • PD devices often have a modeling/docs footprint because electrical constraints matter (projects/sk150c-kit.md)
  • Async APIs are common because PD interactions are event-driven (projects/pd-sink-stm32g431cbu6-rs.md)
  • USB PD 通常同时存在 crate 层和设备层两种实现面:controller driver 负责寄存器/事件语义,device firmware 负责电源策略、保护和 UI 反馈。回答时必须先分清你在讲哪一层。
  • PD 设备往往需要额外 docs/modeling,因为电压/电流档位、PPS/AVS、保护和物理供电路径都不是“看代码就能猜对”的语义(projects/sk150c-kit.md、projects/pd-sink-stm32g431cbu6-rs.md)。
  • event-driven/async API 很常见,但 async 只是协议处理方式,不应掩盖 PD 语义本身。最重要的是写清谁选择档位、谁处理 fallback、谁负责保护联动。
  • 回答此 Topic 时,应明确仓库是在做 sink、source、controller driver 还是整机 PD-aware firmware。都叫 USB PD,但维护风险完全不同。
  • 如果 PD 行为会影响显示、测量或保护策略,就应在 Topic 中写出这些联动,而不是把协议层当成孤立模块(projects/pd-sink-stm32g431cbu6-rs.md、projects/ups120.md)。

Reference implementations

  • projects/sw2303-rs.md:最适合说明 controller driver 层的 PD 语义和 sync/async 扩展方式。
  • projects/pd-sink-stm32g431cbu6-rs.md:最适合说明 sink firmware、PPS 请求、显示与保护联动如何共同定义 PD 行为。
  • projects/sk150c-kit.md:适合补充建模/文档在 PD 设备中的重要性。
  • projects/ups120.md:适合说明 PD 在更大设备固件和子模块结构中的位置。

Failure modes

  • 只因为“和 USB 供电有关”就打 USB PD,会把普通供电路径和真正的 PD 协议处理混在一起。
  • 把 USB PD 当成整个仓库的总括标签,忽略 Embedded Rust、Async embedded、STM32 firmware 等相邻 Topic,会让后续 Agent 无法判断真正该看的是协议协商、MCU 运行时还是器件接口。
  • 不区分 controller driver 与整机策略层,会让维护者在错误层级修改 PPS/档位/保护逻辑。
  • 只写“支持 PD”不写 sink/source/PPS/保护联动,也会让 Topic 几乎没有可执行指导价值。

Evidence index

  • projects/pd-sink-stm32g431cbu6-rs.md
  • projects/sk150c-kit.md
  • projects/sw2303-rs.md
  • projects/ups120.md
  • projects/isolappurr-usb-hub.md
  • skills/style-playbook/references/data/topics/usb-pd.json