概念 

USB是一种串行通信总线(Universal Serial Bus),经历的版本有USB1.0,USB1.1、USB2.0等。USB是一种主从模式的结构,因此它无法在设备与设备。主机与主机之间互连进行数据交换。直到USB OTG的出现,它通过在不同场合下将身份切换,从而做到主从分时共存一个设备中。

不同USB协议版本的对比
 版本 低速(LS) 全速(FS) 高速(HS)
USB 1.0 1.5Mb/s 12Mb/s  不支持
USB 1.1 1.5Mb/s 12Mb/s 不支持 
USB 2.0  1.5Mb/s  12Mb/s 450Mb/s

USB的优点想必用过的人都有所体会。比如即插即用,接口标准统一,扩展性好。。。 USB是一种主从结构的工作模型,主机叫HOST,从机设备叫DEVICE,一个USB主控制器就是可以一个HOST,他可以同时连接127个设备。USB的另一个优点就是极少的链接电缆线,现在常见的USB设备大多数都是仅需要4个线就可以进行快速的数据交换传输,标准USB有4根线缆 :5V Vbus、差分数据线正D+、查分数据线负D-、最后是地线。USB OTG中又增加了一条身份识别的ID线。且在USB低速和全速传输过程中采用的是电压传输模式,到了后来的2.0的高速模式采用了电流驱动传输模式。

USB的设备接入检测机制

主机端在两条差分线上各接了一个15k的下拉电阻,因此在没有设备接入是D+ 和D-就都是低电平。而在设备端会通过将D+或者D-上接一个1.5k的上拉电阻,具体接在那条线上根据设备的速度决定,低速设备接在D-线上,高速和全速设备接在D+上。因此当设备通过USB接口接入主机端时就会有一根差分数据线会在两个电阻的作用下将一条差分数据线电平钳位到3V左右,主机端将检测出这一状态就认为有设备接入了。

USB 描述符与USB的关系

  USB只是一种串行通信总线,提供了数据通路在设备和主机之间,主机要区分不同的设备都有什么样的功能同时获取设备的相关信息,这些信息就在描述符中进行定义,为了方便并标准化USB的描述符,USB标准定义了一系列的描述符,有设备描述符(Device Descriptor)、配置描述符(Configuration Descriptor),接口描述符(Interface Descriptor)、端点描述符(End-point  Descriptor)、字符串描述符(String  Descriptor)、特殊类描述符(class Descriptor)等。这些描述符就是USB标准中指定的一些用来定义USB设备的特性功能的一些profile。

设备描述符

每个USB设备只有一个设描述符下面是USB描述符的结构,它长度固定为18个字节。设备描述符主要记录的信息有:USB协议版本号、设备类型、端点0的最大包长、厂商ID(VID)、产品ID(PID),设备版本号,厂商字符串索引,产品字符串索引,设备序列号和可能的配置数等。

配置描述符

配置描述符主要记录的信息有、配置所包含的接口数,配置的编号,供电方式。是否支持远程唤醒,电流需求量等。

接口描述符

接口描述符主要记录的信息有接口的编号,接口端点数、接口所使用的类、子类、协议、等。

端点描述符

端点描述符主要记录的信息有、端点号及方向、端点的传输类型,最大包长度、查询时间,间隔等

字符串描述符

字符串描述,服务主要是提供一些方便人们阅读的信息,但不是必须。

USB主机在检测到USB设备接入之后就会开始枚举,这个过程后面在仔细研究。现在我理解的意思就是开始和USB设备协商,相互了解,了解的途径就是向USB设备要各种“证件”信息(描述符),从这些证件信息就能知道接入的USB设备是谁,他能干什么活,他的名字和身份证号等信息,等USB主控制器查完所有证件后他就会接受一个USB设备到他的门下,然后给USB设备分配一个7比特的学号,以后就叫学号点名“做题”了。这就是USB描述符的作用,USB设备就是靠这些描述符定义功能等特性的,后面在逐个详细介绍描述符的组成和意义。

参考:《圈圈教你玩USB(第二版)》

2019-05-29  22:24:11

