USB学习——基本概念

文章目录

    • USB(Universal Serial Bus)概述
      • USB系统的描述
      • USB总线传输方式
      • USB的拓扑结构
    • USB的连接模型
    • USB控制器及分类
    • USB描述符
    • USB 端点
    • USB枚举过程
    • USB 四种传输类型
      • USB 事务
      • 批量传输(Bulk)
      • 中断传输(Interrupt)
      • 等时传输(Isochronous)
      • 控制传输(Control)
      • 端点类型与传输类型的关系
      • 传输类型与端点最大包长
    • 参考

本文记录下学习USB相关的基本概念

USB(Universal Serial Bus)概述

USB全称为Universal Serial Bus(通用串行总线),是一种快速、灵活的总线接口。它是为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准。

USB一般分为USB低速,USB全速,USB高速和USB超高速,其分别对应于USB1.0,USB1.1,USB2.0和USB3.0,而USB3.0又分了GEN1,GEN2等。最新一代是USB4,传输速度为40Gbit/s,三段式电压5V/12V/20V,最大供电100W ,新型Type C接口允许正反盲插。

USB是一种电缆总线,支持在主机和各式各样的即插即用的外设之间进行数据传输。由主机预定的标准的协议使各种设备分享USB带宽,当其它设备和主机在运行时,总线允许添加、设置、使用以及拆除外设。

USB系统的描述

一个USB系统主要被定义为三个部分:USB的互连、USB的设备、USB的主机。
USB的互连是指USB设备与主机之间进行连接和通信的操作,主要包括以下几方面:

  1. 总线的拓扑结构:USB设备与主机之间的各种连接方式;
  2. 内部层次关系:根据性能叠置,USB的任务被分配到系统的每一个层次;
  3. 数据流模式:描述了数据在系统中通过USB从产生方到使用方的流动方式;
  4. USB的调度:USB提供了一个共享的连接。对可以使用的连接进行了调度以支持同步数据传输,并且避免的优先级判别的开销。

USB总线传输方式

USB2.0总线属一种轮讯方式的总线,主机控制端口初始化所有的数据传输。每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个通道。存在两种类型的通道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且通道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。USB中有一个特殊的通道——缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。

USB 的设备可以接在 PC 上的任意的 USB 接口上. 而使用 Hub 还可以扩展使更多的USB设备连接到系统中。USB的Hub 有一个上行的端口(到host) 有多个的下行端口(连接其它的设备),从而可以使整个的系统可以扩展的连接 127 个外设。其中 Hub 也算外设,对于USB 系统来说,USB的host永远在PC边,所有的其他连接到host都称为设备。在设备与设备之间是无法实现直线通信的,只有通过host的管理与调节才能够实现数据的互相传送。在系统中,通常会有一个根Hub,这个Hub一般有两个下行的端口。

USB的拓扑结构

  • USB的物理拓扑结构
    USB的物理拓扑指的是USB总线的实际物理设备连接关系。
    主机端提供USB根集线器,USB根集线器可外接USB外设,也可的外接USB的集线器HUB,用于拓展USB端点接口,拓展的USB集线器上的端口也可以外接USB设备。使用这种方式可实现USB设备的层层拓扑连接。不过这种拓扑关系最大的深度为7。
    在这里插入图片描述

一个USB集线器(HUB)的物理构如下:
在这里插入图片描述

可以看到,一个USB集线器是将一个USB连接端点拓展成多个USB端点的设备。

  • USB的逻辑拓扑结构
    USB的逻辑拓扑结构是站在USB主机的角度来讲,所以的连接到该USB总线上的USB设备具有同等的地位关系。主机对外接的USB设备的寻址访问使用相同的方式,只是有的设备需要USB集线器中继访问,有些USB设备是直接访问。
    在这里插入图片描述

USB的连接模型

USB是一种主从结构。主机叫做Host,从机叫做Device(也叫做设备),集线器也被当作一种特殊的设备处理,用于扩展USB端口(扩展的USB端口可以增加USB总线上物理设备的连接)。

