10分钟掌握CherryUSB设备开发:从CDC到HID的完整示例教程
CherryUSB是一个小而美的、可移植性高的、用于嵌入式系统(带USB IP)的高性能USB主从协议栈。本教程将带你快速掌握CherryUSB设备开发,从基础的CDC(通信设备类)到常用的HID(人机接口设备),通过实际示例了解如何在嵌入式系统中轻松实现USB功能。## CherryUSB架构概览CherryUSB采用分层架构设计,分为设备控制器驱动、USB核心层、设备类驱动和操作系统抽
10分钟掌握CherryUSB设备开发:从CDC到HID的完整示例教程
CherryUSB是一个小而美的、可移植性高的、用于嵌入式系统(带USB IP)的高性能USB主从协议栈。本教程将带你快速掌握CherryUSB设备开发,从基础的CDC(通信设备类)到常用的HID(人机接口设备),通过实际示例了解如何在嵌入式系统中轻松实现USB功能。
CherryUSB架构概览
CherryUSB采用分层架构设计,分为设备控制器驱动、USB核心层、设备类驱动和操作系统抽象层,支持多种USB设备类和主机控制器。
核心功能特点
- 多设备类支持:包括CDC、HID、MSC、Audio、Video等常见USB设备类
- 跨平台兼容:支持STM32、ESP32、CH32等多种嵌入式平台
- 高性能:优化的USB数据传输机制,支持高速USB 2.0
- 易移植:清晰的代码结构和硬件抽象层设计
快速开始:环境搭建
1. 获取源码
git clone https://gitcode.com/cherry-embedded/CherryUSB
2. 安装组件(以ESP32为例)
CherryUSB已集成到ESP-IDF组件管理器,可直接在ESP Registry中搜索安装。
3. 硬件配置
以STM32为例,需要配置USB引脚和时钟:
CDC设备开发:创建虚拟串口
CDC(通信设备类)是最常用的USB设备类之一,可实现虚拟串口功能。
1. 选择CDC模板
在CherryUSB的demo目录中提供了CDC ACM模板:
2. 核心代码实现
// 初始化USB设备
usbd_desc_register(&usbd_cdc_acm_desc);
usbd_add_interface(&cdc_acm_intf);
usbd_initialize();
// 数据发送
uint8_t data[] = "Hello CherryUSB!";
usbd_ep_write(CDC_ACM_IN_EP, data, sizeof(data));
3. 测试效果
编译烧录后,电脑会识别到一个虚拟串口,通过串口助手可接收设备发送的数据。
HID设备开发:实现自定义输入设备
HID(人机接口设备)适用于键盘、鼠标、游戏手柄等输入设备。
1. HID设备配置
CherryUSB提供了多种HID模板,包括键盘、鼠标和自定义HID设备:
2. 报告描述符定义
HID设备需要定义报告描述符来描述设备功能:
static const uint8_t hid_report_desc[] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x02, // USAGE (Mouse)
0xA1, 0x01, // COLLECTION (Application)
// ... 报告描述符内容 ...
0xC0 // END_COLLECTION
};
3. 数据上报
// 鼠标移动示例
uint8_t mouse_report[4] = {0x00, dx, dy, 0x00};
usbd_ep_write(HID_IN_EP, mouse_report, sizeof(mouse_report));
高级示例:多设备复合
CherryUSB支持多设备复合功能,可同时实现多个USB设备类。
1. 复合设备配置
2. 配置菜单
通过配置工具选择需要启用的设备类:
性能测试
MSC设备速度测试
使用CrystalDiskMark测试USB Mass Storage设备的读写速度:
RNDIS网络性能
CherryUSB的RNDIS设备可实现网络连接,测试网速可达100Mbps以上:
总结
通过本教程,你已经了解了CherryUSB的基本架构和设备开发流程。从简单的CDC虚拟串口到复杂的复合设备,CherryUSB提供了丰富的示例和灵活的API,帮助你快速实现各种USB设备功能。
更多详细文档和示例可参考项目中的官方文档:
现在就开始你的CherryUSB开发之旅吧!只需10分钟,即可让你的嵌入式设备拥有强大的USB功能。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐









所有评论(0)