USB CDC简介

USB CDC类、USB2.0标准与PSTN之间的关系
CDC(Communication Device Class)类是USB2.0标准下的一个子类,定义了通信相关设备的抽象集合。它与USB2.0标准以及其下的子类的相互关系如下图所示:

如上图,USB2.0标准下定义了很多子类,有音频类,CDC类,HID,打印,大容量存储类,HUB,智能卡等等,这些在urb.org官网上有具体的定义,这里我们主要讲的是通信类CDC,CDC类下面,根据具体的应用场合,又有一些子类,这里我们主要讲的是PSTN(Public Switched Telephone Network)。从PSTN官方标准文档来看,PSTN子类是一个与电信相关的子类,而这里,我们只是将它作为一个普通的通信设备使用,并没有使用到它的一些电话特性。

从一个具体的CDC类通信数据说起

如上图,USB CDC类的通信部分主要包含三部分:枚举过程、虚拟串口操作和数据通信其中虚拟串口操作部分并不一定强制需要,因为若跳过这些虚拟串口的操作,实际上USB依然是可以通信的,这也就是为什么上图中,在操作虚拟串口之前会有两条数据通信的数据。

之所以会有虚拟串口操作,主要是我们通常使用PC作为host端,在PC端使用一个串口工具来与其进行通信,PC端的对应驱动将其虚拟成一个普通串口。这样以来,可以方便PC端软件通过操作串口的方式来与其进行通信。但实际上,Host端与Device端物理上是通过USB总线来进行通信的,与串口没有关系,这一虚拟化过程,起决定性作用的是对应驱动,包含如何将每一条具体的虚拟串口操作对应到实际上的USB的操作等。这里需要注意的是,Host端与Device端的USB通信速率并不受所谓的串口波特率影响,它就是标准的USB2.0全速(12Mbps)速度,实际速率取决于总线的实际使用率,驱动访问USB外设有效速率以及外部环境对通信本身造成的干扰率等因素。

CDC类设备枚举过程

CDC类设备与其他标准USB设备枚举过程并没有什么特殊的地方,在描述符内可以使用DeviceClass=0x00, SubClass=0x00, Protocol=0x00 表示此类信息在接口描述符内给出;或者也可以使用0x02,0x00,0x00 来表明该设备为CDC类设备。或者使用0xef, 0x02,0x01表示当前为复合设备。

 CDC类设备在枚举过程中最主要的信息存储在配置描述符内:

如上图所示,CDC类的配置描述符一般包含两个接口(interface0)为控制接口,另外一个是Interface1为数据接口,除此之外,还有一个虚线指向IAD(Interface Association Description)这个是可选的,得根据实际情况来确定其是否真实存在。

控制接口

控制接口侠包含一个类描述符和一个端口(ie:0x82),这个端点(中断传输模式)为异步通知消息的端点,当设备需要向Host端发送异步消息时,可以通过此端点来发送,但平时主机端都是通过端点0来向设备端发送控制消息的,比如哪些虚拟串口的操作指令等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络知识点汇总(三)

1.2 计算机网络体系结构与参考模型 1.2.1 计算机网络分层结构 计算机网络的各层及其协议的集合称为网络的体系结构(Architecture)。换言之,计算机网络的体系结构就是这个计算机网络及其所应完成的功能的精确定义。要强调的是,这些功能究竟是用何种硬件…

性能测试(五)—— 数据库性能测试-mysql

1 mysql性能测试的主要内容 MySQL数据库介绍MySQL数据库监控指标MySQL慢查询工作原理及操作SQL的分析与调优方法MySQL索引的概念及作用MySQL索引的工作原理与设计规范MySQL存储引擎MySQL实时监控MySQL集群监控方案MySQL性能测试的用例准备使用Jmeter开发MySQL性能测试脚本执行…

Windows更新报错 0xc1900101 0x30018 解决方案

卸载自带的电脑管家(比如华硕、联想、华为等) 通过禁用第三方驱动启动Windows(winr 运行 msconfig),然后禁用掉第三方服务,重启系统。 检查更新,应该问题就能解决 记得重新运行msconfig&…

1分钟解决海康威视摄像头网页预览失败显示纯灰色问题

先用老IE浏览器登录,会提醒下载插件 下载这个Web的插件安装后,重开网页就都能看了

使用 Python 中的美丽汤进行网络数据解析的完整指南

Beautiful Soup 是一个广泛使用的 Python 库,在数据提取方面发挥着重要作用。它为解析 HTML 和 XML 文档提供了强大的工具,使从网页中轻松提取有价值的数据成为可能。该库简化了处理互联网上非结构化内容的复杂过程,使您可以将原始网页数据转…

【C语言】函数指针

首先看一段代码&#xff1a; #include <stdio.h>void test(){printf("hehe\n");}int main(){printf("%p\n", test);printf("%p\n", &test);return 0;} 输出的结果&#xff1a; 输出的是两个地址&#xff0c;这两个地址是 test 函数的…

Nuxt 3组件开发与管理

title: Nuxt 3组件开发与管理 date: 2024/6/20 updated: 2024/6/20 author: cmdragon excerpt: 摘要&#xff1a;本文深入探讨了Nuxt 3的组件开发与管理&#xff0c;从基础概念、安装配置、目录结构、组件分类与开发实践、生命周期与优化&#xff0c;到测试与维护策略。详细…

源代码保密的七种有效方法分享

