ST意法半导体
直播中

张强

8年用户 1448经验值
私信 关注
[问答]

STM32H7A3 Nucleo-144 ATM32H7A3ZITQ6,USB USB_CoreReset失败的原因?如何解决?

我正面临着这个董事会的另一个问题。
她是我的USB设置
  • USB_OTG_HS 仅是设备
    • NVIC 设置
      • USB OTG 端点输入/输出 1 INT 检查
      • 全局 Int 检查

  • USB 设备
    • 类虚拟端口

然后 init 在 USB_CoreReset 中失败并超时。
我检查了 HAL_PCD_MspInit,引脚看起来不错。
  • static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx)
  • {
  •   __IO uint32_t count = 0U;
  •   /* Wait for AHB master IDLE state. */
  •   do
  •   {
  •     count++;
  •     if (count > 200000U)
  •     {
  •       return HAL_TIMEOUT;
  •     }
  •   } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U);
  •   /* Core Soft Reset */
  •   count = 0U;
  •   USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST;
  •   do
  •   {
  •     count++;
  •     if (count > 200000U)
  •     {
  •       return HAL_TIMEOUT; <<<<<<<<<<<<<  FAILS
  •     }
  •   } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);
  •   return HAL_OK;
  • }
我刚刚发现我的 USB 配置
  • /**USB_OTG_HS GPIO Configuration
  •     PC0     ------> USB_OTG_HS_ULPI_STP
  •     PC2_C     ------> USB_OTG_HS_ULPI_DIR
  •     PC3_C     ------> USB_OTG_HS_ULPI_NXT
  •     PA3     ------> USB_OTG_HS_ULPI_D0
  •     PA5     ------> USB_OTG_HS_ULPI_CK
  •     PB0     ------> USB_OTG_HS_ULPI_D1
  •     PB1     ------> USB_OTG_HS_ULPI_D2
  •     PB10     ------> USB_OTG_HS_ULPI_D3
  •     PB11     ------> USB_OTG_HS_ULPI_D4
  •     PB12     ------> USB_OTG_HS_ULPI_D5
  •     PB13     ------> USB_OTG_HS_ULPI_D6
  •     PA8     ------> USB_OTG_HS_SOF
  •     PB5     ------> USB_OTG_HS_ULPI_D7
PA5 USB_OTG_HS_ULPI_CK
作为
  •     GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_5;
  •     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  •     GPIO_InitStruct.Pull = GPIO_NOPULL;
  •     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  •     GPIO_InitStruct.Alternate = GPIO_AF10_OTG1_HS;
  •     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  • [...]
  •     __HAL_RCC_USB_OTG_HS_CLK_ENABLE();
  •     __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE();
我用示波器和 PA5 [USB_OTG_HS_ULPI_CK] 进行了验证
没有时钟。
我试过 2 个板,我认为两个板都没有效果。
任何帮助,将不胜感激。








回帖(1)

陈墨

2023-2-9 11:02:32
固定的!
我从头开始另一个项目,在选择板后的步骤
当要求保留默认值时,我放手了。
在最初的项目中,我从头开始,因为代码在 STM32G474 上运行
使用一个干净的项目,我从头开始配置引脚。
不幸的是,它不适用于 STM32H7A3。
举报

更多回帖

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