0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HID设备例程

RTThread物联网操作系统 来源:21ic论坛 作者:21ic论坛 2022-06-22 10:35 次阅读

引入

极海官网上有F407系列的USB库,其名称为APM32F4xx_OTG_SDK,我下载的是V1.1版本。它里面除了USB的驱动外,还包含了主机和设备的例程,例程有三类:鼠标、虚拟串口和U盘。我给大家分享一下我使用的过程中的一些经验。本次主要讲HID设备例程,即鼠标。

我使用的硬件是极海的APM32F407IG MINI Board,它提供了一个全速的USB口(Type B)。打开Device_Examples目录中的HID例程,成功编译下载后,将USB线接上板子,电脑的设备管理器就出现下图所示的设备:

11a5baa6-f158-11ec-ba43-dac502259ad0.png

当出现了新的鼠标设备,那就说明这个例程的枚举是没问题的。在例程中,鼠标的左右移动使用的是KEY1和KEY2控制。此外还有PC8和PC9两个IO能够控制光标的上下移动。当鼠标能够自由控制的时候,说明此例程已经正常运行了。

参数配置

一、工程不同目标的选择

如下图所示,一个Keil工程中共有三个目标,USBD_HID_FS为全速,使用的引脚是PA11和PA12;USBD_HID_HS1为高速,使用的是ULPI接口,引脚配置的很多,因为要外接高速PHY;USBD_HID_HS2为高速,因为内嵌了高速PHY,所以通信引脚主要为PB14和PB15。我之前用它的时候,是直接从PB14和PB15引脚分别外接个0欧姆电阻,然后直接连USB口就可以用了,不过需要保证接线的质量。

MINI板上只有全速,所以这里我主要演示的也是全速。

11be4b2a-f158-11ec-ba43-dac502259ad0.png

二、描述符配置

一般来说,如果只是想控制鼠标的话,例程的描述符可以不作修改。下面简单介绍一下几个描述符的修改方法。

如果想调整设备版本号或者厂商ID和产品ID,可以对设备描述符进行修改,具体方法如下图:

11cf3b74-f158-11ec-ba43-dac502259ad0.png

描述符中,内容最多的当属配置描述符了,它还包含接口描述符、端点描述符等信息,具体用法如下图:

11f47678-f158-11ec-ba43-dac502259ad0.png

121cc5ba-f158-11ec-ba43-dac502259ad0.png

122defa2-f158-11ec-ba43-dac502259ad0.png

123d2396-f158-11ec-ba43-dac502259ad0.png

若想修改字符串表达的信息,可以修改对于的字符串描述符,比如产品字符串描述符:

124e7bfa-f158-11ec-ba43-dac502259ad0.png

其他的比如报告描述符,因为篇幅所以不讲了,视情况再决定是否开一篇专门讲。

三、我们拿到例程之后,该怎么用?

例程是用来做演示的,主要是让人知道这个驱动该怎么用,整个SDK最重要的应该是驱动。我们需要理解好例程中哪些内容是必须的,哪些是可以根据自己需要而修改或者删去的。比如下图就是例程的main函数,除了中断之外的运行内容都在这里了。

12689634-f158-11ec-ba43-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7896

    浏览量

    264000
  • HID
    HID
    +关注

    关注

    2

    文章

    129

    浏览量

    46565

