当前位置: 首页 > news >正文

CH573、CH582、CH592、CH585 USBFS HID增加CDC功能_用于输出LOG调试

在开发WCH蓝牙系列芯片时,常常难免会遇到需要DEBUG的场景,这时如果未引出串口引脚,或者串口资源紧张(无IO可用)时,必须引线才可以解决,本篇旨在解决该痛点;

在使用了USB外设的应用下,调试阶段可暂时牺牲两个USB接口+两个USB端点,增加一组CDC设备描述符即可;

 

本篇测试程序基于CH585,链接可自取:

通过网盘分享的文件:CH585EXAM_USBFS_CDC+HID.zip
链接: https://pan.baidu.com/s/1ZY3kew9GmVV2yiCiEGPzuQ?pwd=mquv 提取码: mquv

 

一、修改配置描述符:

整个描述符分为 4 大部分:
  1. 配置描述符:总配置信息
  2. IAD 描述符:声明 CDC 复合接口组
  3. CDC 接口组(接口 0 + 接口 1):虚拟串口功能
  4. HID 接口(接口 2):人机交互设备功能
/* Configuration Descriptor (FS) */
const uint8_t  MyCfgDescr[ ] =
{/* Configure descriptor */0x09, 0x02, 0x6B, 0x00, 0x03, 0x01, 0x00, 0x80, 0x32,/* IAD Descriptor(interface 0/1)*/0x08, 0x0B, 0x00, 0x02, 0x02, 0x02, 0x01, 0x00,/* Interface 0 (CDC) descriptor */0x09, 0x04, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01,  0x00,/* Functional Descriptors */0x05, 0x24, 0x00, 0x10, 0x01,/* Length/management descriptor (data class interface 1) */0x05, 0x24, 0x01, 0x00, 0x01,0x04, 0x24, 0x02, 0x02,0x05, 0x24, 0x06, 0x00, 0x01,/* Interrupt upload endpoint descriptor */0x07, 0x05, 0x81, 0x03, (uint8_t)DevEP1SIZE, (uint8_t)( DevEP1SIZE >> 8 ), 0x01,/* Interface 1 (data interface) descriptor */0x09, 0x04, 0x01, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x00,/* Endpoint descriptor */0x07, 0x05, 0x02, 0x02, (uint8_t)DevEP2SIZE, (uint8_t)( DevEP2SIZE >> 8 ), 0x00,/* Endpoint descriptor */0x07, 0x05, 0x82, 0x02, (uint8_t)DevEP2SIZE, (uint8_t)( DevEP2SIZE >> 8 ), 0x00,/* interface 2 (HID interface) descriptor */0x09, 0x04, 0x02, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00,/* interface 2 HID descriptor */0x09, 0x21, 0x00, 0x01, 0x00, 0x01, 0x22, (uint8_t)sizeof(HIDDescr), (uint8_t )( sizeof(HIDDescr)>>8),/* interface 2 endpoint descriptor*/0x07, 0x05, 0x83, 0x03, (uint8_t)DevEP3SIZE, (uint8_t)( DevEP3SIZE >> 8 ), 0x01,/* interface 2 endpoint descriptor */0x07, 0x05, 0x03, 0x03, (uint8_t)DevEP3SIZE, (uint8_t)( DevEP3SIZE >> 8 ), 0x01,
};

总结如下图:

image

 

二、修改完毕后,枚举即可正常进行,bushound和串口均可以枚举到相应COM,例如下图COM21

imageimage

 

三、由于USB FS的从机例程中并没有加入有关CDC设备的枚举处理,需要修改中断处理才可以接受主机的打开请求,可在下图260、264、268行位置增加命令响应,避免进入default判断后回复stall

image

 

 四、程序修改完毕后,通过串口工具打开COM即可成功,抓包如图

image

 

五、定义CDC上报函数

