USB之基础知识

news/2024/11/30 13:41:26/

1. USB概述

        USB,Universal Serial Bus(通用串行总线),是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,USB接口支持设备的即插即用和热插拔功能。

        USB接口有4个pin脚,分别为VCC、GND、Data+、Data-四个pin脚,常见的接口类型有A型、B型和C型。

2. USB标准

usb1.0   低速(Low speed)         1.5Mbit/s
usb1.0   全速(Full speed)        12Mbit/s
usb2.0   高速(High speed)        480Mbit/s
usb3.0   超高速(Super speed)     5Gbit/s

3. 总线拓扑结构

        USB主机控制器(USB Host Controller)通过根集线器(Root Hub)与其他USB设备相连。集线器也属于USB设备,通过它可以在一个USB接口上扩展出多个接口。除根集线器外,最多可以层叠5个根集线器。整个结构图是一个星型结构,一条USB总线上所有设备共享一条通往主机的数据通道,同一时刻只能有一个设备与主机通讯。 

4. USB热插拔之硬件实现

        USB集线器的每个下游端口的D+和D-上分别接了一个15K欧姆的下拉电阻到GND,在集线器的端口悬空时,这两个pin脚的电平会一直都是低电平;而USB设备端的D+或者D-上接了1.5K欧姆上拉电阻。

        当USB设备插入集线器端口时,由1.5K的上拉电阻和15K的下拉电阻分压,结果将差分数据线中的一条拉高了,集线器检测到这个状态后就会报告给USB主控制器(或者通过它上一层的集线器报告给USB主控制器)。

        USB高速设备先是被识别为全速设备,然后通过HOST和DEVICE两者之间的确认,再切换到高速模式。

4.1 Hub监测它各个端口数据线上(D+/D-)的电压

        在hub端,数据线D+和D-都有一个阻值在14.25k到24.8k的下拉电阻Rpd,而在设备端,D+(全速,高速)和D-(低速)上有一个1.5k的上拉电阻Rpu。当设备插入到hub端口时,有上拉电阻的一根数据线被拉高到幅值的90%的电压(大致是3V)。hub检测到它的一根数据线是高电平,就认为是有设备插入,并能根据是D+还是D-被拉高来判断到底是什么设备(全速/低速)插入端口。

4.2 Host检测所连接的全速设备是否是支持高速模式

        因为根据USB 2.0协议,高速(High Speed)设备在初始时是默认全速(Full Speed )状态运行,所以对于一个支持USB 2.0的高速hub,当它发现它的端口连接的是一个全速设备时,会进行高速检测,看看目前这个设备是否还支持高速传输,如果是,那就切到高速信号模式,否则就一直在全速状态下工作。

        同样的,从设备的角度来看,如果是一个高速设备,在刚连接bub或上电时只能用全速信号模式运行(根据USB 2.0协议,高速设备必须向下兼容USB 1.1的全速模式)。随后hub会进行高速检测,之后这个设备才会切换到高速模式下工作。假如所连接的hub不支持USB 2.0,即不是高速hub,不能进行高速检测,设备将一直以全速工作。

5. 高速设备识别

        USB全速/低速识别相当简单,但USB2.0,USB1.x就一对数据线,不能像全速/低速那样仅依靠数据线上拉电阻位置就能识别USB第三种速度:高速。因此对于高速设备的识别就显得稍微复杂些。

  高速设备初始是以一个全速设备的身份出现的,即和全速设备一样,D+线上有一个1.5k的上拉电阻。USB2.0的hub把它当作一个全速设备,之后,hub和设备通过一系列握手信号确认双方的身份。在这里对速度的检测是双向的,比如高速的hub需要检测所挂上来的设备是高速、全速还是低速,高速的设备需要检测所连上的hub是USB2.0的还是1.x的,如果是前者,就进行一系列动作切到高速模式工作,如果是后者,就以全速模式工作。

        下图展示了一个高速设备连到USB2.0 hub上的情形:

         hub检测到有设备插入/上电时,向主机通报,主机发送Set_Port_Feature请求让hub复位新插入的设备。设备复位操作是hub通过驱动数据线到复位状态SE0(Single-ended 0,即D+和D-全为低电平),并持续至少10ms。

        高速设备看到复位信号后,通过内部的电流源向D-线持续灌大小为17.78mA电流。因为此时高速设备的1.5k上拉电阻还未撤销,在hub端,全速/低速驱动器形成一个阻抗为45欧姆(Ohm)的终端电阻,2电阻并联后仍是45欧姆左右的阻抗,所以在hub端看到一个约800mV的电压(45欧姆*17.78mA),这就是Chirp K信号。Chirp K信号的持续时间是1ms~7ms。

        在hub端,虽然下达了复位信号,并一直驱动着SE0,但USB2.0的高速接收器一直在检测Chirp K信号,如果没有Chirp K信号看到,就继续复位操作,直到复位结束,之后就在全速模式下操作。如果只是一个全速的hub,不支持高速操作,那么该hub不理会设备发送的Chirp K信号,之后设备也不会切换到高速模式。

        设备发送的Chirp K信号结束后100us内,hub必须开始回复一连串的KJKJKJ....序列,向设备表明这是一个USB2.0的hub。这里的KJ序列是连续的,中间不能间断,而且每个K或J的持续时间在40us~60us之间。KJ序列停止后的100~500us内结束复位操作。hub发送Chirp KJ序列的方式和设备一样,通过电流源向差分数据线交替灌17.78mA的电流实现。

        再回到设备端来。设备检测到6个hub发出的Chirp 信号后(3对KJ序列),它必须在500us内切换到高速模式。切换动作有:

1. 断开1.5k的上拉电阻。
2. 连接D+/D-上的高速终端电阻(high-speed termination),实际上就是全速/低速差分驱动器。
3. 进入默认的高速状态。

        执行1,2两步后,USB信号线上看到的现象就发生变化了:hub发送出来的Chirp KJ序列幅值降到了原先的一半,400mV。这是因为设备端挂载新的终端电阻后,配上原先hub端的终端电阻,并联后的阻抗是22.5欧姆。400mV就是由17.78mA*22.5Ohm得来。以后高速操作的信号幅值就是400mV而不像全速/低速那样的3V。

        至此,高速设备与USB2.0 hub握手完毕,进行后续的480Mbps高速信号通信。

6. USB Core

        USB Core这个模块是纯软件部分,并不代表一个设备,是独立于硬件的协议栈,它是所有USB设备赖以生存的模块,即USB子系统的核心。代码位于kernel/drivers/usb/core目录下。

7. 拓展

        USB驱动本身是很复杂的,下面博客有详细介绍,以后有需要可以再研究

https://blog.csdn.net/aaronychen/category_430182.html


http://www.ppmy.cn/news/514008.html

相关文章

一文懂USB数据及供电协议

本文依照USB-IF命名规范 输出口,线材,输入口,三者同时满足最高协议标准,才能发挥最好效果,否则受限于最差的一个(木桶效应)。 接口类型 都叫USB接口,只是分为: Type-…

usb对计算机发展的影响,usb集线器对电脑有什么坏处

USB-Hub只是一个扩展USB接口的工具,说白了它只是接口扩展工具而已。 事实上凡是采用USB-Hub只有可能让USB设备的速度变慢,绝对不可能变快。 最好的办法是将USB设备直接接到电脑的USB接口,而不是通过USB-Hub来接。 尤其是移动硬盘更是绝对不要…

来说说电脑上USB图标的意义

USB的标识像个三叉戟,做了下简单的变形。三叉戟的前端是不同的几何图形。代表着USB的通用性。下图就是USB2.0口,只有4个引脚,VBUS脚插入时会先接触。数据传输速率最高为480Mb/s,支持500mA驱动能力的数据传输。还有的右上角会有个“…

【并发知识点】AQS的实现原理及应用

系列文章目录 AQS的实现原理及应用 CAS的实现原理及应用 文章目录 系列文章目录前言一、AQS是什么?1、应用场景2、优缺点 二、案例应用1.使用AQS来实现一个简单的互斥锁2.模拟赛龙舟程序 总结 前言 在Java技术方面,AQS指的是AbstractQueuedSynchronize…

【二叉树part03】| 104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

目录 ✿LeetCode104.二叉树的最大深度❀ ✿LeetCode559.n叉树的最大深度❀ ✿LeetCode111.二叉树的最小深度❀ ✿LeetCode222.完全二叉树的节点个数❀ ✿LeetCode104.二叉树的最大深度❀ 链接:104.二叉树的最大深度 给定一个二叉树,找出其最大深度…

ubuntu安装WPS2019以及解决缺少字体问题

环境:ubuntu22.04.2 LTS 步骤: 1.去官网下载最新的WPS,官网地址如下:WPS Office 2019 for Linux-支持多版本下载_WPS官方网站 2.sudo dpkg -i 安装包.deb 3.安装完成,首次用WPS打开某个文档,会出现如下报…

postgresql 从应用角度看快照snapshot使用,事务隔离控制不再神密

​专栏内容:postgresql内核源码分析 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 快照使用 快照是事务中使用,配合事务的隔离级别,体现出不同的可见性。…

c语言大作业开题报告,C语言大作业报告.doc

PAGE13 / NUMPAGES21 页 PAGE13 目录 一、 设计题目 二、目标和需求分析 三、开发工具 四、应用平台 五、程序模块 1、游戏盒子 2、2048 3、扫雷 4、贪吃蛇 六、开发日志 七、程序调试及运行 八、程序开发总结 总结:虽然做出来的东西真的没什么技术水平,…