USB2.0 Spec 中文篇

news2024/9/24 12:31:16

体系简介

线缆

USB 是一种支持热拔插的高速串行传输总线,使用一对(两根)差分信号来传输数据,半双工。要求使用屏蔽双绞线。

供电

USB 支持 “总线供电” 和 “自供电” 两种供电模式。在总线供电方式下,设备最多可以获得 500mA 的电流。

兼容

向下兼容 USB1.0(低速),USB1.1(全速)

速度

低速 1.5Mbps,全速12Mbps,高速 480Mbps

USB 体系组成

USB 体系包括 “主机”、“设备”、“物理连接” 三个部分。
主机是一个提供 USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是 PC,也可以是 OTG 设备,一个 USB 系统中仅有 1 个USB 主机。
USB 设备包括 USB 功能设备和 USB HUB,最多支持 127 个设备。
物理连接指 USB 传输线。

地址

一个 USB HOST 支持 128 个地址,地址 0 作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备。因此,一个 USB HOST 最多可以支持 127 个设备。
但是,如果要连接 127 个设备,必须要用到 USB HUB,USB HUB 也是占用地址的,所以,实际支持的 USB 设备数量小于 127。

拓扑

USB 体系采用分层的星型拓扑来连接所有 USB 设备,以 HOST-ROOT HUB 为起点,最多支持 7 层,也就是说,最多允许 5 个 USB HUB 级联。
在这里插入图片描述

ROOT HUB

ROOT HUB 是一个特殊的 USB HUB,它集成在主机控制器里,不占用地址。

复合设备

复合设备可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的 USB HUB 组合而成的设备,比如带麦克风的 USB 摄像头。

轮询广播

USB 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个 USB 体系内仅允许一个数据包进行传输,所有设备看到的数据包都是被同一广播的数据包。

数据包

USB 采用 “令牌包” - “数据包” - “握手包” 的传输机制,在令牌包中指定数据包去向或来源的设备地址和端点(Endpoint),从而保证了只有一个设备,对被广播的数据包/令牌包 做出响应,握手包表示了传输的成功与否。
“数据包” 是 USB 总线上数据传输的最小单位,包括 SYNC、数据和 EOP 三部分。其中,数据以 8 位的 PID 开始,PID 指定了数据包的类型(共 16 种)。令牌包即 PID 为 IN/OUT/SETUP 的包。

端点

端点(Endpoint)是 USB 设备中可以进行数据收发的最小单元,支持单向或双向的数据传输。
设备支持端点的数量是有限制的,除默认端点外,低速设备最多支持 2 组端点(2 输入,2 输出),高速和全速设备最多支持 15 组端点。

管道

管道(Pipe)是主机和设备端点之间数据传输的模型,共有两种类型的管道:无格式的流管道(Stream Pipe)、有格式的信息管道(Message Pipe)。
任何一个 USB 设备一旦上电,就存在一个信息管道,即默认的控制管道,USB HOST 通过该管道来获取设备的描述、配置、状态,并对设备进行配置。

接口

一个设备可能有一个或多个接口。(复合设备具有多个接口,驱动中,是只认接口,不认设备的,一个驱动程序对应一个接口。一个包含两个接口的复合设备,如电子琴,包含键盘接口和扬声器接口,那么就会有两个驱动与该设备对应,即键盘驱动和扬声器驱动)
一个接口可能有一个或多个端点

枚举

USB 设备连接到 HOST 时,HOST 必须通过默认的控制管道对其进行枚举,完成获得设备描述、进行地址分配、获得配置描述、进行配置等操作后,方可正常使用。USB 的即插即用特性依赖于此。
枚举是 USB 体系中一个很重要的活动,由一系列标准请求组成,若设备属于某个子类,还包含该子类定义的特殊请求
通过枚举,HOST 可以获得设备的基本描述信息,如 USB 版本,PID、VID、设备分类(Class)、供电方式、最大消耗电流、配置数量、各种类型端点数量、传输能力、最大包长度。HOST 根据 PID 和 VID 加载设备驱动程序,并对设备进行合适的配置。
只有经过枚举的设备才能正常使用。
对于总线供电的设备,在枚举完成前,最多可从总线获取 100mA 的电流。

标准请求

