传输方式
在USB的数据传送的方式下,有四种的传输方式:控制(Control)同步(isochronous)中断 (interrupt)大量(bulk)。如果你是从硬件开始来设计整个的系统,你还要正确选择传送的方式,而作为一个驱动程序的书写者,就只需要弄清楚他是采用的什么工作方式就行了。
通常所有的传送方式下的主动权都在PC边,也就是host边。

控制(Control)方式传送:控制传送是双向传送,数据量通常较小。USB系统软件用来主要进行查询、配置和给USB设备发送通用的命令。控制传送方式可以包括8、16、32和64字节的数据,这依赖于设备和传输速度。控制传输典型地用在主计算机和USB外设之间的端点(Endpoint)0之间的传输,但是指定供应商的控制传输可能用到其它的端点。

同步(isochronous)方式传送:同步传输提供了确定的带宽和间隔时间(latency)。它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。例如执行即时通话的网络电话应用时,使用同步传输模式是很好的选择。同步数据要求确定的带宽值和确定的最大传送次数。对于同步传送来说,即时的数据传递比完美的精度和数据的完整性更重要一些。

中断 (interrupt)方式传送:中断方式传输主要用于定时查询设备是否有中断数据要传送。设备的端点模式器的结构决定了它的查询频率,从1到255ms 之间。这种传输方式典型的应用在少量的分散的、不可预测数据的传输。键盘、操纵杆和鼠标就属于这一类型。中断方式传送是单向的并且对于host来说只有输入的方式。

大量(bulk)传送:主要应用在数据大量传送传送和接受数据上,同时又没有带宽和间隔时间要求的情况下,要求保证传输。打印机和扫描仪属于这种类型。这种类型的设备适合于传输非常慢和大量被延迟的传输,可以等到所有其它类型的数据的传送完成之后再传送和接收数据。

USB 将其有效的带宽分成各个不同的桢(frame),每桢通常是1ms时间长。每个设备每桢只能传送一个同步的传送包。在完成了系统的配置信息和连接之后, USB的host就会对不同的传送点和传送方式做一个统筹安排,用来适应整个的USB的带宽。通常情况下,同步方式和中断方式的传送会占据整个带宽的 90%,剩下的就安排给控制方式传送数据。

USB的低层结构
USB设备
USB的设备可以接在PC上的任意的USB接口上。而使用HUB还可以扩展使更多的USB设备连接到系统中,USB的HUB有一个上行的端口(到host),有多个的下行端口(连接其它的设备),从而可以使整个的系统可以扩展的连接127个外设,其中HUB也酸外设。对于USB系统来说,USB的host永远是PC边,所有的其他连接到host都称为设备,在设备与设备之间是无法实现直线通信的,只有通过host的管理与调节才能够实现数据的互相传送.在系统中,通常会有一个根HUB,这个HUB一般有两个下行的端口。
一个PC可以拥有一个或多个的USB host控制器。一般有两种类型的控制器:UHCI(USB host控制器接口),OHCI(开放的host控制器接口)。Windows的USB类驱动程序对于每一种的控制器类型都有一种miniclass驱动程序来支持。

USB的物理信号
USB 的电缆有四根线,两根传送的是5V的电源,有一些直接和电源HUB相连的设备可以直接利用它来供电。另外的两根是数据线,数据线是单工的,在整个的一个系统中的数据速率是一定的,要么是高速,要么是低速,没有一个可以中间变速的设备来实现数据码流的变速.在这一点上,USB和1394有明显的差别。
USB的总线可以在不使用的时候被挂起,这样一来就可以节约能源。 
在有些时候的总线还有可能挡机(stall),比如说象数据传送的时候突然被打断,这个时候通过host的重新配置可以实现总线的重新工作。

低层协议
USB的物理协议规定了大多数的在总线上的数据格式,通常一个全速的数据桢可以最多有的1500bytes,而对于低速的桢最多有187bytes。
桢通常是用来分配带宽给不同的数据传送方式。同时由于桢结构的规律性,桢的这种特性也可以用来做同步信号来使用。
一个最小的USB的数据块叫做包(packet),包包括同步信号,包标识(packet ID),CRC和传送的数据。Packet ID共有以下十种:

token: OUT IN SOF SETUP 
data: DATA0 DATA1 
handshake: ACK NAK STALL 
special: PRE

Transactions(数据交换)
一个transaction是在host和设备(device)之间的不连续相互数据交换,通常由host开始交换,交换的开始是由Token的包开始的,接下来是双方向上的数据包,在数据包传送完之后,就会由设备(device)返回一个握手(handshake)包。USB系统通过IN,OUT,和 SETUP的包来指定USB地址和endpoint(最多是128个,0通常被用来用做缺省的传送配置信息的),并且这些被指定的设备必须通过上面形式的包来回应这种形式的指定。每个SETUP的包包含8个byte的数据,数据用来指示传送的数据类型。对于DATA数据包来说,设置两种类型的数据包是为了能够在传送数据的时候做到更加的精确。ACK handshake的包用来指示数据传送的正确性,而STALL handshake则表示数据包在传送的过程中出了故障,并且请示host重新发数据或者清除这次传送。PRE格式的包主要是用在在一个USB的系统中如果存在不同速率的设备的时候,将不同于总线速度的设备中就会回应一个PRE的包从而会忽略该设备。
各种不同类型的包的大小是不同的,DATA的数据包最大是1023bytes.