USB的数据交换只能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。为了在物理上区分主机和设备,使用了不同的插头和插座,可以参见USB硬件接口分类一节。USB总线上所有的数据传输都由主机主动发起,而设备只是被动的负责应答。例如,在读数据时,USB主机先发出读命令,设备收到该命令后,才返回数据。在USB OTG中,一个设备可以在从机和主机之间切换,这样就可以实现设备与设备之间的连接,大大增加了USB的使用范围。但这时依然没有脱离这种主从关系,两个设备之间必然有一个作为主机,另一个作为从机。USB OTG增加了一种MINI USB接头,比普通的4线USB多了一个ID表识线,用来表明它是主机还是设备,这个以后会讲到。

USB的拓扑结构为金字塔型。由一个USB主控制器出发,下面接USB集线器,USB集线器将一个USB口扩展为多个USB口,多个USB口又可以通过集线器为更多个接口。但USB协议中对集线器的层数是有限制的,USB1.1规定最多为5层,USB2.0规定最多为7层。
在这里插入图片描述
USB数据传输路径如下:USB主控制器发出数据包,通过根集线器,再通过下面的集线器(如果有的话),再发给USB设备;设备返回数据,交给它上层的集线器,上层的集线器再交给更上层的集线器,直到USB主控制器为止。而USB主控制器就可以跟CPU打交道了。在标准的PC机上,USB主控制器是挂在PCI总线上的。

USB控制器及分类

OHCI,UHCI,EHCI,xHCI区别与联系

USB主机控制器类型对应的USB的协议和支持的速率创立者功能划分常用于
OHCIUSB 1.1=Low Speed和Full SpeedCompaq,Microsoft和National Semiconductor硬件功能 > 软件功能⇒硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单扩展卡,嵌入式开发板的USB主控
UHCIUSB 1.1=Low Speed和Full SpeedIntel软件功能 > 硬件功能⇒软件的任务重,可以使用较便宜的硬件的USB控制器PC端的主板上的USB主控
EHCIUSB 2.0=High SpeedIntel定义了USB 2.0主控中所要实现何种功能,以及如何实现各种USB 2.0主控
xHCIUSB 3.0=Super SpeedIntel定义了USB 3.0主控中所要实现何种功能,以及如何实现各种USB 3.0主控

对应的EHCI规范,可以去Intel的官网找到:EHCI Specification
对应的xHCI规范,可以去Intel的官网找到:Extensible Host Controller Interface (xHCI) Specification for USB 3.0

USB描述符

USB 是一条协议总线,而 USB 描述符则会记录设备的类型、厂商和产品 ID(加载驱动)、端点情况、版本号等内容。每个 USB 设备由一个或多个配置(Configuration)组成,每个配置包含多个接口(Interface),每个接口包含多个端点(Endpoint)。
在这里插入图片描述

描述符说明
设备描述符设备唯一,向主机说明设备类型、端点 0 最大包长、设备版本、配置数量等
配置描述符至少一个,主机只能选择一个,向主机说明配置包含的接口数、配置编号、供电方式、所需电流 等
接口描述符至少一个,向主机说明接口编号、端点数(不包括端点0)、接口所使用的类、子类、协议等。通过接口来实现功能,固所需端点数不确定
端点描述符可为0个,说明端点的端点号及方向、端点传输类型、最大包长度、查寻时间间隔 等
字符串描述符提供一些方便人们阅读的信息,非必需。

主机首先获取 “设备描述符”,然后获取 “标准配置描述符”,根据其内部的配置描述符集合长度值,一次性将配置描述符、接口描述符、类特殊描述符(如果有)、端点描述符读回;字符串描述符是单独获取的。

USB 端点

端点(Endpoint):实现 USB 设备功能的物理缓冲区实体,USB 主机和设备通过端点进行数据交互。USB 通信的基本单位,分为控制端点(Control Endpoint)、中断端点(Interrupt Endpoint)、批量端点(Bulk Endpoint)和等时端点(Isochronous Endpoint)。

USB枚举过程

枚举,主机从设备读取各种描述符信息,并根据这些信息来加载合适的驱动程序,从而知道设备类型、如何通信等。

