用STM32F103ZET6写的USB HID设备与计算机通信程序,可以接收数据,但发送有问题,请教一下大家

2019-07-21 03:04发布

USB枚举过程是成功了的,计算机设备管理器中看到的设备:

用PortHelper调试USB如下:

点击发送后,STM32接收到数据并且从串口返回接收到的数据如下:

我的STM32 USB通信程序中,当端点1接收到一次数据后就每隔一段时间通过端点2发送数据(内容是:哦艾斯黛拉),然后从串口返回的数据发现STM32每隔一段时间端点2都会产生IN中断,但是PortHelper软件并没有接收到数据,然后我用Bus Hound抓取USB包,首先抓取的是HID-compliant device设备,如下图:

然后用PortHelper USb调试器与STM32通信,Bus Hound只抓取到了OUT数据包,如下:

从端点2发送到计算机IN的数据包没有,但是STM32 USB每隔一段时间产生了IN中断,也就是说STM32发送了数据给电脑,但PortHelper中端点2没有收到数据,接着我有用Bus Hound抓取“USB输入设备”的数据,如下图:

PortHelper与STM32进行USB通信,Bus Hound抓取到的数据包如下:

从抓取到的数据包看到“USB输入设备”收到的STM32发来的数据,图中圈出来的就是“哦艾斯黛拉”的十六进制数据,我想问的是为什们“HID-compliant device”收不到IN数据?而“USB输入设备”可以?(USB的各种描述符是直接从一个STM USB HID例程复制过来的,那个例程HID-compliant device”和“USB输入设备”都可以收到STM32从端点2发送上来的数据。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
虚虚虚
1楼-- · 2019-07-25 03:20
华南虎 发表于 2016-5-25 09:22
已经移植成功,代码可正常在STM32F103C8T6上正常收发数据,不知道楼主最后有没有搞定只能收发22字节 ...

大哥, 你在STM32F103C8T6上usb通讯是怎么修改的,  指点一下!
华南虎
2楼-- · 2019-07-25 05:23
虚虚虚 发表于 2016-7-1 16:00
大哥, 你在STM32F103C8T6上usb通讯是怎么修改的,  指点一下!

不用修改啊,直接调头文件过去就可以使用了。不过有个地方要提醒下你,要先确保硬件是没问题的。
mali000
3楼-- · 2019-07-25 06:23
@华南虎    分享一下你的移植成果呗   ~~   开源共享
华南虎
4楼-- · 2019-07-25 08:12
 精彩回答 2  元偷偷看……
amada
5楼-- · 2019-07-25 08:36
谢谢分享
xinjie1023
6楼-- · 2019-07-25 11:40
谢谢分享。

一周热门 更多>