STM32复合设备通信异常,求助
求助各位大大,我是用stm32做一个复合设备,声明了两个接口,一个HID标准键盘和一个自定义HID设备,但是在发送数据的时候,由于HID标准键盘帧是8个字节,如果自定义HID设备也发送8个字节是可以的,但是发送其他数目的字节,例如9个,16个,64个,都会导致HID标准键盘的数据帧异常,从而导致键盘功能异常,此时自定义HID设备发送的数据帧是正确的。你分别在两个不同的 Interface,两个不同的 Endpoint 上干活啊……我做 HID+CDC+MSC 的复合设备没有两个请求是一致的都没关系…… maxtch 发表于 2018-1-20 19:59
你分别在两个不同的 Interface,两个不同的 Endpoint 上干活啊……我做 HID+CDC+MSC 的复合设备没有两个请 ...
对啊 按我自己的理解,我是两个interface各自定义了一个endpoint,然后用各自的endpoint往PC端发数,这样有问题吗 刚入行不太懂:'( renlei_bit 发表于 2018-1-20 20:17
对啊 按我自己的理解,我是两个interface各自定义了一个endpoint,然后用各自的endpoint往PC端发数,这 ...
就是这个意思。设备描述符里面用 IAD 分隔成两个 Interface,各自定义 Endpoint,有两个单独的 Report Descriptor,各自独立工作。 先用HID Descriptor tool检查一下,描述符字段是否正确。复合设备,可以帧长度不同。 本帖最后由 renlei_bit 于 2018-1-21 11:22 编辑
toofree 发表于 2018-1-20 22:52
先用HID Descriptor tool检查一下,描述符字段是否正确。复合设备,可以帧长度不同。 ...
自定义HID设备的帧长度等于8个字节就没问题,现在是小于或者大于8个字节就影响键盘数据帧的发送。看描述符没问题啊 maxtch 发表于 2018-1-20 21:08
就是这个意思。设备描述符里面用 IAD 分隔成两个 Interface,各自定义 Endpoint,有两个单独的 Report De ...
就是这么干的啊 不知道怎么会出现这个问题 两个接口分别发不同长度的数据帧应该没问题的才对 用抓包工具看看键盘的数据帧是怎么个异常的情况。
正常来说,不同的设备走不同的通道,互不影响的。
页:
[1]