From 909c6e87926bcb2d7fa12de930065ec50b061898 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Fri, 21 Nov 2025 09:04:06 +0100 Subject: [PATCH] fix(u5): usb configuration Fixes #2855. Signed-off-by: Frederic Pillon --- libraries/USBDevice/src/usbd_conf.c | 14 +++++++++++--- .../PeripheralPins_NUCLEO_U5A5ZJ_Q.c | 4 ++-- .../variant_NUCLEO_U5A5ZJ_Q.cpp | 1 + 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libraries/USBDevice/src/usbd_conf.c b/libraries/USBDevice/src/usbd_conf.c index 6fc90b2a47..8b0d8184aa 100644 --- a/libraries/USBDevice/src/usbd_conf.c +++ b/libraries/USBDevice/src/usbd_conf.c @@ -173,10 +173,17 @@ void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) #ifndef USE_USB_HS_IN_FS __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE(); #endif /* USE_USB_HS_IN_FS */ - /* Enable USB HS Clocks */ __HAL_RCC_USB_OTG_HS_CLK_ENABLE(); - +#ifdef __HAL_RCC_USBPHYC_CLK_ENABLE + __HAL_RCC_USBPHYC_CLK_ENABLE(); +#endif +#if defined (PWR_VOSR_USBPWREN) + HAL_PWREx_EnableUSBHSTranceiverSupply(); +#endif +#ifdef SYSCFG_OTGHSPHYCR_EN + HAL_SYSCFG_EnableOTGPHY(SYSCFG_OTG_HS_PHY_ENABLE); +#endif /* Set USB HS Interrupt priority */ HAL_NVIC_SetPriority(OTG_HS_IRQn, USBD_IRQ_PRIO, USBD_IRQ_SUBPRIO); @@ -191,13 +198,14 @@ void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) #ifdef __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE(); #endif +#ifdef __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT(); - /* Set EXTI Wakeup Interrupt priority */ HAL_NVIC_SetPriority(OTG_HS_WKUP_IRQn, USBD_IRQ_PRIO, USBD_IRQ_SUBPRIO); /* Enable EXTI Interrupt */ HAL_NVIC_EnableIRQ(OTG_HS_WKUP_IRQn); +#endif } } #endif /* USB_OTG_HS */ diff --git a/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/PeripheralPins_NUCLEO_U5A5ZJ_Q.c b/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/PeripheralPins_NUCLEO_U5A5ZJ_Q.c index 602a9e73cd..92d7a7a60a 100644 --- a/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/PeripheralPins_NUCLEO_U5A5ZJ_Q.c +++ b/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/PeripheralPins_NUCLEO_U5A5ZJ_Q.c @@ -551,8 +551,8 @@ WEAK const PinMap PinMap_USB_OTG_HS[] = { // {PA_8, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_USB_HS)}, // USB_OTG_HS_SOF // {PA_9, USB_OTG_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS // {PA_10, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_USB_HS)}, // USB_OTG_HS_ID - {PA_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DM - {PA_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DP + // {PA_11, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DM + // {PA_12, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF_NONE)}, // USB_OTG_HS_DP // {PA_14, USB_OTG_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_USB_HS)}, // USB_OTG_HS_SOF #endif /* USE_USB_HS_IN_FS */ {NC, NP, 0} diff --git a/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/variant_NUCLEO_U5A5ZJ_Q.cpp b/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/variant_NUCLEO_U5A5ZJ_Q.cpp index 32dad1ca28..967d172b4a 100644 --- a/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/variant_NUCLEO_U5A5ZJ_Q.cpp +++ b/variants/STM32U5xx/U595Z(I-J)TxQ_U599Z(I-J)TxQ_U5A5ZJTxQ_U5A9ZJTxQ/variant_NUCLEO_U5A5ZJ_Q.cpp @@ -261,6 +261,7 @@ WEAK void SystemClock_Config(void) if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { Error_Handler(); } + HAL_SYSCFG_SetOTGPHYReferenceClockSelection(SYSCFG_OTG_HS_PHY_CLK_SELECT_1); } #ifdef __cplusplus