/********************************************************************** @fn      CDCReport** @brief   上报CDC数据** @return  0:成功*          1:出错*/__HIGH_CODE
void CDCReport(uint8_t* data ,uint8_t len)
{memcpy(pEP2_IN_DataBuf, data, len);DevEP2_IN_Deal(len);
}

 

六、封装USB CDC打印函数

/*** @brief  CDC 发送字符串(日志专用)* @param  str: 要打印的字符串*/
__HIGH_CODE
void CDC_Log(const char* str) {if (str == NULL) return;uint16_t len = strlen(str);CDCReport((uint8_t*)str,len);
}#define LOG_BUF_SIZE 256
uint8_t log_buf[LOG_BUF_SIZE];
__HIGH_CODE
void USB_DEBUG(const char* fmt, ...) {va_list args;va_start(args, fmt);vsnprintf((char*)log_buf, LOG_BUF_SIZE, fmt, args);va_end(args);CDC_Log((char*)log_buf);
}

 

七、主循环调用测试

image

 

八、测试结果

image

 

 

http://www.jsqmd.com/news/656461/

相关文章:

  • 嵌入式系统驱动的分层设计
  • Unity资源逆向工程深度解析:UABEA跨平台架构揭秘与实践指南
  • YOLOv5助力Pixel Couplet Gen:智能识别画面元素并生成情境对联
  • Awakened PoE Trade终极指南:如何快速成为Path of Exile交易高手
  • Panel项目终极路线图:揭秘未来5大发展方向与功能规划全解析
  • 2026年雅思app推荐:智能驱动+真题实战,打造高效提分路径 - 品牌2025
  • 从原理到实战:深度解析路由器四种NAT类型及其对网络应用的影响
  • STM32F103C8T6 + HX711 压力传感器实战:CubeMX配置与卡尔曼滤波降噪全流程
  • 纹理打包技术革命:如何用Free Texture Packer将游戏性能提升300%
  • Eagle框架身份认证与安全:JWT实现和最佳安全实践
  • 如何快速设计小米手表表盘:Mi-Create可视化工具的完整教程
  • 2026年雅思备考app推荐:科学规划提分更高效 - 品牌2025
  • 终极通达信缠论可视化插件:轻松掌握复杂技术分析
  • 【实战解析】C# NPOI实现Excel图片插入与智能列宽调整的进阶技巧
  • rosenbridge开发者指南:如何扩展和定制后门检测工具
  • 告别iOS版本适配噩梦:Chameleon框架的智能依赖管理方案
  • **时序数据库实战:用InfluxDB打造高性能物联网数据存储方案**在当今IoT(物联网)飞速发展的背景下,**时序数据的高效采集、存
  • Curve实战案例分享:在PolarDB、AI训练等场景的应用
  • Panel与Pyodide集成:在浏览器中运行完整的Python应用 [特殊字符]
  • 彻底解决Windows音量栏干扰的专业方案:HideVolumeOSD技术深度解析
  • Axure RP 10实战:如何用母版和动态面板打造可复用的企业级设计规范库
  • 如何用Gopher360实现游戏手柄控制电脑:客厅PC终极解决方案
  • 2026雅思阅读素材App深度测评:五大高分平台全解析 - 品牌2025
  • Kali Linux 2024.2 上DVWA靶场保姆级搭建教程(附MariaDB配置与常见错误修复)
  • 终极指南:如何使用Locale Remulator彻底解决游戏乱码问题
  • 开个线上店铺选哪种工具好?2026年两种方法详解 - 维双云小凡
  • 3个令人惊叹的理由:为什么CodeCombat能让孩子爱上编程学习?
  • 题解:洛谷 AT_abc424_a [ABC424A] Isosceles
  • 用友U9 BOM全阶展开SQL代码详解:从递归CTE到物料清单的完整解析
  • 高效设计全靠它:2026 国产芯片封装 PCB 协同设计软件推荐 - 品牌2026