公羊子丹 发表于 2025-5-4 07:14

USB串口枚举卡住了到底是哪儿出问题了?

用了CDC例程跑起来总是停在枚举阶段,是不是描述符不兼容?

Clyde011 发表于 2025-5-4 07:20

你用的是哪版CubeMX生成的工程?

公羊子丹 发表于 2025-5-4 07:20

描述符长度改了吗?有些系统挺挑。

周半梅 发表于 2025-5-4 07:21

host那边是Win还是Linux?影响蛮大。

帛灿灿 发表于 2025-5-4 07:22

是不是没给Vbus检测电路?

童雨竹 发表于 2025-5-4 07:23

我之前没加pull-up就枚举失败。

万图 发表于 2025-5-4 07:24

改VID/PID后重插设备试试。

Wordsworth 发表于 2025-5-4 07:25

看下Cube里是否关了某些中断。

Bblythe 发表于 2025-5-4 07:26

DFU模式和CDC混了?

Pulitzer 发表于 2025-5-4 07:26

用USBView工具能看到设备吗?

Uriah 发表于 2025-5-4 07:27

枚举阶段卡住,多半是中断没起。

powerantone 发表于 2025-5-7 12:32

可能与时钟配置有关。

stormwind123 发表于 2025-5-7 12:32

中断未正确处理,可能导致枚举卡住。

光辉梦境 发表于 2025-5-12 13:30

D+上拉电阻未启用,STM32G0需通过GPIO控制D+上拉电阻以触发主机枚举。若未正确配置GPIO输出高电平,主机无法检测到设备插入。需确保在代码中初始化GPIO并拉高D+信号线,例如使用HAL_GPIO_WritePin(GPIOx, GPIO_PIN_y, GPIO_PIN_SET)。

暖了夏天蓝了海 发表于 2025-5-12 14:32

USB引脚配置错误,检查PA11(D-)、PA12(D+)是否正确配置为复用功能(AF10),且未被其他外设占用。可通过CubeMX确认引脚复用设置,避免冲突。

一秒落纱 发表于 2025-5-12 15:05

STM32G0的USB需48MHz时钟源(如HSI48或PLL)。若未启用或时钟不稳定,枚举会失败。需检查时钟树配置,确保在CubeMX中启用HSI48或正确配置PLL,并通过HAL_RCCEx_PeriphCLKConfig()应用。

冰春彩落下 发表于 2025-5-12 15:47

时钟精度不足,USB规范要求时钟误差≤±0.25%。若使用HSI48且未启用自动校准(CRS),时钟可能漂移导致枚举失败。可在代码中启用CRS自动校准

江河千里 发表于 2025-5-12 16:13

描述符格式错误,主机通过描述符识别设备类型。若设备描述符、配置描述符或字符串描述符格式不符规范,枚举会中断。需检查描述符数组(如USBD_FS_DeviceDesc)是否符合USB规范,例如设备类代码(bDeviceClass)是否正确(CDC类为0x02)。

夜阑风雨 发表于 2025-5-12 17:04

端点配置不当,CDC类需至少一个控制端点(EP0)和两个批量端点(IN/OUT)。若端点配置错误(如方向、类型、大小),枚举会失败。需确认端点描述符配置,例如批量端点大小是否为64字节。

三生万物 发表于 2025-5-12 17:05

中断未启用或优先级冲突,USB中断需在NVIC中正确配置,且优先级足够高。若中断未启用或被其他中断阻塞,枚举会停滞。需检查USB_IRQn的优先级设置,并确保无更高优先级中断占用总线。
页: [1]
查看完整版本: USB串口枚举卡住了到底是哪儿出问题了?