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

【C】 USB CDC、Bulk-OUT 端点

嵌入式固件开发中,CDC 通常指的是 USB CDC(Communications Device Class),是 USB 协议中的一个设备类


🔧 什么是 USB CDC?

USB CDC 是一种 USB 设备类标准,用于模拟传统的串口通信(如 UART、RS-232)——也就是说,它允许嵌入式设备通过 USB 接口表现得像一个串口设备。

关键点:

  • CDC = Communications Device Class
  • 是 USB 协议中为“通信设备”定义的标准类
  • 通常用于实现虚拟串口(Virtual COM Port)

在嵌入式固件中的应用

在 STM32、NXP、ESP32 等 MCU 的 USB 功能中,使用 USB CDC 类,可以让你的设备:

  • 通过 USB 接口与主机通信
  • 在主机上枚举成一个 COM 端口(比如 Windows 里显示为 COM4)
  • 不再需要传统的串口硬件(TX/RX 引脚)

常见应用场景:

应用描述
USB 虚拟串口嵌入式设备通过 USB 提供调试/日志输出
配置接口用户通过 USB COM 端口配置设备参数
数据传输通过 USB 串口传输数据,如 GPS 模块、传感器数据等

示例:STM32 上的 USB CDC

在 STM32CubeMX 中配置 USB:

  1. 将 USB 模式设置为 Device
  2. Class 选择为 Communication Device Class (Virtual Port Com)
  3. 生成代码后,你可以通过 USBD_CDC.c/h 来发送/接收数据
  4. 使用 CDC_Transmit_FS() 来发送数据给主机

与其他 USB 类的对比:

USB 类功能
CDC通信设备类(虚拟串口)
HID人机接口设备(鼠标、键盘)
MSC大容量存储(U盘)
DFU固件升级(Device Firmware Upgrade)

小结

内容
名称USB CDC(Communications Device Class)
用途实现虚拟串口通信(USB ↔ 主机)
应用调试、配置、数据传输等
优点无需传统串口,速度快,稳定性高

Bulk-OUT 端点” 可以拆解成两部分来理解:

  1. 端点(Endpoint)

    • 在 USB 设备上,每个接口(Interface)会定义若干个“端点”,就像“水管”的进出口,用于不同类型的数据传输。
    • 每个端点都有一个编号(Endpoint Number),并分为 IN 或 OUT 两种方向。
  2. OUT vs IN

    • OUT 代表数据从 Host → 设备(Device)。
    • IN 代表数据从 设备 → Host
  3. Bulk 传输类型

    • USB 定义了几种传输类型:Control/Interrupt/Isochronous/Bulk。
    • Bulk 传输适用于大块、对时延不敏感但需要保证可靠到达的数据,比如文件传输或串口模拟。
    • 它在总线上尽可能多地抢占带宽,但如果总线空闲,Bulk 传输能获得全速。

所以,“那帧报文是由 USB 主机发到某个 Bulk-OUT 端点” 的意思就是:

  • 主机(通常是你的 PC)通过 USB 连接,已经把设备识别(枚举)好了;
  • 它选择了某个 编号为 X 的 Bulk-OUT 端点(例如端点地址 0x01),把一段 大块数据(如你图中的 5ZZZZZ…)发送给设备;
  • 设备上负责这个端点的固件代码(usbd_cdc_if.cCDC_Receive_HS 回调)就会被触发,把数据放到缓冲区,供上层程序处理。

总结一下:

Bulk-OUT 端点 = 一条“主机→设备”方向的大块数据通道——Host 通过它,把自己的报文(“55ZZZZZ …”)发给 MCU 上运行的 USB-CDC 固件。

相关文章:

  • PostgresSQL日常维护
  • 网页组件强制设置右对齐
  • python下载与开发环境配置
  • 从“字对字“到“意对意“:AI翻译正在重塑人类的语言认知模式
  • 观测云,全球领先的监控观测平台亮相亚马逊云科技中国峰会!
  • SecureRandom.getInstanceStrong() 与虚拟机的爱恨情仇
  • 【更新】中国经济政策不确定性指数数据集(2000.1-2025.5)
  • 2025 年二级造价工程师职业资格考试的报考条件有哪些新变化?
  • 【Java】Arrays.sort:TimSort
  • 560. 和为K的子数组
  • 软件测试之APP测试要点(包含Monkey基础使用)
  • C++实现文本编辑功能
  • C primer plus (第六版)第七章 编程练习第4题,第5题
  • 企业如何高效构建BI团队,解锁数据价值新高地?
  • 解锁Wi-SUN潜能!移远通信发布KCM0A5S模组,点亮智慧城市新图景
  • 利用递归来遍历树
  • 蛋糕烘焙小程序源码介绍
  • 阿糖胞苷联合伊达比星为代表的强化治疗方案引领AML多阶段治疗新进展
  • UFS-Ver3.1-第九章
  • docker 安装postgre并使用php进行连接
  • 工信部网站备案规定/网络营销的十大特点
  • 洛阳疫情最新消息今天又封了/公众号关键词排名优化
  • 关注网站怎么做/seo关键字优化软件
  • 360建筑网忘记密码怎么办/成都关键词优化平台
  • 网站建设品牌公司推荐/郑州网站技术顾问
  • 宁波建站平台/公司注册