2023-12-15 05:36 AM
Hi all,
My application needs to communicate with an external device (Bus Device). The STM32 was configured as a Host using STM32CubeMX.
The device is connected. However, 'Appli_state == APPLICATION_START' is never reached. Appli_state remains in the state 'HOST_USER_CONNECTION (0x04U)' or unknown (0x06U).
During debugging, I noticed that the function 'USBH_SpeedTypeDef USBH_LL_GetSpeed(USBH_HandleTypeDef *phost)' returns the value '2' instead of '1' or 'default'.
USBH_SpeedTypeDef USBH_LL_GetSpeed(USBH_HandleTypeDef *phost)
{
USBH_SpeedTypeDef speed = USBH_SPEED_FULL;
switch (HAL_HCD_GetCurrentSpeed(phost->pData))
{
case 0 :
speed = USBH_SPEED_HIGH;
break;
case 1 :
speed = USBH_SPEED_FULL;
break;
case 2 :
speed = USBH_SPEED_LOW;
break;
default:
speed = USBH_SPEED_FULL;
break;
}
return speed;
}
The function 'HAL_HCD_GetCurrentSpeed >> uint32_t USB_GetHostSpeed(USB_DRD_TypeDef *USBx)' changes the initial configuration to 'USB_DRD_SPEED_LS.' I didn't understand when 'USBx->ISTR' was modified.
uint32_t USB_GetHostSpeed(USB_DRD_TypeDef *USBx)
{
if ((USBx->ISTR & USB_ISTR_LS_DCONN) != 0U)
{
return USB_DRD_SPEED_LS;
}
else
{
return USB_DRD_SPEED_FS;
}
}
Could this be the cause of my issue or is the device not responding as it should?
My basic project 'VMPOSHost.rar' is attached for review.
Thanks!
2024-02-01 06:21 AM
Hi guys!
Any alternative for this issue?