USB 设备通过管道和 HOST 通信,在默认控制管道上接受并处理以下 3 种类型的请求:

  1. 标准请求:一共有 11 个标准请求,如得到设备描述、设置地址等。所有 USB 设备必须支持这些请求。HOST 通过标准请求来识别和配置设备。
  2. 类(Class)请求:USB 还定义了若干个子类,如 HUB 类、大容量存储器类等。不同的类又定义了若干类请求,该类设备应该支持这些类请求。设备所属类在设备描述符中得到。
  3. 厂商请求:这部分请求并不是 USB 规范定义的,而是设备生产商为了实现一定的功能而自己定义的请求。

HUB PORT

HUB 的上行 PORT 面向 HOST,下行 PORT 面向设备。
在下行 PORT 上,提供了设备连接检测移除检测的能力,并给各下行 PORT 供电。
HUB 可以单独使能各下行 PORT,不同 PORT 可以工作在不同的速度等级。

HUB 的组成

HUB 由重发器(Repeater)、转发器(Transaction Translator)以及控制器(Controller)三部分组成。
重发器是上行 PORT 和下行 PORT 之间的一个协议控制的开关,负责数据包的重生与分发。
控制器负责和 HOST 通信,HOST 通过 HUB 类请求和 HUB 控制器通信,获得关于 HUB 本身和下行 PORT 的 HUB 描述符,进行 HUB 和下行 PORT 的监控和管理。
转发器提供了从高速和全速/低速通信的转换。

分发

HUB 从上行 PORT 接收到的数据包需要向所有使能的下行 PORT 发送,即广播。

通信

宏观上看,是在 HOST 和 USB 功能设备之间进行;
微观上看,是在应用软件的 Buffer 和 USB 设备端点的 Buffer 之间进行。

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

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

相关文章

C++学习笔记—— C++内存管理方式:new和delete操作符进行动态内存管理

系列文章目录 http://t.csdnimg.cn/d0MZH 目录 系列文章目录http://t.csdnimg.cn/d0MZH 比喻和理解a.比喻C语言开空间C开空间 b.理解a、C语言的内存管理的缺点1、开发效率低(信息传递繁琐)2、可读性低(信息展示混乱)3、稳定性差&…

【MATLAB】基于VMD分解的信号去噪算法(基础版)

代码的使用说明 基于VMD分解的信号去噪算法(基础版) 代码流程图 代码效果图 本文代码:阿里云盘分享 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复VMD去噪 本公众号致力于解决找代…

铭飞CMS list 接口 SQL注入漏洞复现

0x01 产品简介 铭飞CMS是一款基于java开发的一套轻量级开源内容管理系统,铭飞CMS简洁、安全、开源、免费,可运行在Linux、Windows、MacOSX、Solaris等各种平台上,专注为公司企业、个人站长快速建站提供解决方案 0x02 漏洞概述 铭飞CMS在5.2.10版本以前list 接口处存在sql注入…

AI抽烟识别系统研发关键

为了设计一个有效的AI抽烟识别系统,我们需要考虑几个关键组成部分:图像捕捉、数据处理、模型训练、以及实际应用场景。下面是这个方案的详细阐述: 1. 图像捕捉与数据收集 摄像头部署:首先,在需要监控的区域安装高分辨…

社交网络分析1:起源发展、不同领域的应用、核心概念

社交网络分析1:社交网络相关定义和概念 写在最前面关于课程 社交网络、社交网络分析社交网络发展阶段(自己感兴趣)1. 社交网络的起源2. 社交网络的演变3. 社交网络的成熟4. 发展阶段补充和展望 2023社交大变革(自己感兴趣的点&…

带你手把手解读firejail沙盒源码(0.9.72版本) (三) fcopy

文章目录 main.c该模块的各个函数功能详解selinux_relabel_pathcopy_filemkdir_attrcopy_linkproc_pid_to_selffs_copydircheckduplicate_dirduplicate_fileduplicate_linkmain Makefile main.c 文件总结 ├── fcopy │ ├── Makefile │ └── main.cmain.c #include…

深度学习中的高斯分布

1 高斯分布数学表达 1.1 什么是高斯分布 高斯分布(Gaussian Distribution)又称正态分布(Normal Distribution)。高斯分布是一种重要的模型,其广泛应用与连续型随机变量的分布中,在数据分析领域中高斯分布占有重要地位。高斯分布是一个非常常见的连续概…

【Spring】03 容器

文章目录 1. 定义2. BeanFactory1)惰性加载2)基本的容器功能3)XML配置 3. ApplicationContext1)主动加载2)AOP支持3)事件发布与监听4)国际化支持5)注解支持 4. Spring容器的生命周期…

