a707083746 发表于 2018-11-29 11:29:30

STM32 USB HID 为什么能收发65字节

我在做一个USB HID设备,端点1作为发送和接收,最大长度都设置为64,但是在监视软件上却能看到65字节。而且STM在发完IN数据后就进入错误中断HardFaultException。这是什么原因啊?为什么OUT 和IN的数据会发两次,第二次多一个00


toofree 发表于 2018-11-29 12:39:34

这个得看程序吧。你给的信息太有限了
有没有发现,你的两组OUT和两组IN,有个相同的现象。
第二次的OUT开头多了一个字节00,所有数据向后错位了一个字节。
设备号不同,一个是55,一个是54.1

a707083746 发表于 2018-11-29 14:08:46

toofree 发表于 2018-11-29 12:39
这个得看程序吧。你给的信息太有限了
有没有发现,你的两组OUT和两组IN,有个相同的现象。
第二次的OUT开头 ...

谢谢,发现了。就是看到数据是65个字节的有点奇怪。。。

流水源 发表于 2018-11-29 14:20:04

你那55应该是54的子层级设备。55的多1个字节应该是USBHID默认值为0的报告ID。这个估计是上层软件驱动自己加的。54.1后面的1是端点1发送的实际数据

a707083746 发表于 2018-11-29 14:52:11

流水源 发表于 2018-11-29 14:20
你那55应该是54的子层级设备。55的多1个字节应该是USBHID默认值为0的报告ID。这个估计是上层软件驱动自己加 ...


谢谢 原来是这样。看来我的硬件错误是别的原因造成的。执行SetEPTxStatus(ENDP1, EP_TX_VALID);发送后就死机了。。。

流水源 发表于 2018-11-29 14:59:42

硬件错误很可能是你的USB发送缓冲区配置不对,导致内存溢出造成的

a707083746 发表于 2018-11-29 15:32:12

流水源 发表于 2018-11-29 14:59
硬件错误很可能是你的USB发送缓冲区配置不对,导致内存溢出造成的

我再看看

jyl518-283289 发表于 2018-11-29 16:59:04

驱动不对,再详细检查下。

a707083746 发表于 2018-11-29 18:42:25

jyl518-283289 发表于 2018-11-29 16:59
驱动不对,再详细检查下。

:handshake

lanmanck 发表于 2020-3-28 16:17:18

是65字节啊,有个叫report id
页: [1]
查看完整版本: STM32 USB HID 为什么能收发65字节