pc无法接收到STM32F407的usb的任何数据,103不识别
第一次使用STM32F103的usb,生成代码并配置了usbd_custom_hid_if.c文件后下载到板子上,我的电脑无法识别USB设备。然后我换成了F407,完成同样的操作后,电脑可以识别该设备为HID设备。但“USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, sendbuffer, 2)”这个函数似乎不正常,pc无法接收到usb的任何数据。
STM32F103 的 USB 需要正确的 48MHz 时钟来源,你检查过 PLL 配置了吗?内部时钟可能不稳定。 F407 识别 HID 但不能发送数据,可能是 端点未正确配置,建议检查 USBD_CUSTOM_HID_SendReport 的 Endpoint 是否正确打开。 HID 设备发送数据前要 HOST 轮询,你在 PC 端用 HIDTool 或 Wireshark 看看 USB 数据包有没有变化? USBD_CUSTOM_HID_SendReport 发送失败有没有返回错误码?如果返回值不是 USBD_OK,可能是 USB 状态 异常。 试试 USBDevice FS 结构体的 state 是否处于 CONFIGURED 状态,不然发送数据可能无效。 你 PC 端用什么方式接收 USB 数据的?如果是 Python 或 C#,可以试试 HIDAPI 确保应用端正常工作。 F103 无法识别 USB 设备,可能 DP 没有正确上拉,试试在 usb_device.c 里 MX_USB_DEVICE_Init() 之后手动拉高 DP。 F407 能识别但不能传输数据,可能 USBD_CUSTOM_HID_ReportDesc 里定义的 Report 长度和 PC 端期望的不同,试着改成 固定大小 发送。 你有试过用 STM32CubeMonitor 抓取 USB 通信数据吗?这样可以看到 HID 报文有没有真正发出去。 HID 协议需要 PC 端主动请求数据,试试 USBD_CUSTOM_HID_ReceivePacket() 让 PC 端先发送一个数据包看看能否触发通信。 建议更换数据线。 若使用外部晶振,检查PLL配置是否生成48MHz USB时钟。
页:
[1]