原文标题:APM32芯得 EP.01 | USB_OTG_SDK的HID设备例程

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    linux内核中通用HID触摸驱动

    在linux内核中,为HID触摸面板实现了一个通用的驱动程序,位于/drivers/hid/hid-multitouch.c文件中。hid触摸驱动是以struct
    的头像 发表于 10-29 10:55 248次阅读
    linux内核中通用<b class='flag-5'>HID</b>触摸驱动

    深度解析linux HID核心

    在linux内核中,HID核心是完成HID功能的关键组件,如果内核支持HID,在启动过程中,则会对HID进行初始化,完成该操作的函数是hid
    的头像 发表于 09-29 17:04 349次阅读
    深度解析linux <b class='flag-5'>HID</b>核心

    ESP32-C3下载ble_hid_device_demo例程后自带的USB串口无法识别怎么处理?

    当我在我的板子上下载了ble_hid_device_demo例程后,USB-SERIAL-JTAG口连接到电脑后不能被识别。 设备管理器中显示:未知USB设备
    发表于 06-18 06:39

    编译ESP-IDF4.3下的例程esp_hid_device报错怎么回事?

    我在编译ESP-IDF4.3目录下的例程:esp_hid_device时报错了。
    发表于 06-18 06:04

    usb_hid_host例程键盘多媒体键无响应是哪里出了问题?

    今天用github上最新idf里的USB HID HOST例程尝试了一下,连接键盘以后普通按键都可以正常工作,但是使用键盘上的多媒体键时没有任何反应,之前没有玩过USB HID,不知道是什么问题,望赐教。
    发表于 06-12 06:43

    ESP32有无连接接收BLE HID设备的可能?

    利用相似例程gatt_security_client尝试连接ble hid设备,就是个手机的蓝牙翻页器,能发现并打开ESP_GATT_UUID_HID_SVC服务,搜索
    发表于 06-06 07:43

    stm32 hid设备不能使用endp0发送数据怎么解决?

    stm32 hid例程,修改例程收到特定控制报文后,使用endp0发送数据到主机,能进入发送函数但是主机收不到发送数据,发送函数如下,求指导 static void UsbSendData
    发表于 05-10 08:14

    用USB鼠标例程修改做USB HID通讯,抓取数据出错是为什么?

    用usb鼠标的那个例程改做USB HID通讯,发送8个字节,但是用bus hound抓取,8个字节是分为8个包上来的,有人遇到过类似的问题么?
    发表于 05-07 06:14

    如何用STM32的HID接USB键盘?

    有高手用STM32的HID接过USB键盘么,或者有什么例程、开发板或书籍有这方面的参考?
    发表于 04-28 08:39

    ST-usb-host-hid库如何解决usb扫码枪这类的usb-hid-keyboard设备

    用cube生成的usb-host-hid调试扫码枪的时候只能支持小部分的usb扫码枪,有好几种扫码枪的现象是:枚举成功了,但是在获取设备信息:USBH_HID
    发表于 04-17 06:49

    将STM32L4系列开发板设置为HID设备,为什么不显示HID设备

    想将STM32L4系列开发板设置为HID设备,使用cubeMX进行设计。按照以下步骤设置好后,烧录程式后,显示“大容量存储设备”,而不显示HID设备
    发表于 04-09 06:20

    通过stm32f429 usb host hid发送命令控制hid设备,能枚举不能发送数据的原因?

    大家好,这个问题一直困扰了我好久,我的下位机是hid设备,已经做好无法改变,我想通过stm32f429 usb host hid发送命令控制它,枚举都成功了,就是不能发送数据,我不知道什么原因,有什么好的建议吗?我用的是USBH
    发表于 03-28 09:14

    求助,关于USB复合设备HID+CDC串口问题求解

    分别写了CustomHID的键鼠代码、CDC代码测试均无问题,整合到一起后,插上电脑有时识别串口,有时识别HID,最终过不了几秒HID设备挂掉报代码10,虽然串口显示设备正常运行,但
    发表于 03-07 06:11

    如何在SlaveFifoSync例程中添加HID设备枚举?

    您好,我使用了SlaveFifoSync的32bit模式例程,现在我想在其中添加一个HID设备(鼠标),程序见附件,我参照了Can EZ-USB FX3 enumerate serial
    发表于 02-28 06:31

    什么是通用HID灯镇流器

    荧光灯镇流器中有一种典型的简单高频驱动方法,但是具有高弧光管压力的 HID 灯存在声共振现象(*) 的问题。为了避免这个问题,HID 灯需要以低于 1kHz 的低频或直流驱动。
    发表于 02-02 17:05 541次阅读
    什么是通用<b class='flag-5'>HID</b>灯镇流器