本帖最后由 knva 于 2024-8-5 09:07 编辑

【HPM5301EVKLite】使用cherryUsb库创建一个复合设备(cdc+HID)

接上一文,我已经实现了使用SES+daplink+hpm5301evklite的开发环境,接下来,我的任务目标是使用udp操作鼠标移动,任务核心内容是要制作一个USB复合设备,hpm5301evklite 通过cherryusb库和lwip库,可以实现任务目标。

总体流程如下:

012542w9jpa1iyyqyy95yb

首先第一步,生成一个工程,然后将依赖库导入到项目中,比如本次使用了cherryusb和lwip

012542w3993sb95sw50cg7

接下来第二步,构造设备描述符,cherryusb构造描述符非常简单,从示例项目中复制即可。

第三步,实现dhcp服务器

第四步,实现udp服务器

第五步,实现udp接收数据

第六步,实现hid移动函数

第七步,将接收的指定格式数据读取转换, 调用hid移动函数即可完成。

系统框图如下:

012542llt5b5m8r8jehyjm

1: 生成一个鼠标项目

012543aaw1pplwg12zcztg

2:定义usb端点和描述长度

012543siilvzrl5kvlkkeo

3:配置设备描述符

Cherryusb库的描述符非常容易配置,使用宏定义就可以自动生成。

012543knluzjazyfnjnafz

        4:配置完成后解释一下hid_mouse_init

012545mcs0ukfsrcjj1cjr

第一步配置描述符。

第二步添加端口。

鼠标配置描述初始化。

初始化完毕。        

5:此时可以测试一下复合设备是否能够枚举成功了

通过设备管理器可以看到,复合设备已经枚举启动成功。

012545wj8919gg2ffwgr58

6:实现接收udp数据

012545h666fsyjpw116eje

012548jnmn9p1nnnesm80l

7: 实现hid操作鼠标移动

012548qnqq4n1mnorojrqc


至此 ,已经实现任务目标,接下来就是进行调优,优化启动速度,枚举速度了。

总结:
本项目成功实现了在HPM5301EVKLite开发板上,基于 CherryUSB 和 lwIP 的 USB HID 设备,通过 UDP 接收数据并控制鼠标移动。开发过程中克服了多个挑战,并通过系统化的步骤确保了功能的实现。未来可以在此基础上扩展更多功能,例如增加更多的控制指令或支持其他类型的 HID 设备。

完整视频: