[STM32G0] USB‑PD 复位问题

[复制链接]
34|10
WHALEE 发表于 2026-8-26 16:40 | 显示全部楼层 |阅读模式
我正在使用 STM32G081RB 开发Source端应用程序。

在 VBUS 完成功率配置之后,没有观察到供电端设备发出 PS_RDY消息。

在与对端端口完成端口协商后,电源建立阶段是否有必须遵守的时序要求?

电源建立完成后的 ADC 采样读数正常。我在 `usbpd_pwr_user.c` 文件的 `BSP_PWR_VBUSGetVoltage` 函数处设置断点,确认 USB‑PD 协议栈读到的电压数值是正确的。

公羊子丹 发表于 2026-9-3 12:46 | 显示全部楼层
我怀疑是BSP层电压回调的判定逻辑问题,虽然ADC读数正确,但协议栈内部有电压容差区间,没落在范围内就不会触发PS_RDY发送逻辑。
周半梅 发表于 2026-9-3 12:47 | 显示全部楼层
PS_RDY不是电压上来就立刻发,PD规范有明确时序,电压稳定后才允许发送。你可以用PD抓包工具看一下,ACCEPT消息有没有正常发出去。
帛灿灿 发表于 2026-9-3 12:48 | 显示全部楼层
之前踩过一模一样的坑,裸机项目忘记循环调用USBPD_DPM_Run(),状态机跑不完整,就算硬件电压到位,也不会输出PS_RDY这条消息。
童雨竹 发表于 2026-9-3 12:49 | 显示全部楼层
提醒下,检查BSP_USBPD_PWR_VBUSSetVoltage_Fixed函数,这个是控制电源升降压的,如果这里没有正确等待电源稳定,协议栈会一直卡住等待。
万图 发表于 2026-9-3 12:50 | 显示全部楼层
哈哈G0的USB_PD移植坑点很多,ADC读对不代表BSP给协议栈的电压参数就合格。你可以在BSP_PWR_VBUSGetVoltage内部加打印,看协议栈读取到的值。
Wordsworth 发表于 2026-9-3 12:51 | 显示全部楼层
你检查过分压电阻换算系数吗?ADC采样读数看着正常,如果分压换算写错,传给协议栈的mV数值是错的,会导致状态机判断失效。
Bblythe 发表于 2026-9-3 12:51 | 显示全部楼层
我建议打开协议栈trace调试输出,观察PE状态机是否走到PE_SRC_TRANSITION_SUPPLY状态,没走到的话,就是前面协商或者电源BSP环节卡住。
Pulitzer 发表于 2026-9-3 12:52 | 显示全部楼层
想问下你的DC_DC电源的建立时间会不会太长?PD规范从ACCEPT到PS_RDY有最大450ms限制,电源上升过慢,对端会直接硬复位。
Uriah 发表于 2026-9-3 12:53 | 显示全部楼层
可以做个简易测试,在BSP层直接硬编码返回目标电压值,绕开ADC采样。如果这时能发出PS_RDY,那问题就锁定在电压采集BSP部分。
Clyde011 发表于 2026-9-3 12:54 | 显示全部楼层
还有一个容易忽略点,确认你的Source端PDO配置,请求的挡位必须和实际能输出的电压匹配,PDO配置错误也会导致状态机停滞不前。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

204

主题

205

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0