用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-22 21:41
我现在在做一个用stm32驱动FM1702的一个读卡器,然后通过USB和上位机通信,上位机用VC++ 做。在做之前我也查了一些资料但是感觉没有找到有用的资料。现在面临三个难点,1:怎么用stm32驱动FM1702 ;2:怎么写STM32的USB通信 ;3:怎么用vc++写USB通信的上位机。下位机芯片stm32f103ZET6;上位机用VS2013写的。求各位大神哥哥指点,也可以给我发点资料,源码,我的邮箱446310852@qq.com。
      我自己看别人的代码也写了个上位机,下位机是修改stm32鼠标实验(虽然我知道直接拿来用不太对,但是不会修改,稍微修改一下就设备都读取不出来)的,但是用读的方式无法打开,写数据也失败。
      我感觉我对这个从基础都不了解,也不知道先读写哪些基础的
    我想先把这个项目做出了
   希望哪个大神哥哥指点一下
yuzeyuan1
2楼-- · 2019-07-23 03:38
mark<>
yangye
3楼-- · 2019-07-23 06:42
上位机也要注意读写字节 个数 这个比较严格
yuzeyuan1
4楼-- · 2019-07-23 07:34
 精彩回答 2  元偷偷看……
提刀上马
5楼-- · 2019-07-23 09:24
我的stm32进不了发送回调函数EP2_IN_Callback
这是什么情况啊
hugo01chen
6楼-- · 2019-07-23 09:47
谢谢,把程序改在mini开发板上。谢谢啦

一周热门 更多>