USB基础介绍

(转)USB (Universal Serial Bus)

全文地址:http://vlewang.blog.163.com/blog/static/105878151201032804347546/

USB(通用串行总线)是用于将适用USB的外围设备连接到主机的外部总线结构,其主要是用在中速和低速的外设,。USB是通过PCI总线和PC的内部系统数据线连接,实现数据的传输,。USB同时又是一种通信协议,他支持主系统(host)和USB的外围设(device)之间的数据传输。

USB的动机
1
连接PC与电话,

PC具有很强的运算能力,而电话提供最为广泛的通信互连,运算与通信成为计算机应用的基础,而计算机与通信是两个相对独立发展的产业,USB旨在提供可以广泛应用于PC,到电话的互连的普遍性的连接。
2 Plug-and-Play

从用户端来看,PC的串行口,并行口和键盘鼠标端口都不能Plug-and-Play,USB则提供真正的Plug-and-Play。
3 端口扩展

PC的已有的串行/并行口等端口只适用于一两种的外设,并且不易扩展,USB提供双向,低成本,低速到中速(USB 2.0可达480Mb/s)的通用外设总线,适用于连接各种各样的外设,并且易于扩展。

USB的拓朴结构

在USB的网络协议中,每个USB的系统有且只有一个host,它负责管理整个USB系统,包括USB Device的连接与删除,Host与USB Device的通信,总路线的控制等等,Host端有一个Root Hub,可提供一个或多个USB下行端口,每个端口可以连接一个USB Hub或一个USB Device。USB Hub,是用于USB 端口扩展的,即USB Hub可以将一个USB端口扩展为多个端口,图1中的每个Func(Function)就是一个USB Device,如USB键盘,USB鼠标,USB MODEM,USB硬盘等等,Compound Device是指带一个Hub和一个或多个不可删除的USB Device的复合设备,一个USB系统可连接多达127个Function。

USB

的系统有且只有一个host,而PC端的USB都是Host,所以将两台PC的USB
口通过A-A USB电缆连接起来,是不能实现通信,如果将两个host连起来通信,这样一来的一个USB的系统有了两个的host,与它的网络协议冲突,Anchorchip,Prolific,等厂家
有USB到USB的设备控制器,可以实现两个USB Host的相连

USB设备

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

USB的设备类型(device class)
      虽然USB设备都会表现USB的一些基本的特征,但是USB的设备还是可以分成多个不同类型,同类型的设备可以拥有一些共同的行为特征和工作协议,从而使设备的驱动程序的书写变得简单一些,下表中就给出一些基本的USB的设备类型分类


设备举例


音频(audio)


USB_DEVICE_CLASS_AUDIO


MODEM


HID


USB_DEVICE_CLASS_HUMAN_INTERFACE


摄相机.扫描仪


显示


USB_DEVICE_CLASS_MONITOR


动力回馈式

游戏操纵杆


电源


USB_DEVICE_CLASS_POWER


Bulk存储器


USB_DEVICE_CLASS_STORAGE

的优点
1USB为所有的USB外设提供了单一的,易于使用的标准的连接类型,这样一来就简化了USB,外设的设计,同时也简化了用户在判断哪个插头对应哪个插槽时的任务,实现了单一的数据通用接口。
2整个的USB的系统只有一个端口和一个中断,节省了系统资源。
3USB支持热插拔(hot plug)和PNP(Plug-and-Play),也就是说在不关闭PC,的情况下可以安全的插上和断开USB设备,计算机系统动态地检测外设的插拔,并且动态地加载驱动程序,其他普通的外围连接标准,如SCSI设备等必须在关掉主机的情况下才能插拔外围设备。
4USB在设备供电方面提供了灵活性,USB直接连接到Hub或者是连接到Host的设备可以通过USB电缆供电,也可以通过电池或者其它的电力设备来供电,或使用两种供电方式的组合并且支持节约能源的挂机和唤醒模式。
5USB提供全速12Mbps的速率和低速1.5Mbps的速率来适应各种不同类型的外设。USB2.0还支持480Mbps的高速传输速率。
6为了适应各种不同类型外围设备的要求,USB提供了四种不同的数据传输类型:控制传输,Bulk,数据传输,中断数据传输和同步数据传输,同步数据传输可为音频和视频等实时设备的实时数据传输提供固定带宽。
7USB的端口具有很灵活的扩展性,一个USB端口串接上一个USB Hub就可以扩展为
多个USB端口。

