打印
[开发工具]

USB通信设备类CDC简介

[复制链接]
2166|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LLGTR|  楼主 | 2023-2-22 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
USB通信设备类CDC分类编号为0x0a,且必须指定为接口设备类。
USB 通信设备类(或USB CDC类)是一个复合通用串行总线 设备类。
通信设备类用于类似于网卡的计算机网络设备,提供用于将以太网或ATM帧传输到某些物理介质的接口。它还用于调制解调器、ISDN、传真机和电话应用程序以执行常规语音呼叫。
Windows Vista之前的Microsoft Windows版本不与 USB CDC 的网络部分一起使用,而是使用 Microsoft 自己的衍生产品Microsoft RNDIS ,这是Microsoft NDIS(网络驱动程序接口规范)的序列化版本。通过供应商提供的INF 文件,Windows Vista 可以与 USB CDC 和 USB WMCDC 设备一起使用。
此类可用于 CNC 机械等工业设备,以允许从旧的RS-232串行控制器和机器人进行升级,因为它们可以保持软件兼容性。该设备连接到 RS-232 通信线路,USB 端的操作系统使 USB 设备显示为传统的 RS-232 端口。Prolific Technology、FTDI、Microchip和Atmel等芯片制造商为开发 USB RS-232 设备提供了便利。
此类设备也在嵌入式系统(例如移动电话)中实现,因此电话可以用作调制解调器、传真或网络端口。数据接口通常用于执行批量数据传输。
CDC实现示例
通信设备类 (CDC)支持范围广泛的可以执行电信和网络功能的设备。通讯设备的例子有:
  • 使用CDC的ACM(抽象控制模型)子类模拟虚拟 COM 端口。使用CDC的ACM(抽象控制模型)子类使用RDNIS协议模拟网络连接。这支持Windows 主机 PC 和嵌入式设备之间的 USB 网络连接,以及USB 设备 RNDIS 到以太网桥应用程序。
  • 使用 CDC 的NCM(网络控制模型)子类模拟以太网适配器(仅适用于USB 设备)。使用 CDC (NCM),您可以在基于 Linux 的主机系统上创建Ethernet-over-USB(适用于 Linux 主机)应用程序。
CDC类功能
通信设备具有三个基本任务:
  • 设备管理(控制配置特定设备并通知 USB 主机某些事件)
  • 呼叫管理(建立和终止电话呼叫或其他连接)
  • 数据传输(发送和接收应用数据)
USB 组件中的 CDC 实现具有:
  • 使用CDC的ACM(抽象控制模型)子类模拟虚拟 COM 端口。
  • 使用CDC的ACM(抽象控制模型)子类使用RDNIS协议模拟网络连接。这支持Windows 主机 PC 和嵌入式设备之间的 USB 网络连接,以及USB 设备 RNDIS 到以太网桥应用程序。
  • 使用 CDC 的NCM(网络控制模型)子类模拟以太网适配器(仅适用于USB 设备)。使用 CDC (NCM),您可以在基于 Linux 的主机系统上创建Ethernet-over-USB(适用于 Linux 主机)应用程序。
CDC端点
支持以下端点配置:
一个用于通知 USB 主机的中断 IN 端点
一个BULK输入和一个ULK输出端点用于数据传输
USB-IF CDC类规范文件
  • 通信设备 1.2 的类定义
  • 通信设备 1.1 的类定义
  • 应用笔记,从 RS-232 迁移到 USB 桥接器规范。解释如何使用 USB CDC(通信设备类)ACM(抽象控制模型)来模拟 USB 上的串行端口
USB 描述符
USB CDC ACM 设备中需要以下描述符:
  • 标准设备描述符
  • 标准配置描述符
  • 接口关联描述符
  • CDC头功能描述符
  • CDC 联合功能描述符
  • 呼叫管理功能描述符
  • 抽象控制管理功能描述符
  • CDC 类通信接口的标准接口描述符
  • 中断 IN 端点的标准端点描述符
  • CDC 类数据接口的标准接口描述符
  • Bulk IN 和 Bulk OUT 端点的标准端点描述符
