ST意法半导体
直播中

的撒的

10年用户 742经验值
擅长:可编程逻辑
私信 关注
[问答]

为什么使用STM32CubeMX生成的代码时会出现设备描述符请求失败呢

我想在 STM32L476 Nucleo-64 开发板上测试 USB。我使用 STM32CubeMX 版本 6.2.1,它使用的库是“STM32CubeL4 固件包 V1.17.0 / 11-February-2021”。我在 STM32CubeMX 的 Board Selector 中选择 Nucleo-64,然后简单地启用 Connectivity->USB_OTG_FS and Middleware->USB-DEVICE 并选择“Class For FS IP”: Communication Device Class (Virtual Port Com)”并生成代码,编译它然后将其上传到微控制器。当我执行代码时,它在设备管理器(在 Windows 10 上)中显示“未知 USB 设备(设备描述符请求失败)”。我在谷歌上搜索了很多并尝试了很多东西(限制数据包大小,增加堆栈和堆大小,禁用板上的其他外围设备等),但无济于事。我已确认在插入 USB 电缆时会出现 OTG_FS_IRQHandler 中断。当我探测示波器上的数据线时,我看到了干净的信号,但令我惊讶的是“最小位”是 667 ns 宽,这意味着 1.5 Mbits/s(但也许我误解了 USB 协议的工作原理,尤其是在连接过程的早期阶段)。我没有对 PCB 进行任何硬件更改。我可以看到 SB31 已连接,我可以在打开电源后立即在 VDDUSB 上测量 3.3 V。我连接的唯一电线是 GND、USB_OTG_FS_DP 和 USB_OTG_FS_DM,这些电线是短双绞线(仅数据线)。我正在使用带有一堆 PLL:s 和分频器的内部时钟 (HSI),并且 STM32CubeMX 时钟配置没有问题。有人知道我做错了什么吗?当我探测示波器上的数据线时,我看到了干净的信号,但令我惊讶的是“最小位”是 667 ns 宽,这意味着 1.5 Mbits/s(但也许我误解了 USB 协议的工作原理,尤其是在连接过程的早期阶段)。我没有对 PCB 进行任何硬件更改。我可以看到 SB31 已连接,我可以在打开电源后立即在 VDDUSB 上测量 3.3 V。我连接的唯一电线是 GND、USB_OTG_FS_DP 和 USB_OTG_FS_DM,这些电线是短双绞线(仅数据线)。我正在使用带有一堆 PLL:s 和分频器的内部时钟 (HSI),并且 STM32CubeMX 时钟配置没有问题。有人知道我做错了什么吗?当我探测示波器上的数据线时,我看到了干净的信号,但令我惊讶的是“最小位”是 667 ns 宽,这意味着 1.5 Mbits/s(但也许我误解了 USB 协议的工作原理,尤其是在连接过程的早期阶段)。我没有对 PCB 进行任何硬件更改。我可以看到 SB31 已连接,我可以在打开电源后立即在 VDDUSB 上测量 3.3 V。我连接的唯一电线是 GND、USB_OTG_FS_DP 和 USB_OTG_FS_DM,这些电线是短双绞线(仅数据线)。我正在使用带有一堆 PLL:s 和分频器的内部时钟 (HSI),并且 STM32CubeMX 时钟配置没有问题。有人知道我做错了什么吗?5 Mbits/s(但也许我误解了 USB 协议的工作原理,尤其是在连接过程的早期阶段)。我没有对 PCB 进行任何硬件更改。我可以看到 SB31 已连接,我可以在打开电源后立即在 VDDUSB 上测量 3.3 V。我连接的唯一电线是 GND、USB_OTG_FS_DP 和 USB_OTG_FS_DM,这些电线是短双绞线(仅数据线)。我正在使用带有一堆 PLL:s 和分频器的内部时钟 (HSI),并且 STM32CubeMX 时钟配置没有问题。有人知道我做错了什么吗?5 Mbits/s(但也许我误解了 USB 协议的工作原理,尤其是在连接过程的早期阶段)。我没有对 PCB 进行任何硬件更改。我可以看到 SB31 已连接,我可以在打开电源后立即在 VDDUSB 上测量 3.3 V。我连接的唯一电线是 GND、USB_OTG_FS_DP 和 USB_OTG_FS_DM,这些电线是短双绞线(仅数据线)。我正在使用带有一堆 PLL:s 和分频器的内部时钟 (HSI),并且 STM32CubeMX 时钟配置没有问题。有人知道我做错了什么吗?打开电源后,VDDUSB 上的电压为 3 V。我连接的唯一电线是 GND、USB_OTG_FS_DP 和 USB_OTG_FS_DM,这些电线是短双绞线(仅数据线)。我正在使用带有一堆 PLL:s 和分频器的内部时钟 (HSI),并且 STM32CubeMX 时钟配置没有问题。有人知道我做错了什么吗?打开电源后,VDDUSB 上的电压为 3 V。我连接的唯一电线是 GND、USB_OTG_FS_DP 和 USB_OTG_FS_DM,这些电线是短双绞线(仅数据线)。我正在使用带有一堆 PLL:s 和分频器的内部时钟 (HSI),并且 STM32CubeMX 时钟配置没有问题。有人知道我做错了什么吗?









回帖(1)

安德森大

2022-12-14 10:26:43
USB_OTG_FS_DP 和 USB_OTG_FS_DM 线我已经换了,我马上去羞耻角。
举报

更多回帖

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