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 |
|
| 的优点 1、USB为所有的USB外设提供了单一的,易于使用的标准的连接类型,这样一来就简化了USB,外设的设计,同时也简化了用户在判断哪个插头对应哪个插槽时的任务,实现了单一的数据通用接口。 2、整个的USB的系统只有一个端口和一个中断,节省了系统资源。 3、USB支持热插拔(hot plug)和PNP(Plug-and-Play),也就是说在不关闭PC,的情况下可以安全的插上和断开USB设备,计算机系统动态地检测外设的插拔,并且动态地加载驱动程序,其他普通的外围连接标准,如SCSI设备等必须在关掉主机的情况下才能插拔外围设备。 4、USB在设备供电方面提供了灵活性,USB直接连接到Hub或者是连接到Host的设备可以通过USB电缆供电,也可以通过电池或者其它的电力设备来供电,或使用两种供电方式的组合并且支持节约能源的挂机和唤醒模式。 5、USB提供全速12Mbps的速率和低速1.5Mbps的速率来适应各种不同类型的外设。USB2.0还支持480Mbps的高速传输速率。 6、为了适应各种不同类型外围设备的要求,USB提供了四种不同的数据传输类型:控制传输,Bulk,数据传输,中断数据传输和同步数据传输,同步数据传输可为音频和视频等实时设备的实时数据传输提供固定带宽。 7、USB的端口具有很灵活的扩展性,一个USB端口串接上一个USB Hub就可以扩展为 多个USB端口。 传输方式 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,设备的开发 驱动程序编写 |
USB基础介绍的更多相关文章
- 高通camera结构(摄像头基础介绍)
摄像头基础介绍 一.摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进 ...
- Web3D编程入门总结——WebGL与Three.js基础介绍
/*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...
- C++ 迭代器 基础介绍
C++ 迭代器 基础介绍 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围.迭代器就如同一个指针.事实上,C++的指针也是一种迭代器.但是,迭代器不仅仅是指针,因此你不能认为他们一定 ...
- Node.js学习笔记(一)基础介绍
什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...
- Node.js 基础介绍
什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...
- 1、git基础介绍及远程/本地仓库、分支
1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...
- git基础介绍
git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...
- OSPF基础介绍
OSPF基础介绍 一.RIP的缺陷 1.以跳数评估的路由并非最优路径 2.最大跳数16导致网络尺度小 3.收敛速度慢 4.更新发送全部路由表浪费网络资源 二.OSPF基本原理 1.什么是OSPF a& ...
- iOS系统及客户端软件测试的基础介绍
iOS系统及客户端软件测试的基础介绍 iOS现在的最新版本iOS5是10月12号推出,当前版本是4.3.5 先是硬件部分,采用iOS系统的是iPad,iPhone,iTouch这三种设备,其中iPho ...
随机推荐
- 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- Android 水波纹点击效果(Ripple Effect)
上周Android发布了Android M的Preview版本.但想必Android5.0很多炫酷效果,多数开发者还没有使用过,那更不要说广大用户了. 本文介绍的是Android5.0中其中一个炫酷的 ...
- 网络流24题之星际转移问题(洛谷P2754)
洛谷 P2754 题目背景 none! 题目描述 由于人类对自然资源的消耗,人们意识到大约在 2300 年之后,地球就不能再居住了.于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,21 ...
- Qt消息机制和事件
Qt消息机制和事件 1 事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应 ...
- hive 一次性命令
1.用hive查询,而不进入hive cli,查询后的值可以保存到文件中 #使用参数-e [hadoop@bigdata-senior01 ~]$ hive -e "select * fro ...
- 聊聊flink的Async I/O
// This example implements the asynchronous request and callback with Futures that have the // inter ...
- Docker学习笔记四:Docker镜像、容器管理工具shipyard
一.拉取以下几种镜像: docker pull alpineshipyard/shipyarddocker pull swarm docker pull shipyard/shipyarddocker ...
- java根据系统生成临时文件
createTempFile 会根据当前系统,自动找系统的临时文件目录,在此目录下生成临时文件
- TCP ------ 抓包分析(seq ack)
总结: 1.ACK包可以和其他包合在一起,比如ACK包可以携带数据 2.可以接收多个数据包后,一次性给一个应答,不用每个数据包一一对应给应答 3.在通信过程中,通过接收到的包的ack值可以判断是否是上 ...
- ACE服务端编程5:ACE日志输出和跟踪
服务器程序经常需要在命令行中显示错误消息.状态或者用来跟踪程序的执行路径,最简单的方法是使用printf. ACE提供了更强大日志设施: 1.可以在编译时启用或禁用宏: 2.可以动态的启用或禁用宏: ...