打印
[STM32F4]

STM32F429 USB CustomHID 0x82端点无法发送

[复制链接]
809|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CharlesPP|  楼主 | 2020-5-9 19:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32_USB-Host-Device_Lib_V2.2.0 的USB库,基于usbd_customhid_core.c修改描述符枚举成自定义HID设备。使用端点
#define HID_IN_EP           0x81
#define HID_OUT_EP        0x01

正常收发。

现在想枚举成HID+MSC设备,
MSC使用端点 0x81和0x01,
HID改到端点 0x82和0x02

遇到问题:
HID的0x82端点不能成功发送数据,调用的函数是USBD_CUSTOM_HID_SendReport();
但0x02端点可以接收PC发送的过来的数据。
对应的描述符端点也做了相应的修改,始终没有成功发送,很是困扰,请大家指教。



使用特权

评论回复
沙发
mmuuss586| | 2020-5-16 20:27 | 只看该作者

使用特权

评论回复
板凳
CharlesPP|  楼主 | 2020-5-18 22:46 | 只看该作者

版主大哥,这表情里是不是隐藏着我问题的答案啊,看不懂啊

使用特权

评论回复
地板
walton1226| | 2020-5-19 09:45 | 只看该作者
端点2是批量传输,端点1是中断传输,不可混用瞎用。

/******************** Descriptor  ********************/
    /* 18 */
    0x07,                                                            // 端点描述符长度,= 07H        endpoint descriptor length = 07H
        USB_ENDPOINT_DESCRIPTOR_TYPE,                                        // 端点描述符类型,= 05H        endpoint descriptor type = 05H
        0x81,                                                                                        // 端点1 IN                    endpoint 1 IN
        0x03,                                                                // 中断传输, = 03H             interrupt transfer = 03H
        0x10,0x00,                                                                    // 端点最大包的大小,= 0010H    endpoint max packet size = 0010H
        10,                                                                                                // 传输间隔时间,= 10ms         I
    /******************** Descriptor endpoint ********************/
    /* 27 */
    0x07,                                                            // 端点描述符长度,= 07H        endpoint descriptor length = 07H
        USB_ENDPOINT_DESCRIPTOR_TYPE,                                        // 端点描述符类型,= 05H        endpoint descriptor type = 05H
        0x1,                                                                                        // 端点1 OUT                   endpoint 1 OUT
        0x03,                                                                // 中断传输,= 03H              interrupt transfer = 03H
        0x10,0x00,                                                                    // 端点最大包的大小,= 0010H    endpoint max packet size = 0010H
        10,                                                                                                // 传输间隔时间,
   /* 34 */
    0x07,                                                            // 端点描述符长度,= 07H             endpoint descriptor length = 07H
        USB_ENDPOINT_DESCRIPTOR_TYPE,                                        // 端点描述符类型,= 05H             endpoint descriptor type = 05H
        0x82,                                                                                        // 端点2 IN                                           endpoint 2 IN
        0x02,                                                                        // 批量传输,= 02H                      bulk transfer = 02H
        0x40,0x00,                                                                    // 端点最大包的大小,= 0040H    endpoint max packet size = 0040H
        10,                                               
    /* 41 */
        0x07,                                                            // 端点描述符长度,= 07H        endpoint descriptor length = 07H
        USB_ENDPOINT_DESCRIPTOR_TYPE,                                        // 端点描述符类型,= 05H                   endpoint descriptor type = 05H
        0x2,                                                                                        // 端点2 OUT                                   endpoint 2 OUT       
        0x02,                                                                        // 批量传输,= 02H                           bulk transfer = 02H
        0x40,0x00,                                                                    // 端点最大包的大小,= 0040H           endpoint max packet size = 0040H
        10,               

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

0

粉丝