USB2.0协议学习笔记---基本概念的更多相关文章

  1. USB2.0协议学习笔记---USB数据包结构

    USB包类型和传输过程  USB是一种串行总线,因此数据都是一位一位传输的,如同串口那样,但是USB在真实物理电路上却不是TTL电平,而是一种差分信号采用NRZI编码,就是用变化表示0,不变表示1,同 ...

  2. USB2.0协议学习笔记---描述符

     USB设备描述符 字段名 长  度(字节)  地址偏移 含           义 bLenth   1  0  描述符长度 bDescriptorType   1  1 描述符类型 (这里为 1) ...

  3. USB2.0协议学习笔记---USB工作过程(类的方法)

    前面学习了那么多的概念,这里需要记住一点分层概念即设备 ---> 配置 ---> 接口 ---> 端点,这种分层的概念结构 . 也可以理解为端点构成接口,接口组成配置,配置组成设备. ...

  4. usb2.0 规范学习笔记

    1.一个USB HOST 最多可以同时支持128 个地址,地址0 作为默认地址,只在设备枚举期间临时使 用,而不能被分配给任何一个设备,因此一个USB HOST 最多可以同时支持127 个地址,如果一 ...

  5. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  6. HTTP协议学习笔记(一)

    HTTP协议学习笔记(一) 1.HTTP协议用于客户端和服务端之间的通信 客户端:请求访问文本或图像等资源的一端服务端:提供资源响应的一端 在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定 ...

  7. HTTP协议学习笔记(二)

    HTTP协议学习笔记(二) 1.HTTP报文 HTTP报文:用于HTTP协议交互的信息.请求报文:请求端(客户端)的HTTP报文叫做请求报文.响应报文:响应端(服务端)的HTTP报文叫做响应报文. H ...

  8. jQuery学习笔记之概念(1)

    jQuery学习笔记之概念(1) ----------------------学习目录-------------------- 1.概念 2.特点 3.选择器 4.DOM操作 5.事件 6.jQuer ...

  9. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

随机推荐

  1. ctfshow_djb杯

    桐桑又开始摸鱼了 ctfshow的比赛整的一手好活.djb杯. web1_veryphp 打开就是源码: 1 <?php 2 error_reporting(0); 3 highlight_fi ...

  2. Less中Css预处理器

    Less.js 安装 npm install -g less 变量 basic 变量采用@进行变量定义.变量可以直接参加运算. @width:100px; .variables{ width:@wid ...

  3. hook笔记①

    汇编中push 0x*** retn表示跳转到某个地址继续执行 取消hook时会在多线程环境中可能被检测 去掉函数框架可以规避寄存器cpu前后状态监测 #pragma comment(linker,& ...

  4. SELECT ... FOR UPDATE or SELECT ... FOR SHARE Locking Reads session

    小结: 1.注意使用限制 Locking reads are only possible when autocommit is disabled (either by beginning transa ...

  5. Python基础(列表、元组)

    列表 在Python中列表用[]来表示,中间的元素可以是任何类型,用逗号分隔.列表是可变类型. 列表常用操作:增删改查. names = ["小明","小红", ...

  6. 活动精彩实录 | 王峰:Cassandra在360的多场景应用及未来趋势

    点击此处观看完整活动视频 大家好,我是360的王峰,我今天主要通过Cassandra在多场景下的应用来介绍一下Cassandra在360落地的情况. 我会从以下这几个方面进行介绍.首先介绍下Cassa ...

  7. Java——入门“HelloWorld”

    //Java程序的结构 //下面这个:外层框架 public class HellloWorld { // Java入口程序框架 //类名与文件名完全一样 public static void mai ...

  8. Linux数据库的导入导出

    Linux数据库的导入导出 1.导入数据库 mysql -u username -p test < /home/data/test.sql 说明:username是数据库用户名,test为目标数 ...

  9. [HDU4734] 不要62(数位dp入门)

    >传送门< 题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 思路:数位dp 就是数位上不能有4也不能有连续的62,没有4的话在枚举的时候判断一下,不枚举4就可以保证状态 ...

  10. Codeforces Round #626 (Div. 2) B. Count Subrectangles

    题目连接:https://codeforces.com/contest/1323/problem/B 题意:给一个大小为n的a数组,一个大小为m的b数组,c数组是二维数组c[i][j]=a[i]*b[ ...