自定义USB HID 128字节自收自收 + 上位机源码

2019-07-20 23:18发布

1、通过STM32CubeMX生成自定义HID类2、把每个端点(共用到两个)的缓存设置为64字节,需改HID用户函数参数类型(字节改为指针)

3、通过参考文档《HID设备报告描述符详解-划出重点》中关于HID设备描述符的介绍,设计HID描述符
4、通过《[size=13.3333px]HID Descriptor Tool》工具,设置HID描述符并验证,HID报告描述符如下:
  /* USER CODE BEGIN 0 */
        //报告描述符---------------------------------------
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x00,                    // USAGE (Undefined)   //自定义
    0xa1, 0x01,                    // COLLECTION (Application)
    0x15, 0x00,                    //   LOGICAL_MINIMUM (0)  //值最小为 0
    0x26, 0xff, 0x00,              //   LOGICAL_MAXIMUM (255)  //最大为255
    0x19, 0x00,                    //   USAGE_MINIMUM (Undefined)
    0x29, 0x39,                    //   USAGE_MAXIMUM (Hat switch)
    0x75, USBD_CUSTOMHID_OUTREPORT_BUF_SIZE,                    //   REPORT_SIZE (8)  每包数据大小
    0x95, 0x08,                    //   REPORT_COUNT (8) 每个数据的bit 数  8个bit 即一个字节
    0x81, 0x02,                    //   INPUT (Data,Var,Abs)
    0x09, 0x00,                    //   USAGE (Undefined)  //自定义
    0x91, 0x02,                    //   OUTPUT (Data,Var,Abs)
  /* USER CODE END 0 */
  0xC0    /*     END_COLLECTION                     */


其中宏USBD_CUSTOMHID_OUTREPORT_BUF_SIZE的值为128,表示发送和接收的数据包长度(这里配置成全为一样长度),宏USBD_CUSTOMHID_OUTREPORT_BUF_SIZE同时也是HID类结构体中数据缓存的长度及接收一个包的长度,由于没有配置Report ID,所以其值默认为0,固上位机发送给设备的数据格式为 00 + 128字节数据 ,共129个字节


5、上位机完全参考 圈圈USB 中的上位机,只是稍微修改了下
6、如果想修改发送和接收数据包长度,只需要需改宏USBD_CUSTOMHID_OUTREPORT_BUF_SIZE的值,建议最大为255,如果大于这个值则需要修改HID报告描述符
7、通过STM32CubeMX生成自定义HID类请参考论坛帖子  http://www.openedv.com/forum.php ... highlight=usb%2Bhid  ,在这就不重复了
USB HID上位机 USB HID上位机
上位机界面如上,在使用时请注意VID、PID、PVN,发送数据时第一个字节必须为00,后面接着为128个字节数据,数据的发送只支持十六进制

8、如果想在此基础上通过通信协议进行设计,建议采用USB描述符类似格式,即 长度 + 数据 。
比如想发送命令码 0X55 ,数据内容为 0X11 0X22 0X33,则发送给USB设备的数据格式为  0X00(固定,必须为0X00) 0X04(长度,表示此帧有效数据长度,包括本字节) 0X11 0X22 0X33 + 124个字节数据

STM32F1_USER_HID_TEST.zip (3.83 MB, 下载次数: 3573) 2017-5-4 17:41 上传 点击文件名下载附件
USB HID工程

原子F103ZET6 USB HID 工程代码
USB_HID_Com.zip (3.39 MB, 下载次数: 3378) 2017-5-4 17:42 上传 点击文件名下载附件
USB HID上位机

USB HID 上位机 ,开发环境为VS2013,如果编译保存找不到头文件,请把下面的头文件及.LIB文件拷贝到VS2013的包含路径下
HID设备读写头文件.zip (61.64 KB, 下载次数: 387) 2017-5-4 17:44 上传 点击文件名下载附件
HID设备读写头文件

HID设备读写头文件
HID Descriptor Tool.zip (131.81 KB, 下载次数: 419) 2017-5-4 17:43 上传 点击文件名下载附件
HID Descriptor Tool

HID Descriptor Tool 工具及《HID设备报告描述符详解-划出重点》文档

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。