renlei_bit 发表于 2018-1-20 19:20:51

STM32复合设备通信异常,求助

求助各位大大,我是用stm32做一个复合设备,声明了两个接口,一个HID标准键盘和一个自定义HID设备,但是在发送数据的时候,由于HID标准键盘帧是8个字节,如果自定义HID设备也发送8个字节是可以的,但是发送其他数目的字节,例如9个,16个,64个,都会导致HID标准键盘的数据帧异常,从而导致键盘功能异常,此时自定义HID设备发送的数据帧是正确的。

maxtch 发表于 2018-1-20 19:59:40

你分别在两个不同的 Interface,两个不同的 Endpoint 上干活啊……我做 HID+CDC+MSC 的复合设备没有两个请求是一致的都没关系……

renlei_bit 发表于 2018-1-20 20:17:20

maxtch 发表于 2018-1-20 19:59
你分别在两个不同的 Interface,两个不同的 Endpoint 上干活啊……我做 HID+CDC+MSC 的复合设备没有两个请 ...

对啊   按我自己的理解,我是两个interface各自定义了一个endpoint,然后用各自的endpoint往PC端发数,这样有问题吗   刚入行不太懂:'(

maxtch 发表于 2018-1-20 21:08:00

renlei_bit 发表于 2018-1-20 20:17
对啊   按我自己的理解,我是两个interface各自定义了一个endpoint,然后用各自的endpoint往PC端发数,这 ...

就是这个意思。设备描述符里面用 IAD 分隔成两个 Interface,各自定义 Endpoint,有两个单独的 Report Descriptor,各自独立工作。

toofree 发表于 2018-1-20 22:52:21

先用HID Descriptor tool检查一下,描述符字段是否正确。复合设备,可以帧长度不同。

renlei_bit 发表于 2018-1-21 11:02:59

本帖最后由 renlei_bit 于 2018-1-21 11:22 编辑

toofree 发表于 2018-1-20 22:52
先用HID Descriptor tool检查一下,描述符字段是否正确。复合设备,可以帧长度不同。 ...
自定义HID设备的帧长度等于8个字节就没问题,现在是小于或者大于8个字节就影响键盘数据帧的发送。看描述符没问题啊

renlei_bit 发表于 2018-1-21 11:24:24

maxtch 发表于 2018-1-20 21:08
就是这个意思。设备描述符里面用 IAD 分隔成两个 Interface,各自定义 Endpoint,有两个单独的 Report De ...

就是这么干的啊   不知道怎么会出现这个问题   两个接口分别发不同长度的数据帧应该没问题的才对

没事逛荡 发表于 2018-1-21 18:57:56

用抓包工具看看键盘的数据帧是怎么个异常的情况。
正常来说,不同的设备走不同的通道,互不影响的。
页: [1]
查看完整版本: STM32复合设备通信异常,求助