USB CDC NCM 设备中需要以下描述符:
  • 标准设备描述符
  • 标准配置描述符
  • 接口关联描述符
  • CDC头功能描述符
  • CDC 联合功能描述符
  • CDC 以太网网络功能描述符
  • NCM 功能描述符
  • CDC 类通信接口的标准接口描述符
  • 中断 IN 端点的标准端点描述符
  • CDC 类数据接口的标准接口描述符
  • Bulk IN 和 Bulk OUT 端点的标准端点描述符

使用特权

评论回复
沙发
chenqianqian| | 2023-2-22 18:09 | 只看该作者
USB协议还是一个很复杂,很庞大的协议了.

使用特权

评论回复
板凳
星辰大海不退缩| | 2023-2-23 16:58 | 只看该作者
CDC USB Driver支持以下子类:ECM、NCM、ACM、OBEX、设备管理

使用特权

评论回复
地板
LLGTR|  楼主 | 2023-4-7 13:21 | 只看该作者
chenqianqian 发表于 2023-2-22 18:09
USB协议还是一个很复杂,很庞大的协议了.

是的,但是我们会用就可以啦。

使用特权

评论回复
5
LLGTR|  楼主 | 2023-4-7 13:21 | 只看该作者
星辰大海不退缩 发表于 2023-2-23 16:58
CDC USB Driver支持以下子类:ECM、NCM、ACM、OBEX、设备管理

一般用的就是ACM,其他我用的比较少。

使用特权

评论回复
6
louliana| | 2023-4-9 14:37 | 只看该作者
usbcdc可以双向通信吗               

使用特权

评论回复
7
mmbs| | 2023-4-9 15:11 | 只看该作者
usb cdc 就是虚拟串口吗  

使用特权

评论回复
8
ulystronglll| | 2023-4-9 15:43 | 只看该作者
STM32 USB FS CDC是STM32微控制器的一个功能,它实现了USB FS(全速USB)和CDC(通用数据通信)协议,可以将STM32芯片作为USB CDC设备使用。

使用特权

评论回复
9
qiufengsd| | 2023-4-9 16:06 | 只看该作者
如何修改USB CDC成为自定义USB Bulk批量传输设备

使用特权

评论回复
10
eefas| | 2023-4-9 16:20 | 只看该作者
怎样判断一个USB设备的类型  

使用特权

评论回复
11
Undshing| | 2023-4-11 21:55 | 只看该作者
cdc 就是虚拟串口吗

使用特权

评论回复
12
nomomy| | 2023-4-18 13:37 | 只看该作者
在使用时,需要进行相应的配置和编程,并注意USB初始化和中断处理等细节问题。

使用特权

评论回复
13
pentruman| | 2023-4-18 16:37 | 只看该作者
在程序中添加USB初始化代码和USB中断处理代码,以便能够正确地进行USB通信。在中断处理函数中,一般需要处理USB传输完成和USB错误等情况。

使用特权

评论回复
14
kkzz| | 2023-4-22 23:30 | 只看该作者
在stm32微控制器中,需要将USB接口引脚与STM32CubeMX工具进行相应的配置,使其支持USB通信设备类CDC协议。

使用特权

评论回复
15
pmp| | 2023-4-23 11:56 | 只看该作者
需要将CDC库文件添加到工程中,并进行相应的初始化。一般情况下,可以通过STSW-STM32102软件包中提供的CDC库文件来实现。

使用特权

评论回复
16
qiufengsd| | 2023-4-23 12:31 | 只看该作者
stm32 USB通信设备类CDC(Communication Device Class)是一种常用的USB通信协议,可以将stm32微控制器连接到计算机或其他设备上,实现串口通信功能。

使用特权

评论回复
17
jimmhu| | 2023-4-23 13:21 | 只看该作者
stm32 USB通信设备类CDC是一种非常实用的USB通信协议,可以方便地将stm32微控制器与计算机或其他设备进行通信。

使用特权

评论回复
18
sfd123| | 2023-4-23 16:13 | 只看该作者
很复杂,我一直不知道怎么用!

使用特权

评论回复
19
LLGTR|  楼主 | 2023-5-8 17:46 | 只看该作者
louliana 发表于 2023-4-9 14:37
usbcdc可以双向通信吗

可以啊,只是有一主一从。

使用特权

评论回复
20
LLGTR|  楼主 | 2023-5-8 17:47 | 只看该作者
Undshing 发表于 2023-4-11 21:55
cdc 就是虚拟串口吗

对的,就是虚拟串口

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

1634

帖子

2

粉丝