控制传输:是 USB 传输模式的一种,它保证数据正确性,是设备枚举过程中采用的传输方式

  • 1)控制传输的过程:

    • (1)建立过程:由 USB 主机发起;由 SETUP 令牌包 + DATA0 数据包 构成; 建立过程中指定数据长度为 0,则没有数据过程。
    • (2)数据过程(可选):控制读则输入数据;控制写则输出数据;
    • (3)状态过程:与数据过程传输方向相反;用来确认数据是否正确传输完成。
  • 2)枚举的详细过程:

    • (1)获取描述符:

        1. 主机检测到设备插入则对设备复位,复位后设备地址为 0。主机向地址 0 的设备的端点 0 发送获取设备描述符的标准请求(仅一次请求)(控制传输的建立过程)
        1. 设备收到请求后,将设备描述符返回主机(控制传输的数据过程)
        1. 主机接收到设备描述符,并确认无误后,返回 0 长度的确认数据包(控制传输的状态过程)
    • (2)设置地址。

        1. 主机向地址 0 的设备的端点 0 发出设置地址请求(控制传输的建立过程,该过程数据包中包含新的设备地址)
        1. USB 设备进入状态过程(因为该控制传输无数据过程),并等待主机请求状态返回(设备无法主动向主机返回)
        1. 设备收到主机输入的令牌包后,返回 0 长度的状态数据包。
        1. 主机发送应答包 ACK 给设备,设备收到后启用新的设备地址
    • (3)主机再次获取设备描述符:使用新的设备地址;获取全部 18 字节(可多次请求);

    • (4)主机获取配置描述符:共 9 字节;根据所描述的配置集体总长度获取配置集合;

    • (5)获取字符串描述符(可选):HID 设备还会获取报告描述符等;单独获取;

  • 可参考:https://www.usbzh.com/article/detail-110.html

USB 四种传输类型

USB 总线上传输的基本单位是包,但需要将包组织成事务(Transaction)才能传输数据。

USB 协议规定 4 种传输类型:批量传输、等时(也作同步)传输、中断传输、控制传输。
控制传输包括 3 个过程,建立过程、状态过程分别是一个事务,数据过程则可能包含多个事务;
其余 3 种传输方式则每传输一次是一个事务。

USB 事务

事务通常由 2 个或 3 个包组成:令牌包、数据包、握手包

  • 令牌包:启动一个事务,由主机发送
  • 数据包:传送数据,方向由令牌包指定
  • 握手包:数据接收方接收正确后,发送握手包;设备也可使用 NAK 握手包来表示数据未准备好。

批量传输(Bulk)

批量传输使得批量事务传输数据。
一次批量事务有 3 个阶段:令牌包阶段、数据包阶段、握手包阶段(下图中两行虚线隔开了三个阶段)。
应用场景:数据量大、对数据的实时性要求不高的场合,如大容量存储设备(Mass Storage Device,MSD)、USB 打印机、扫描仪等

中断传输(Interrupt)

中断传输是一种保证查询频率的传输。中断端点在端点描述符中报告查询间隔,主机保证在间隔内进行一次轮值。(此中断非单片机中断,而是主机 Host 保证在某个时间间隔内进行一次传输)

中断传输也可以不断地检测状态,然后使用批量传输来传送大量数据。

应用场景:适合数据量小,但时间要求严格的设备,如从机接口设备(Human Interface Device,HID)中的鼠标、键盘等设备。

等时传输(Isochronous)

等时传输使用等时事务(Isochronous Transaction)来传输数据,不保证数据 100% 正确,但支持数据量大且实时性高。

应用场景:数据量大,实时性要求高,如音视频设备等。(与批量传输场景区别是等时传输可容忍少量数据错误,但保证不能停顿。)

控制传输(Control)

控制传输分为三个过程:建立过程、数据过程(可选)、状态过程。控制传输要保证数据传输过程中的数据完整性,如枚举过程中各种描述符的获取以及设置地址、设置配置等。

端点类型与传输类型的关系

一个具体的端点,只能工作在一种传输模式下。通常把工作在什么模式下的端点,就叫做什么端点,如控制端点、批量端点。

