概念 

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. 从JAVA内存到垃圾回收,带你深入理解JVM

    摘要:学过Java的程序员对JVM应该并不陌生,如果你没有听过,没关系今天我带你走进JVM的世界.程序员为什么要学习JVM呢,其实不懂JVM也可以照样写出优质的代码,但是不懂JVM有可能别被面试官虐得 ...

  2. Java 给Word不同页面设置不同背景

    Word文档中,可直接通过[设计]-[页面颜色]页面颜色,通过Java代码可参考如下设置方法: 1. 设置单一颜色背景 doc.getBackground().setType(BackgroundTy ...

  3. JVM(四)打破双亲委派和SPI机制

    前言: 我们都知道判断两个类是不是同一个,要根据类加载器和全限定名.这是为什么呢?为什么不同的类加载器加载同一个类是不同的呢? 答案就是,不同的类加载器所加载的类在方法区的存储空间是不同的即Insta ...

  4. MySQL 中的临时表

    在使用 explain 解析一个 sql 时,有时我们会发现在 extra 列上显示 using temporary ,这表示这条语句用到了临时表,那么临时表究竟是什么?它又会对 sql 的性能产生什 ...

  5. windows桌面快速添加控制面板网络等图标

    默认安装后的windows系统只有回收站. rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0

  6. PostgreSQL创建只读权限的用户

    1.创建只读角色 CREATE ROLE readaccess; 2.授予对现有表的访问权限 GRANT USAGE ON SCHEMA public TO readaccess; GRANT SEL ...

  7. Codeforces Round #671 (Div. 2) (A~E)

    Link~ 题面差评,整场都在读题 A 根据奇偶性判断一下即可. #include<bits/stdc++.h> #define ll long long #define N #defin ...

  8. Spark日志,及设置日志输出级别

    Spark日志,及设置日志输出级别 1.全局应用设置 2.局部应用设置日志输出级别 3.Spark log4j.properties配置详解与实例(摘录于铭霏的记事本) 文章内容来源: 作者:大葱拌豆 ...

  9. Django(中间件)

    中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到 ...

  10. C/C++ ===复习==函数返回值问题(集合体==网络)

    按值传递 地址传递: 应该明白只有这2种传递,下面讨论函数的按值传递 #include <stdio.h> #include <stdlib.h> int add_rtVal( ...