打印
[APM32F4]

USB应用笔记 | 极海USB_OTG_SDK的HID设备例程

[复制链接]
1656|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Tong459 于 2022-5-7 17:51 编辑

#申请原创#

引入

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

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

     

   当出现了新的鼠标设备,那就说明这个例程的枚举是没问题的。在例程中,鼠标的左右移动使用的是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板上只有全速,所以这里我主要演示的也是全速。

   

二、描述符配置

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

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

   

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

   

   

   

         

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

   

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

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

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

   

大致应用的方案我就写到这个程度,如果需要补充的话,可以留言。

使用特权

评论回复
沙发
gouguoccc| | 2022-5-7 18:44 | 只看该作者
测试过速率没有?

使用特权

评论回复
板凳
Tong459|  楼主 | 2022-5-9 09:30 | 只看该作者
gouguoccc 发表于 2022-5-7 18:44
测试过速率没有?

速率没有去专门测它。实际用USB分析仪抓包的时候,丢包不明显。

使用特权

评论回复
地板
麻花油条| | 2022-5-9 11:16 | 只看该作者
这应用笔记也是做的超用心的

使用特权

评论回复
5
Tong459|  楼主 | 2022-5-9 13:45 | 只看该作者
麻花油条 发表于 2022-5-9 11:16
这应用笔记也是做的超用心的

hhh,感谢认可!

使用特权

评论回复
6
WuKaiLi| | 2022-5-9 16:00 | 只看该作者
学习到许多,谢谢!

使用特权

评论回复
7
bestwell| | 2022-5-16 10:01 | 只看该作者
极海都有哪些芯片支持otg/  

使用特权

评论回复
8
elsaflower| | 2022-5-16 10:34 | 只看该作者
为什么要串0欧姆电阻呢   

使用特权

评论回复
9
earlmax| | 2022-5-16 11:32 | 只看该作者
HID设备例程参考一下。  

使用特权

评论回复
10
hearstnorman323| | 2022-5-16 12:04 | 只看该作者
USBD_HID_FS可以到什么速度  

使用特权

评论回复
11
juliestephen| | 2022-5-16 12:37 | 只看该作者
USB_OTG读取的速度怎么样   

使用特权

评论回复
12
Tong459|  楼主 | 2022-6-14 10:30 | 只看该作者
bestwell 发表于 2022-5-16 10:01
极海都有哪些芯片支持otg/

407、417、405、415这几个系列都有,具体可以去官网查看产品型号表

使用特权

评论回复
13
Tong459|  楼主 | 2022-6-14 10:32 | 只看该作者
elsaflower 发表于 2022-5-16 10:34
为什么要串0欧姆电阻呢

具体情况具体分析,我在测试板上串0电阻会让数据更稳定

使用特权

评论回复
14
Tong459|  楼主 | 2022-6-14 10:34 | 只看该作者
hearstnorman323 发表于 2022-5-16 12:04
USBD_HID_FS可以到什么速度

12Mbps

使用特权

评论回复
15
Tong459|  楼主 | 2022-6-14 10:39 | 只看该作者
juliestephen 发表于 2022-5-16 12:37
USB_OTG读取的速度怎么样

我并未对读取速度进行系统的测量,用起来还是蛮快的

使用特权

评论回复
16
lihuami| | 2022-6-20 17:15 | 只看该作者
读取的速度怎么样   

使用特权

评论回复
17
earlmax| | 2022-6-20 17:25 | 只看该作者
这个otg支持多大的?

使用特权

评论回复
18
jtracy3| | 2022-6-20 19:55 | 只看该作者
HID设备例程哪里下载的  

使用特权

评论回复
19
gouguoccc| | 2022-6-20 20:02 | 只看该作者
学习了,谢谢楼主分享。

使用特权

评论回复
20
kmzuaz| | 2022-6-20 21:39 | 只看该作者
谢谢楼主分析的资料。

使用特权

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

本版积分规则

3

主题

10

帖子

0

粉丝