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.mdprojects/sk150c-kit.mdprojects/sw2303-rs.mdprojects/ups120.mdprojects/isolappurr-usb-hub.mdskills/style-playbook/references/data/topics/usb-pd.json
相关内容
IsolaPurr USB Hub
项目实践IsolaPurr USB Hub 是带 USB-C 上行、USB-C 下行和 USB-A 下行的有源 USB 集线器/供电模块。README.md 记录 CH334P、URB2405S、CH224Q、TPS55288、SW2303/IP6557、DC5025 输入和理想二极管 OR-ing 等硬件方案,说明这是硬件/固件/Web/文档一体的 device mono-repo。
PowerVista PD Sink Firmware
项目实践PowerVista PD Sink Firmware 是 STM32G431CBU6 上的多功能实时电源监控与 USB PD sink 固件。README.md 的项目名是 PowerVista,功能清单包括电压/电流/功率实时显示、PPS request、保护策略、重力感应旋转和配置存储;catalog slug pd-sink-stm32g431cbu6-rs 只是仓库 ID,不应作为人类标题。
sk150c-kit
项目实践Rust firmware project for controlling an adjustable power supply module (STM32G431CBU6), with developer guides (CN/EN), models, and scripts. Evidence: README.md, Cargo.toml, DEVELOPER_GUIDE.md.
sw2303-rs
项目实践Rust embedded-hal driver for SW2303 USB PD controller, providing async/sync support for embedded firmware usage. Evidence: Cargo.toml, src/.
ups120
项目实践Rust embedded firmware + libraries for an “UPS120” device, with supporting docs, scripts, and structured submodules for chip drivers/components. Evidence: README.md, firmware/, libs/, rust-toolchain.toml.