我正面临着这个董事会的另一个问题。
她是我的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 个板,我认为两个板都没有效果。
任何帮助,将不胜感激。