在当今数字化时代&#xff0c;访问安全和数据安全成为企业面临的重要挑战。传统的边界防御已经无法满足日益复杂的内网办公环境&#xff0c;层出不穷的攻击手段已经让市场单一的防御手段黔驴技穷。当企业面临越来越复杂的网络威胁和数据泄密风险时&#xff0c;更需要一种综合的…

多组学双疾病串扰怎么做?PAN-AD九个机器学习+MR+单细胞,工作量不少

说在前面 “串扰”这个名词听起来高级了一个level&#xff0c;其实就是MR-通路的双疾病联合分析。虽然是筛选标志物的思路&#xff0c;但是工作量不小&#xff0c;作者还收集了13个不同AD自身免疫疾病数据集用于验证自己的机器学习模型&#xff0c;分析就是一些常规的WGCNA、P…

SpringBoot集成logback初始化源码解析(部分)

一.SpringBoot配置扩展点 SpringBoot日志模块使用监听的方式进行初始化&#xff0c;在SpringBoot项目启动后&#xff0c;会通知日志监听器 在日志监听器中ApplicationStartingEvent事件用来确定到底使用哪个日志系统&#xff0c;logback log4j等 在日志监听器中ApplicationEn…

PTA - 编写函数计算薪资

某公司销售员底薪为5000&#xff0c;销售业绩与利润提成的关系如下表所示&#xff08;计量单位&#xff1a;元&#xff09; 编写函数&#xff0c;计算员工月薪。 函数接口定义&#xff1a; salary(sales) 其中 参数 sales表示员工的月销售业绩。 裁判测试程序样例&#xff…

管理咨询公司的五个招聘秘密

在管理咨询中&#xff0c;人是业务&#xff1b;客户支付数百万美元&#xff0c;要求管理顾问确认问题&#xff0c;并推荐解决方案。由于收入和合规性受到威胁&#xff0c;招聘错误的成本可能非常昂贵&#xff0c;一些公司更倾向于谨慎而不是效率。然而&#xff0c;在当今竞争激…

Java23种设计模式(五)

1、MVC 模式 MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式。这种模式用于应用程序的分层开发。 Model&#xff08;模型&#xff09; - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑&#xff0c;在数据变化时更新控制器。…

第三期【Demo教程】教你使用SeaTunnel把数据从MySQL导到Hive

随着数据技术的快速发展&#xff0c;了解并掌握各种工具和技术变得尤为重要。为此&#xff0c;我们准备在Apache SeaTunnel社区发起如何使用连接器的Demo演示计划&#xff0c;邀请所有热爱数据同步技术的同学分享他们的知识和实操经验! 我们第三期主题是&#xff1a;如何使用Se…

Python MongoDB 基本操作

本文内容主要为使用Python 对Mongodb数据库的一些基本操作整理。 目录 安装类库 操作实例 引用类库 连接服务器 连接数据库 添加文档 添加单条 批量添加 查询文档 查询所有文档 查询部分文档 使用id查询 统计查询 排序 分页查询 更新文档 update_one方法 upd…

【Linux工具】yum软件包管理器与Vim编辑器的高效运用

目录 Linux 软件包管理器 YUM 什么是软件包 安装工具 rzsz 及注意事项 查看软件包 安装和卸载软件 安装软件 卸载软件 Linux 开发工具 编辑器 - Vim 使用 ​编辑 Vim 与 Vi 的区别 Vim 的基本概念 三种模式 Vim 的基本操作 操作尝试&#xff1a; Vim 命令集解释…

根据滚珠丝杆规格适配丝杆支撑座!

丝杆支撑座是机械设备中常见的支撑座装置&#xff0c;支撑着滚珠丝杆&#xff0c;起到稳定和支撑的作用&#xff0c;避免丝杆弯曲变形和震动&#xff0c;从而保证设备的稳定运行。那么&#xff0c;我们应该如何正确选择丝杆支撑座呢&#xff1f; 在选择丝杆支撑座时&#xff0c…

opencv 打开图片后,cv::mat存入共享内存的代码,实现消费者与生产者模型。XSI信号量和POSIX 信号量

文章目录 基于 sys 系统信号量(XSI信号量)常用api参考 基于 POSIX 信号量有名信号量常用 api 无名信号量常用 api 参考 实践-基于POSIX有名信号量生产者消费者模型任务说明同步关系互斥关系 设置一个互斥信号量&#xff0c;实现对共享内存的互斥访问设置两个信号量&#xff0c;…

铁路防鸟有哪些措施?铁路专用太阳能雷达驱鸟扇

铁路沿线的电杆、接触网支柱以及硬横梁等结构&#xff0c;因其牢固稳定以及无晃动的特点&#xff0c;成为了鸟儿们心仪的筑巢佳地&#xff0c;众多鸟类选择在此“安营扎寨”。而鸟巢中的树枝、草根和铁丝等杂物&#xff0c;极易引起铁路供电设备跳闸&#xff0c;导致短路停电&a…

【云岚到家】-day04-1-数据同步方案-Canal-MQ

【云岚到家】-day04-1-数据同步方案-Canal-MQ 1 服务搜索1.1 服务搜索技术方案1.1.1 需求分析1.1.2 技术方案1.1.2.1 使用Elasticsearch进行全文检索1.1.2.2 索引同步方案 1.1.3 CanalMQ1.1.3.1 MySQL主从数据同步1.1.3.2 Canal工作流程1.1.3.3 具体实现方案 1.2 MQ技术方案1.2…