OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5650|回复: 1

ALIENTEK 怎么实现自定义的HID USB设备并和上位机通信

[复制链接]

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2020-12-3 08:53:25 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 wang12zhe 于 2020-12-3 08:54 编辑


这几天在研究Linux 下的USB Gadget HID 设备,想自定义一个HID设备和上位机通信,

步骤1
根据源码里\Documentation\usb\gadget_hid.txt 文档描述帮参考https://blog.csdn.net/luckywang1103/article/details/41282551 的文章后,在出厂源码的基础上进行修改
自己将hidg_func_description实现成如下的样子

static struct hidg_func_descriptor my_hid_data = {
    .subclass           = 0, /* No subclass */
    .protocol           = 1, /* Keyboard */
    .report_length      = 8,
    .report_desc_length = 63,
    .report_desc        = {

        // Custom communication
          0x06,0xA0,0xFF,//用法页(FFA0h, vendor defined)
          0x09, 0x01,//用法(vendor defined)
          0xA1, 0x01,//集合(Application)
          0x09, 0x02 ,//用法(vendor defined)
          0xA1, 0x00,//集合(Physical)
          0x06,0xA1,0xFF,//用法页(vendor defined)
          //输入报告
          0x09, 0x03 ,//用法(vendor defined)
          0x09, 0x04,//用法(vendor defined)
          0x15, 0x80,//逻辑最小值(0x80 or -128)
          0x25, 0x7F,//逻辑最大值(0x7F or 127)
          0x35, 0x00,//物理最小值(0)
          0x45, 0xFF,//物理最大值(255)
          0x75, 0x08,//报告长度Report size (8位)
          0x95, 0x40,//报告数值(64 fields)
          0x81, 0x02,//输入(data, variable, absolute)
          //输出报告
          0x09, 0x05,//用法(vendor defined)
          0x09, 0x06,//用法(vendor defined)
          0x15, 0x80,//逻辑最小值(0x80 or -128)
          0x25, 0x7F,//逻辑最大值(0x7F or 127)
          0x35, 0x00,//物理最小值(0)
          0x45,0xFF,//物理最大值(255)
          0x75,0x08,//报告长度(8位)
          0x95, 0x40,//报告数值(64 fields)
          0x91, 0x02,//输出(data, variable, absolute)
          0xC0,//集合结束(Physical)
          0xC0//集合结束(Application)
    }
};



然后编译并加载模块后,通过OTG 线将开发板街道电脑上,在Win10的设备管理器发现了这个HID 设备,但是显示驱动不正常,下图中带黄色的感叹号图标的就是识别到的HID 设备



问题1. 为什么Windows里不能识别这个USB设备,如何才能让Windows 识别该设备并正常通信?

问题2.
我尝试修改 hidg_func_description 里的report_desc,参考网上的report_desc的值(对应着键盘和鼠标),WIN10里能正常识别,但USB 调试助手无法打开对应的设备,这个问题是不是因为Windows独占了键盘和鼠标?

有大神做过相应的应用吗,还请不吝赐教

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-12-4 02:12:08 | 显示全部楼层
HID你得有上位机啊。。。所以我们一般建议用虚拟串口最好了,又能通信,又有例程,又简单。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 20:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表