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
    +关注

    关注

    59

    文章

    7448

    浏览量

    258725
  • HID
    HID
    +关注

    关注

    2

    文章

    123

    浏览量

    46299

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

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

收藏 人收藏

    评论

    相关推荐

    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

    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

    NU_Tiny_120开发板IAR烧入BSP中标准USBD_HID_Transfer程序没有反应是为什么?

    。 USBD_HID_Keyboard也不行。例程中PWM可以测到波形。 请教各位可能是什么原因,或者USB作为从HID输入设备还需要什么触发、设置?
    发表于 08-24 06:09

    win7 64位系统M451BSP_v3.0.5提供的USBD_hid例程无法识别是为什么?

    win7 64位系统,M451BSP_v3.0.5提供的USBD_hid例程,无法识别,为什么? 32位系统可用
    发表于 08-23 06:28

    USB设备同时用作CDC和HID时无法正常枚举怎么解决?

    使用RT thread stdio的时候,USB配置成了复合设备(CDC和HID设备)无法正常枚举设备,使用单独HID或者CDC
    发表于 08-20 16:41

    【技术专栏】泰凌微电子USB HID 用户自定义设备应用及调试

    本文主要简单介绍USB HID Vendor Defined设备的应用和调试方法,结合Telink 8355 Dongle做简要说明。 1 USB HID Vendor Defined 设备
    的头像 发表于 07-19 08:40 662次阅读
    【技术专栏】泰凌微电子USB <b class='flag-5'>HID</b> 用户自定义<b class='flag-5'>设备</b>应用及调试

    HID协议是什么意思

    对于 USB 接口的 HID 设备,有一套协议。 1.1 描述符 HID 设备有如下描述符: HID
    的头像 发表于 07-17 17:41 2822次阅读
    <b class='flag-5'>HID</b>协议是什么意思

    win7 64位系统,M451BSP_v3.0.5提供的USBD_hid例程无法识别是为什么?

    win7 64位系统,M451BSP_v3.0.5提供的USBD_hid例程,无法识别,为什么?
    发表于 06-26 07:54

    人机界面介绍(HID

    人机接口设备HID)是一种设备类定义,用于取代PS/2风格具有通用USB驱动程序的连接器以支持HID设备,游戏控制器等等。在
    发表于 06-20 15:43 4次下载

    NUC472 442的USBD _HID设备发送数据函数,请问有没有USB使用查询方式发送数据的例程

    型号:NUC472,官方的 STD Drive 里面有关 USBD_HID设备很难用,只能够枚举成功,但是数据发送不知道怎么发出去(发送我不想通过中断的方式,使用查询即可,但没找到操作的函数在哪里),数据接收可用中断(还没有试下是否可以),请问有没有USB使用查询方式发
    发表于 06-20 06:16