Start of Frame(SOF)
SOF是host用来指示frame的开头的。SOF的包包括11个bit的桢序号,从0到0X7FF(i.e. USBD_ISO_START_FRAME_RANGE-1),SOF对于所有的高速设备来说是有效的。

Power
每个设备可以从总线上获得100mA的电流,如果特殊的向系统申请,最多可以获得500mA的电流,在挂机的状态下,电流只有500uA

通用串行总线-USB简介相关推荐

  1. 2.7通用串行总线 USB Universal Serial Bus

    2.7通用串行总线 USB Universal Serial Bus 1 USB是什么? 2 USB接口特点? 3 USB接口定义 3.1 USB2.0接口定义 3.2 USB3.0接口定义 3.2. ...

  2. 多功能时钟电路的设计框图_详解通用串行总线USB,工作原理、接口电路设计

    USB 的英文全称为 Universal Serial Bus,中文含义是通用串行总线,它是一种快速的,双向的,同步传输的廉价的并可以进行热拔插的串行接口.USB 接口使用方便,它可以连接多个不同的设 ...

  3. PIC18F2455/2550/4455/4550之通用串行总线USB

    PIC18FX455/X550 系列器件包含全速和低速兼容的USB串行接口引擎(Serial Interface Engine,SIE),它允许在任何USB主机和PIC单片机之间进行高速通信. 可以利 ...

  4. 通用串行总线USB接口——USB2.0通信协议总结(USB通信机制、描述符、数据包类型、传输类型)

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发>

  5. 通用串行总线USB接口——基础总结(USB版本演进、接口类型、电气特性、拓扑结构、USB硬件接口实现)

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发>

  6. Universal Serial Bus (USB) - 通用串行总线

    Universal Serial Bus (USB) - 通用串行总线 Universal Serial Bus (USB) is an industry standard that establis ...

  7. USB(一)——USB通用串行总线基础知识详述

    目录 1. USB简介 2. USB的特性 2.1 USB的性能特点 2.2. USB的电气特性 3.  USB总线系统中的设备 4. USB2.0 传输协议 4.1 包(package)是什么? 4 ...

  8. linux usb hcd nak,第16章通用串行总线接口(USB)mpc83xx中文手册.doc

    第16章通用串行总线接口(USB)mpc83xx中文手册 第16章 通用串行总线接口 本章介绍MPC8349E的通用串行总线接口(USB).该接口支持许多工业标准.有关这些复杂的工业标准的说明已经超出 ...

  9. 服务器系统通用串行总线控制器,win7系统usb设备不能用通用串行总线控制器无法启动的解决方法...

    很多小伙伴都遇到过win7系统usb设备不能用通用串行总线控制器无法启动的困惑吧,一些朋友看过网上零散的win7系统usb设备不能用通用串行总线控制器无法启动的处理方法,并没有完完全全明白win7系统 ...

最新文章

  1. resin-pro-4.0.34 服務器在windows环境下的配置
  2. 视频私有云实战:基于Docker构建点播私有云平台
  3. an导入html5,H5-FLASH:AN HTML5-BASED FLASH RUNTIME
  4. selenium WebDriverWait类等待机制的实现
  5. build openposewith opencv-2.4.13,cuda9(9.0 - 9.2)
  6. 阮一峰ES6入门读书笔记(十):Proxy
  7. 沉思录之面向对象随想
  8. java 熄灯问题_Java算法应用之熄灯问题解决
  9. 2021/04/10 OJ每日一题 1190: 按出生日期排序(结构体专题)python
  10. 由浅入深玩转华为WLAN—12安全认证配置(5)Portal认证,外置Protal服务器TSM对接
  11. gson 解析int类型转换为double解决方案
  12. 计算机式硬盘录像机,全面分析PC式硬盘录像机十大问题
  13. Squid+MRTG实现完善的缓存代理和http服务加速代理
  14. crontab指定时间
  15. 史上最全的Android文章精选合集
  16. Javascript——下载功能,获取电脑桌面制定下载路径
  17. 查看网页上保存的密码-Google Chrome
  18. android车机启动器,【分享】车载启动器 AG 车载桌面启动器1.5.1车机桌面
  19. ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found (required
  20. 判断H5页面环境在微信中还是小程序中

热门文章

  1. SunTorque分享_螺栓扭矩控制方法
  2. H - 遇到百分之百的女孩
  3. Mybatis中动态Sql语句的拼接分析
  4. OpenStack-Glance组件和部署
  5. Rides Cluster
  6. 计算机组成原理8路复用器,计算机多路复用器
  7. 使用itext为PDF添加批注文字
  8. 拼多多自动评价要几天?怎么回复?拼多多补单软件
  9. 洋葱模型php,koa 洋葱模型
  10. matlab读取mit bih,将MIT-BIH心律失常ECG数据库加载到MATLAB上