传输方式
      USB,有四种的传输方式,控制(Control),同步(isochronous),中断(interrupt),大量(bulk)。如果你是从硬件开始来设计整个的系统,你还要正确选择传输的方式,而作为一个驱动程序的书写者,就只需要弄清楚他是采用的什么工作方式就行了,通常所有的传输方式下的主动权都在PC边,也就是host边。
1、控制(Control)方式传输,控制传输是双向传输,数据量通常较小,USB系统软件用来主要进行查询,配置和给USB设备发送通用的命令,控制传输方式可以包括,8,16,32和64字节的数据,这依赖于设备和传输速度,控制传输典型地用在主计算机和USB外设之间的端点(Endpoint)0之间的传输,但是指定供应商的控制传输可能用到其它的端点。
2、同步(isochronous)方式传输,同步传输提供了确定的带宽和间隔时间(latency),
它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传输率的即时应用中,例如执行即时通话的网络电话应用时,使用同步传输模式是很好
的选择,同步数据要求确定的带宽值和确定的最大传输次数,对于同步传输来说,即时的数据传递比完美的精度和数据的完整性更重要一些。
3、中断(interrupt)方式传输,中断方式传输主要用于定时查询设备是否有中断数据要传输设备的端点模式器的结构决定了它的查询频率,从1到255ms之间,这种传输方式典型的应用在少量的分散的,不可预测数据的传输,键盘,操纵杆和鼠标就属于这一类型中断方式传输是单向的并且对于host,来说只有输入的方式。
4、大量(bulk)传输,主要应用在数据大量传输传输和接受数据上,同时又没有带宽和间隔时间要求的情况下,要求保证传输,打印机和扫描仪属于这种类型,这种类型的设备适合于传输非常慢和大量被延迟的传输,可以等到所有其它类型的数据的传输完成之后再传输和接收数据。

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

数据交换,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。

USB,设备的开发
1
从Http://www.usb.org/developer处得到USB的Specification,阅读相关内容,同时可参考The USB Handbook by Jaff Kosar、Developing USB Peripherals by Wooi Ming Tan等参考书。
2需要一台支持USB的PC,如果要开发WDM驱动程序则需要一台有以下配置的PC:
                    Windows NT 4.0
                    Windows NT DDK
                    USB DDK
                    Win 32 DDK
                    Visual C++
      先装VC,然后DDK,然后Nemega公司的DriverStudio或是WinDriver(开发工具)。
3编写USB Device的规格书。
4无论如何,不要做无谓的重复,可以购买相应的评估板和评估软件,并找到尽可能多的实例源程序代码,然后需要有你所选的MCU,的程序编译器。
5申请成为USB论坛(USB forum)的成员(每年大约需要支付$2500),同时就可以获得一个Vendor ID,也可以向他们购买Vendor ID,每个Vendor ID的零售价格是$200,不过USB论坛的成员可以在USB相关的支持方面可以得到许多的好处。
6购买其它在开发中要用到的设备,如总线分析仪,USB Hubs,竞争者的相应USB设备以及USB鼠标USB键盘等。
7编写或改写USB驱动程序,MCU固件程序和客户程序代码。
8参加USB遵从试验,在不同的系统与配置验证你的USB设备。

驱动程序编写
      USB,的驱动程序和以往的直接跟硬件打交道的WIN95的VXD的方式的驱动程序不同,它应该是WDM类型的,Windows下的USB软件总体框图如图2

时间: 2024-10-24 04:03:07

USB基础介绍的相关文章

cypress的EZ-USB对于USB的介绍

