[APM32F4]

APM32F407的USB HS接口如何实现高速HID?

[复制链接]
675|39
手机看帖
扫描二维码
随时随地手机跟帖
tottionly|  楼主 | 2024-9-23 17:08 | 显示全部楼层 |阅读模式
USB HS接口与PC实现HID的高速通信,理论上每125us 3笔事务,每一秒最多24.576MB。想基于APM32F4xx_DAL_SDK_V1.1的Board_APM32F407_Tiny的Device_Examples的OTGD_Custom_HID_HS2例程修改,请问该如何实现?

使用特权

评论回复
Luckk| | 2024-9-24 09:50 | 显示全部楼层
HID是使用中断传输的,根据USB协议手册,看端点描述符中关于bInterval的值就能知道怎么应用。根据描述修改端点描述符的bInterval值为1就能让主机以1*125us最大速度查询设备端点。
USB EP.png

对照极海的例程,应该是usbd_descriptor.c这个描述符的文件,然后找到配置描述符->端点描述符的USBD_CUSTOM_HID_HS_INTERVAL值,把这个宏改为1就好。这就理论上能达到,实际上还取决于主机何时查询端点,毕竟USB协议是一个主从协议,设备端只能等待主机查询
USB例子.png

使用特权

评论回复
febgxu| | 2024-10-3 08:29 | 显示全部楼层
通过USBD_HardwareInit函数初始化USB OTG HS硬件层寄存器、IO接口,并开启USB中断。

使用特权

评论回复
mattlincoln| | 2024-10-3 09:13 | 显示全部楼层
在微控制器的配置中启用USB HS接口,并设置相关的时钟和引脚配置。

使用特权

评论回复
albertaabbot| | 2024-10-3 10:08 | 显示全部楼层
配置USB HS接口的寄存器,包括使能高速模式、配置端点等。

使用特权

评论回复
ulystronglll| | 2024-10-3 11:04 | 显示全部楼层
可以参考 USB HID 设备的规范和相关的开发文档,了解如何实现 HID 设备的功能。同时,可以使用 APM32F407 的开发库或第三方库来简化 HID 设备的实现过程。

使用特权

评论回复
uiint| | 2024-10-3 12:19 | 显示全部楼层
实现HID类的回调函数,这些函数将在USB事件发生时被调用。

使用特权

评论回复
ingramward| | 2024-10-3 13:57 | 显示全部楼层
APM32官方可能提供了USB相关的库文件,或者你可以使用第三方库如STM32_USB-FS-Device_Lib

使用特权

评论回复
wengh2016| | 2024-10-3 15:45 | 显示全部楼层
在main函数中,通过调用USB_DeviceInit()函数来初始化USB OTG HS外设寄存器、IO配置、设备描述符、配置描述符、字符串描述符以及HID类回调函数等。这个函数内部会设置USB接口的速度为高速(HS),并初始化相关的USB设备描述符和操作函数。

使用特权

评论回复
modesty3jonah| | 2024-10-3 17:25 | 显示全部楼层
在USB通信中,HID设备通常使用中断传输。要实现高速HID,需要修改端点描述符中的bInterval值。将bInterval设置为1,可以让主机以1*125us的最大速度查询设备端点。

使用特权

评论回复
wangdezhi| | 2024-10-3 19:00 | 显示全部楼层
优化中断处理程序,以减少中断延迟并提高数据处理效率。

使用特权

评论回复
juliestephen| | 2024-10-3 20:37 | 显示全部楼层
检查APM32F407的USB HS接口配置是否正确,包括时钟配置、端点配置等。

使用特权

评论回复
jackcat| | 2024-10-4 13:40 | 显示全部楼层
根据实际应用场景调整参数,如缓冲区大小、中断优先级等,以获得最佳性能。

使用特权

评论回复
cashrwood| | 2024-10-4 15:22 | 显示全部楼层
合理管理发送和接收缓冲区,避免数据丢失或延迟。

使用特权

评论回复
pentruman| | 2024-10-4 17:08 | 显示全部楼层
在PC端,你需要有能够识别并与之通信的高速HID设备的软件。这可以是自定义的应用程序或者使用通用的USB测试工具。

使用特权

评论回复
jtracy3| | 2024-10-4 18:47 | 显示全部楼层
在布局和布线时,注意提高开发板的抗干扰能力,以减少外部干扰对USB通信的影响。

使用特权

评论回复
mnynt121| | 2024-10-4 20:25 | 显示全部楼层
在设备描述符中,设置正确的VID(Vendor ID)和PID(Product ID),以及设备类、子类、协议等字段,以标识为HID设备。
配置HID描述符,包括报表描述符、输入/输出/功能报表的最大长度等。

使用特权

评论回复
pentruman| | 2024-10-4 22:01 | 显示全部楼层
使用Keil或其他支持的编译器编译修改后的代码。
将生成的固件下载到APM32F407开发板。

使用特权

评论回复
sdlls| | 2024-10-5 09:12 | 显示全部楼层
编写处理HID类请求的回调函数,如设置/获取报表、处理中断等。
在回调函数中,根据HID协议处理接收到的数据,并生成相应的响应。

使用特权

评论回复
louliana| | 2024-10-5 10:45 | 显示全部楼层
使用APM32F4xx_DAL_SDK_V1.1提供的Board_APM32F407_Tiny的Device_Examples中的OTGD_Custom_HID_HS2例程作为起点。

使用特权

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

本版积分规则

9

主题

36

帖子

1

粉丝