正则表达式(6):分组与后向引用

正则表达式(6):分组与后向引用 总结 本博文转载自 在本博客中,”正则表达式”为一系列文章,如果你想要从头学习怎样在Linux中使用正则,可以参考此系列文章,直达链接如下: 在Linux中…

ThinkPHP连接ORACLE数据库教程

目录 概念基本步骤详细操作问题排除参考 概念 要连接Oracle数据库,必须有两个东西,一个PHP官方写的扩展,一个Oracle官方写的客户端PHP是通过扩展去操作oralce客户端连接的服务端数据库,所以两个都不能少,而且版本必须…

arthas统计大循环方法时的注意事项

背景 arthas是我们日常查找各种问题的利器,不过我们也需要意识到arthas本身也是有性能损耗的,所以当老板对你提问为什么使用arthas分析时这个方法比生产上正常运行时这个方法的耗时要长很多,你可以向他进行解释,进而由于arthas的…

边缘检测@获取labelme标注的json黑白图掩码mask

import cv2 as cv import numpy as np import json import os from PIL import Imagedef convertPolygonToMask(jsonfilePath):

MySQL——数据类型

目录 一.数据类型分类 二. 数值类型 1.tinyint类型 2.bit类型 3.float类型 4.decimal 三.字符串类型 1.char 2.varchar 四.日期和时间类型 五.enum和set 一.数据类型分类 关于数据库的数据类型有非常多,但是并非所有的数据类型都是我们常用的&#xff…

《信息技术时代》期刊杂志论文发表投稿

《信息技术时代》期刊收稿方向:通信工程、大数据、计算机、办公自动化、信息或计算机教育、电子技术、系统设计、移动信息、图情信息研究、人工智能、智能技术、信息技术与网络安全等。 刊名:信息技术时代 主管主办单位:深圳湾科技发展有限…

vs2019比较两个代码的区别方法

vs2019比较两个代码的区别方法 效果代码 效果 代码 Tools.DiffFiles 3d_mig(1).c 3d_mig_xin0.c

UDP内网穿透和打洞原理与代码实现

1、众所周知,现在主流网络用的还是IPV4协议,理论上一共有2^3243亿个地址,除去私有网段、网络ID、广播ID、保留网段、本地环回127.0.0.0网段、组播224.0.0.0网段、实际可用就是36.47亿个;全球的服务器、PC机、手机、物联网设备等需…

08.CSS盒模型

CSS盒模型 1.介绍 CSS 会把所有的 HTML 元素都看成一个盒子,所有的样式也都是基于这个盒子 2.盒模型构成 介绍 margin(外边距):盒子与外界的距离border(边框):盒子的边框padding&#xff0…

美国如果把根域名服务器封了,中国不会从网络上消失

目录 美国如果把根域名服务器封了,中国不会从网络上消失为什么根服务器最多13个 输入URL后发生了什么 参考 https://www.yuque.com/fcant/network/vhyvik#AuOqk 美国如果把根域名服务器封了,中国不会从网络上消失 来源: https://segmentfau…

TwinCAT3 Modbus-TCP Client/Server使用

目录 一、环境配置和准备 1、PLC中安装TF6250-Modbus-TCP库 2、勾选TF6250的license 3、PLC工程中添加Tc2_ModbusSrv库文件 4、分别创建测试ModbusTCP测试的Server和Client程序 二、PLC作为Client端 1、设置测试电脑IP地址 2、运行MobusTCP测试工具 3、PLC端程序编写 …

基于C/C++的rapidxml加载xml大文件 - 下部分

下载地址: RapidXml (sourceforge.net)https://rapidxml.sourceforge.net/ 将源码添加到自己的工程中 示例测试大文件耗时: 总共293w行数据,大概耗时不到1s。