【HPM5301EVKLite】使用cherryUsb库创建一个复合设备(cdc+HID)
接上一文,我已经实现了使用SES+daplink+hpm5301evklite的开发环境,接下来,我的任务目标是使用udp操作鼠标移动,任务核心内容是要制作一个USB复合设备,hpm5301evklite 通过cherryusb库和lwip库,可以实现任务目标。
总体流程如下:
首先第一步,生成一个工程,然后将依赖库导入到项目中,比如本次使用了cherryusb和lwip
接下来第二步,构造设备描述符,cherryusb构造描述符非常简单,从示例项目中复制即可。
第三步,实现dhcp服务器
第四步,实现udp服务器
第五步,实现udp接收数据
第六步,实现hid移动函数
第七步,将接收的指定格式数据读取转换, 调用hid移动函数即可完成。
系统框图如下:
1: 生成一个鼠标项目
2:定义usb端点和描述长度
3:配置设备描述符
Cherryusb库的描述符非常容易配置,使用宏定义就可以自动生成。
4:配置完成后解释一下hid_mouse_init
第一步配置描述符。
第二步添加端口。
鼠标配置描述初始化。
初始化完毕。
5:此时可以测试一下复合设备是否能够枚举成功了
通过设备管理器可以看到,复合设备已经枚举启动成功。
6:实现接收udp数据
7: 实现hid操作鼠标移动
至此 ,已经实现任务目标,接下来就是进行调优,优化启动速度,枚举速度了。
总结:
本项目成功实现了在HPM5301EVKLite开发板上,基于 CherryUSB 和 lwIP 的 USB HID 设备,通过 UDP 接收数据并控制鼠标移动。开发过程中克服了多个挑战,并通过系统化的步骤确保了功能的实现。未来可以在此基础上扩展更多功能,例如增加更多的控制指令或支持其他类型的 HID 设备。
完整视频: