[STM32F7] STM32F722RET6 执行 USB_CoreReset () 超时

[复制链接]
54|14
石榴大王 发表于 2026-7-9 13:14 | 显示全部楼层 |阅读模式
通过 ULPI 接口外接高速 USB PHY USB3300EZK,执行MX_USB_DEVICE_Init()初始化函数时,程序卡在内部USB_CoreReset()步骤并发生超时。

/* Required few clock cycles before accessing USB PHY Controller Registers */
for (volatile uint32_t i = 0; i < 10; i++) {
__NOP(); // No Operation instruction to create a delay
}
  /* Core Soft Reset */
  USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST;
  do
  {
    count++;
    if (count > HAL_USB_TIMEOUT)
    {
      return HAL_TIMEOUT;
    }
  } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);
  return HAL_OK;
}
时钟配置如下
305486a4f149f132e3.png

flycamelaaa 发表于 2026-7-9 14:56 | 显示全部楼层
外接 ULPI PHY 时,USBx 寄存器基址是否正确指向 OTG_HS 而非 OTG_FS。
classroom 发表于 2026-7-9 15:28 | 显示全部楼层
检查 USB3300 的 RESET 引脚是否已拉高,PHY 未退出复位状态会导致 CSRST 无法完成。
cr315 发表于 2026-7-9 15:59 | 显示全部楼层
ULPI 时钟由 PHY 提供,需确认 60MHz 时钟已稳定输出到 STM32 的 ULPI_CK 引脚。
duo点 发表于 2026-7-9 16:30 | 显示全部楼层
增加 GRSTCTL_CSRST 之前的延迟时间,10 个 NOP 可能不够 PHY 上电稳定。
elephant00 发表于 2026-7-9 14:57 | 显示全部楼层
检查 VBUS 电压是否正常,USB3300 的 VBUS 检测引脚电平可能影响 PHY 初始化。
flycamelaaa 发表于 2026-7-9 17:10 | 显示全部楼层
检查 ULPI 接口的 DIR、NXT、STP 六根数据线是否连接正确且无虚焊。
jcky001 发表于 2026-7-9 17:40 | 显示全部楼层
在 CSRST 循环中加入打印或 GPIO 翻转,确认是写入失败还是等待超时。
onlycook 发表于 2026-7-9 18:10 | 显示全部楼层
ULPI PHY 需要独立的 24MHz 或 26MHz 晶振,检查外部晶振是否起振。
powerantone 发表于 2026-7-9 18:59 | 显示全部楼层
看下 STM32F7 的 OTG_HS 引脚是否正确配置为 ULPI 复用功能模式。
probedog 发表于 2026-7-9 19:32 | 显示全部楼层
HAL_USB_TIMEOUT 的值是否足够大,外接 PHY 的复位响应时间可能比内置 PHY 更长。
solty 发表于 2026-7-9 20:08 | 显示全部楼层
检查电源是否满足 USB3300 的 3.3V 和 1.8V 供电要求,电压不稳会导致 PHY 不响应。
spicy 发表于 2026-7-9 20:39 | 显示全部楼层
如果使用 CubeMX 生成代码,检查 USB_OTG_HS 的 PHY 选择是否设置为 ULPI 模式。
stormwind123 发表于 2026-7-9 21:48 | 显示全部楼层
试下将 ULPI 数据线速率降低,或检查走线长度是否超出 ULPI 规范要求。
Tipasig 发表于 2026-7-10 11:00 | 显示全部楼层
原理图贴出了看看。主要检查:
  VBUS,3.3V,1.8V(若有)是否正常。
  ULPI PHY芯片的时钟模式,60MHz时钟是STM32还是PHY提供;
  ULPI PHY芯片的复位管脚,是板级上拉,还是软件控制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

204

主题

204

帖子

0

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