ST意法半导体
直播中

而无返还

8年用户 1197经验值
擅长:光电显示
私信 关注
[问答]

STM32H743 µC开发USB主机应用程序,使用PLL1Q或RC48作为时钟源时USB“核心软复位”超时怎么解决?

我正在使用 STM32H743 µC(使用 STM32H743I-EVAL2 板)开发 USB 主机应用程序(MSC/全速)
当使用 PLL3Q 作为时钟源时,应用程序工作正常。
但是当我使用 PLL1Q 或 RC48 作为时钟源时,USB“核心软复位”超时:
  • OTG->GRSTCTL |= USB_OTG_GRSTCTL_CSRST; // Core soft reset
  • // Wait Core reset to finish, max 100 ms
  • tout_ms = 100U;
  • while ((OTG->GRSTCTL & USB_OTG_GRSTCTL_CSRST) != 0U) {
  •   if (tout_ms == 0U) {
  •     return ARM_DRIVER_ERROR_tiMEOUT;
  •   }
  •   tout_ms--;
  •   HAL_Delay(1U);
  • }
  • HAL_Delay(1U);
我将 RC48 映射到 MCO1 以检查是否有 48MHz 输出,确实如此。
我检查了 RCC/USB 寄存器,但没有发现任何可疑之处。
有谁知道这里出了什么问题?










回帖(1)

李璇

2023-2-7 15:11:00
HSI48 应该使用 CRS 外围设备校准到某些外部源,或者校准到来自另一台主机的 LSE 或 SOF 信号。CRS 未运行(APB1HENR = 0),LSE 未运行(BDCR = 0),并且没有传入 SOF,因为您是主机。
这应该不会阻止 USB 核心重置,但我不确定未配置的 CRS 会对 HSI48 做什么。无论如何,不是一个健康的配置。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分