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

【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 固件。

http://www.xdnf.cn/news/13790.html

相关文章:

  • 观测云,全球领先的监控观测平台亮相亚马逊云科技中国峰会!
  • 迭代优化法解决问题实例
  • day27/60重写(补充)
  • 流体仿真CFD技术在好氧活性污泥曝气系统改造中的应用
  • module_obj笔记
  • 手阳明大肠经之温溜穴
  • MySQL基础知识(DDL、DML)
  • YOLO-FireAD:通过混合注意力与双池化融合实现高精度实时火灾检测
  • 【PyQt5】从零开始的PyQt5 - QTextEdit 篇
  • 2025北京智源大会核心内容
  • RAG系统中Rerank技术的深度解析与应用实践
  • DNS的工作原理
  • 【AI News | 20250611】每日AI进展
  • IPv6检测指标中的IPv6授权体系是什么意思?(国科云)
  • HTML5 定位网页元素
  • 让DELPHI11及之后的新版本编译的程序支持Windows XP
  • 2025暑假第三十二届全国高校人工智能(多模态大模型+具身智能)与嵌入式高级师资培训通知
  • 6.11本日总结
  • MVVM 分层思想详解
  • Binder
  • matlab脉冲信号并绘制波形2025.6.11
  • 12.安卓逆向2-frida hook技术-HookJava重载方法
  • element-MessageBox 弹框组件 调整按钮位置(确认在左,取消在右)、删除场景回车调取消事件,默认调确认事件
  • 串口通信入门基础
  • 【Linux】Makefile基础
  • Halcon深度图转换(real、uint2、byte)
  • 基本多线程编译make命令
  • 达梦数据库raw绑定磁盘-DSC集群部署
  • 再说一说LangChain Runnable接口
  • 禁止虚拟机里的Win10的Windows Defender