Host is MasterThis is a fundamental USB concept. There is exactly onemaster in a USB system: the host computer. USB devicesrespond to host requests. USB devices cannot send information among themselves, as they could if USB were apeer-to-peer topolog

【简译】jQuery对象的奥秘:基础介绍

本文翻译自此文章 你有没有遇到过类似$(".cta").click(function(){})这样的JavaScript代码并且在想“$('#x')是什么”?如果这些对你想天书一样,请往下读.如果你认为这些代码不可能是真的,请浏览一些jQuery例子,他们都是这种结构. 这篇文章覆盖了像下面一样吓人的代码片段中涉及的关键概念.我们以一个长例子开始,这个长例子是基于一个让一个正方形运动的简单例子(a simple example of animating a square).你可能不需要

Zabbix 3.0 基础介绍 [一]

Zabbix 3.0 基础介绍 [一] zabbix 一.Zabbix介绍 zabbix 简介   Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利   zabbix是一个基于Web界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案.   zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题

【OpenGL】“我叫MT”纯手工3D动画制作之1——基础介绍

最近在家研习面经,温习基础,索性花些时间将本科期间完成的一些学习之作整理出来,分享之余顺便水点经验 其实这个事情起源于一门“计算机图形与动画(Computer Graphics & Animation)”的外方课程,当初的外籍教师Tony教的很认真,对于这门课自己也投入了非常多的时间.言归正传,这里先介绍一些涉及的技术,熟悉的同学请跳过哈~ A.几何物体建模 带阴影的后面我会介绍到的哦~ 加下划线的后面我后面会举栗子的哦~ B.涉及的图形学技术与应用 C.动画技术 参考文献 1.王汝传,张登银,

qt model/view 架构基础介绍之QTreeWidget

# -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅助类 # QTreeWidgetItem 一起使用.不过,既然是提供方面的封装类,即便是看上去很复杂的树, # 在使用这个类的时候也是显得比较简单的 __author__ = 'Administrator' from PyQt4.QtGui import  * from PyQt4.Qt impor

qt model/view 架构基础介绍之QTableWidget

# -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅助类 # QTreeWidgetItem 一起使用.不过,既然是提供方面的封装类,即便是看上去很复杂的树, # 在使用这个类的时候也是显得比较简单的 __author__ = 'Administrator' from PyQt4.QtGui import  * from PyQt4.Qt impor

Erlang基础 -- 介绍 -- Wordcount示例演示

在前两个blog中,已经说了Erlang的历史.应用场景.特点,这次主要演示一个Wordcount的示例,就是给定一个文本文件,统计这个文本文件中的单词以及该单词出现的次数. 今天和群友们讨论了一个问题,突然一下子就上升到哲学角度上了,装逼装大发了. PS:图片中有错别字,%s/财务和其他9个月/财务和其他9个人/g 不过真心想说的一点是,把Erlang系统,映射到现实中,很多奇葩问题,就能迎刃而解了.所以,在下面的简要设计中,我就尽可能的代入一下现实世界吧. 环境安装 mac 的话,用brew

qt model/view 架构基础介绍之QListWidget

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import  * from PyQt4.Qt import * from PyQt4 import QtGui, QtCore from PyQt4.QtCore import * import sys # MVC是Model-View-Controller的简写,即模型-视图-控制器 #model/view框架将传统的mv模型分

Avaya Exrience Portal(AEP)基础介绍 二(四大组件总结)

什么是Avaya Exrience Portal(AEP)? 1:提供语音(或者多媒体)自动化用户体验的软件平台:  2:基于标准的VXML(定义了如何使用语音识别.语音合成.互联网访问.数据库访问.语音文件播放.DTMF输入等功能开发一个完整的语音应用系统.)和CCXML(它基于XML定义了一系列开放标准的呼叫控制API)的应用:  3:支持多媒体处理:  4:完全基于Web架构:  5:支持TTS文语转换和语音识别技术:     2)AEP包含的组件   EPM:AEP集成的管理,报表,监控