如,端点 0 是每个 USB 设备都必须具备的默认控制端点,它一上电就存在并可用。还记得枚举过程就是通过控制传输来进行的。

传输类型与端点最大包长

每个端点描述符都规定了端点所支持的最大数据包长。

传输低速最大包长全速最大包长高速最大包长
控制传输8字节可选 8、16、32、64 字节64字节
等时传输不支持1023 字节1024 字节
中断传输8字节64 字节1024 字节
批量传输不支持可选 8、16、32、64 字节512 字节

参考

https://www.usb.org/
USB in a NutShell
usb
USB中文网
USB 概述及协议基础
USB 2.0 Specification
Universal Serial Bus Specification
Universal Serial Bus Specification
Universal Serial Bus 3.0 Specification
The History of USB Standards from 1.0 to USB4
usb made simple
USB 2.0 Architecture Explained
USB Descriptors

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

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

相关文章

通信与网络安全之网络连接

一.传输介质类型 1.基本概念 计算机总是以二进制的数字(0或1)形式工作 1)数字和模拟 模拟数据一般采用模拟信号(Analog Signal),例如用一系列连续变化的电磁波(如无线电与电视广播中的电磁波),或电压信号(如电话传…

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders论文解读

论文地址:https://arxiv.org/abs/2301.00808 论文相对ConvNeXt V1的改进主要两点 全卷积掩码自编码器(FCMAE)Global Response Normalization,去除Layer scale 什么是layer scale 实验 先用FCMAE预训练,然后微调

Formality:两种等价状态consistency和equality

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 背景 逻辑锥的等价性检查时,存在两种验证模式:一致(consistency)和等同(equality),要理解这两点,首先得明白综合工具…

【LeetCode】力扣刷题热题100道(26-30题)附源码 轮转数组 乘积 矩阵 螺旋矩阵 旋转图像(C++)

目录 1.轮转数组 2.除自身以外数组的乘积 3.矩阵置零 4.螺旋矩阵 5.旋转图像 1.轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 class Solution { public:void rotate(vector<int>& nums, int k) …

51单片机 AT24C02(I2C总线)

存储器 随机存储 RAM 只读存储 ROM AT24C02芯片 是一种可以实现掉电不丢失的存储器&#xff0c;可用于保存单片机运行时想要永久保存的数据信息 存储材质&#xff1a;E2PROM 通讯接口&#xff1a;I2C总线 容量&#xff1a;256字节 I2C总线 一种通用的数据总线 两根通信线…

G1原理—5.G1垃圾回收过程之Mixed GC

大纲 1.Mixed GC混合回收是什么 2.YGC可作为Mixed GC的初始标记阶段 3.Mixed GC并发标记算法详解(一) 4.Mixed GC并发标记算法详解(二) 5.Mixed GC并发标记算法详解(三) 6.并发标记的三色标记法 7.三色标记法如何解决错标漏标问题 8.SATB如何解决错标漏标问题 9.重新梳…

每天五分钟深度学习:神经网络中的激活函数

本文重点 激活函数在神经网络中是必不可以缺少的东西,当我们创建一个神经网络的时候,我们需要决定使用哪种激活函数用在隐藏层上,哪种激活函数用在输出结点上,我们以前的课程中我们使用的都是sigmoid激活函数,除此之外还有其它激活函数。本文我们就介绍一下那些经常使用的…

Java Web开发基础:HTML的深度解析与应用

文章目录 前言&#x1f30d;一.B/S 软件开发架构简述&#x1f30d;二.HTML 介绍❄️2.1 官方文档❄️2.2 网页的组成❄️2.3 HTML 是什么❄️2.4html基本结构 &#x1f30d;三.HTML标签1.html 的标签/元素-说明2. html 标签注意事项和细节3.font 字体标签4.标题标签5.超链接标签…

iostat命令详解

iostat 命令是 I/O statistics(输入/输出统计)的缩写&#xff0c;用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具&#xff0c;在 Ubuntu 系统中默认是不带 iostat 命令的&#xff0c;需要自行安装&#xff1a; $ sudo apt in…

【数据库系统概论】数据库恢复技术

目录 11.1 事务的基本概念 事务的定义 事务的开始与结束 事务的ACID特性 破坏ACID特性的因素 11.2 数据库恢复概述 11.3 故障的种类 1. 事务内部的故障 2. 系统故障 3. 介质故障 4. 计算机病毒 11.4 恢复的实现技术 如何建立冗余数据 数据转储 登记日志文件 11…

通过Android Studio修改第三方jar包并重新生成jar包

最近接手了来自公司其他同事的一个Unity项目,里面有一个封装的jar包要改动一下,无奈关于这个jar包的原工程文件丢失了,于是自己动手来修改下jar包,并做下记录。 一、导入第三方jar包 1、新建项目EditJarDemo(项目名随便取) 2、新建libs文件夹,把你要修改的third.jar 复制…

2025新年源码免费送

2025很开门很开门的源码免费传递。不需要馒头就能获取4套大开门源码。 听泉偷宝&#xff0c;又进来偷我源码啦&#x1f44a;&#x1f44a;&#x1f44a;。欢迎偷源码 &#x1f525;&#x1f525;&#x1f525; 获取免费源码以及更多源码&#xff0c;可以私信联系我 我们常常…

数据分析思维(十一):应用篇——用数据分析解决问题

此前篇章&#xff1a; 数据分析思维&#xff08;一&#xff09;&#xff1a;业务指标&#xff08;数据分析并非只是简单三板斧&#xff09; 数据分析思维&#xff08;二&#xff09;&#xff1a;分析方法——5W2H分析方法、逻辑树分析方法、行业分析方法 数据分析思维&#…

基于Arduino平台,使用ESP32S3微处理器控制Servo时,内置Servo库无法使用

基于Arduino平台&#xff0c;使用ESP32S3微处理器驱动Servo时&#xff0c;报以下问题&#xff1a; *WARNING: library Servo claims to run on avr, megaavr, sam, samd, nrf52, stm32f4, mbed, mbed_nano, mbed_portenta, mbed_rp2040, renesas, renesas_portenta, renesas_un…

Linux : Linux环境开发工具vim / gcc / makefile / gdb / git的使用

Linux环境开发工具的使用 一、操作系统的生态二、程序下载安装&#xff08;一&#xff09;程序安装方式&#xff08;二&#xff09;包管理器 yum / apt 运行原理 三、文本编辑器 vim&#xff08;一&#xff09;认识vim 下的操作模式&#xff08;二&#xff09;命令模式常用的快…

HTML5 网站模板

HTML5 网站模板 参考 HTML5 Website Templates

怎么抓取ios 移动app的https请求?

怎么抓取IOS应用程序里面的https&#xff1f; 这个涉及到2个问题 1.电脑怎么抓到IOS手机流量&#xff1f; 2.HTTPS怎么解密&#xff1f; 部分app可以使用代理抓包的方式&#xff0c;但是正式点的app用代理抓包是抓不到的&#xff0c;例如pin检测&#xff0c;证书双向校验等…

记录一下vue2项目优化,虚拟列表vue-virtual-scroll-list处理10万条数据

文章目录 封装BrandPickerVirtual.vue组件页面使用组件属性 select下拉接口一次性返回10万条数据&#xff0c;页面卡死&#xff0c;如何优化&#xff1f;&#xff1f;这里使用 分页 虚拟列表&#xff08;vue-virtual-scroll-list&#xff09;&#xff0c;去模拟一个下拉的内容…

【芯片封测学习专栏 -- D2D 和 C2C 之间的区别】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewD2D&#xff08;Die-to-Die&#xff09;互联D2D 定义D2D 特点D2D 使用场景 C2C&#xff08;Chip-to-Chip&#xff09;互联C2C 定义C2C 特点C2C 使…

使用网页版Jupyter Notebook和VScode打开.ipynb文件

目录 正文 1、网页版Jupyter Notebook查看 2、VScode查看 因为总是忘记查看文件的网址&#xff0c;收藏了但分类众多每次都找不到……当个记录吧&#xff08;/捂脸哭&#xff09;&#xff01; 正文 此处以gitub中的某个仓库为例&#xff1a; https://github.com/INM-6/mu…