Chinaunix首页 | 论坛 | 博客
  • 博客访问: 791368
  • 博文数量: 83
  • 博客积分: 7030
  • 博客等级: 少将
  • 技术积分: 1097
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-06 15:50
文章分类

全部博文(83)

文章存档

2011年(2)

2010年(9)

2009年(56)

2008年(16)

我的朋友

分类:

2008-07-01 10:12:13

通用串行总线(Universal Serial Bus, )通用串行总线是连接外部设备的一个串口总线标准,在计算机上使用广泛,但也可以用在机顶盒和游戏机上,补充标准(On-The-Go)使其能够用于在便携设备之间直接交换数据。USB由、、、、等几家大厂商发起。


起因

Intel公司开发的通用串行总线架构(USB)的目的主要基于以下三方面考虑:

(一)计算机与电话之间的连接:显然用计算机来进行计算机通信将是下一代计算机基本的应用。机器和人们的数据交互流动需要一个广泛而又便宜的连通网络。然而,由于目前产业间的相互独立发展,尚未建立统一标准,而USB则可以广泛的连接计算机和电话。

(二)易用性:众所周知,PC机的改装是极不灵活的。对用户友好的图形化接口和一些软硬件机制的结合,加上新一代总线结构使得计算机的冲突 大量减少,且易于改装。但以终端用户的眼光来看,PC机的输入/输出,如串行/并行端口、键盘、鼠标、操纵杆接口等,均还没有达到即插即用的特性,USB 正是在这种情况下问世的。

(三)端口扩充:外围设备的添加总是被相当有限的端口数目限制着。缺少一个双向、价廉、与外设连接的中低速的总线,限制了外围设备(诸如 电话/电传/调制解调器的适配器、扫描仪、键盘、PDA)的开发。现有的连接只可对极少设备进行优化,对于PC机的新的功能部件的添加需定义一个新的接口 来满足上述需要,USB就应运而生。它是快速、双向、同步、动态连接且价格低廉的串行接口,可以满足PC机发展的现在和未来的需要。


简介

USB最初是由与倡导发起,其最大的特点是支持(Hot plug)和 (Plug&Play)。当设备插入时,(enumerate)此设备并加载所需的,因此使用远比和总线方便。

USB速度比平行埠并联总线(Parellel Bus,例如EPP、LPT)与串联埠总线(Serial Port,例如RS-232)等传统电脑用标准总线快上许多。原标准中USB 1.1 的最大传输带宽为 12Mbps,USB 2.0 的最大传输带宽为 480Mbps。

USB的设计为非对称式的,它由一个主机(host)控制器和若干通过设备以树形连接的设备组成。 一个控制器下最多可以有5级hub,包括Hub在内,最多可以连接127个设备,而一台计算机可以同时有多个控制器。 和SPI-SCSI等标准不同,USB hub不需要终结器。

USB可以连接的有、、、、、、、和部件。对数码相机这样的多媒体外设USB已经是缺省接口;由于大大简化了与计算机的连接,USB也逐步取代成为打印机的主流连接方式。2004年已经有超过1亿台USB设备;到2005年显示器和高清晰度数字视频外设是仅有的USB未能染指的外设类别,因为他们需要更高的传输速率。

现标准中将UBS统一为USB2.0,分为:

  • High-speed,传输速率25Mbps~400Mbps(最大480Mbps);
  • Full-speed ,传输速率500Kbps~10Mbps(最大12Mbps);
  • Low-speed,传输速率10Kbps~100Kbps(最大1.5Mbps)

标准

USB Implementers Forum (USBIF)负责USB标准制订,其成员包括、、、和。

USBIF于2001年底公布了2.0规范,之前还有0.9、1.0、和1.1,他们都是完全向后兼容的。On-The-Go Supplement to the USB 2.0 Specification的当前版本是1.0a。

USB的连接器分为A、B两种,分别用于主机和设备;其各自的小型化的连接器是Mini-A和Mini-B,另外还有Mini-AB的插口。


现标准中将UBS统一为USB2.0,分为:

  • High-speed,传输速率25Mbps~400Mbps(最大480Mbps)
  • Full-speed ,传输速率500Kbps~10Mbps(最大12Mbps)
  • Low-speed,传输速率10Kbps~100Kbps(最大1.5Mbps)

历史


USB

  • USB 1.0 FDR: 1995年11月释出,同一年苹果公司发布 1394标准,就是著名的.
  • USB 1.0: 1996年1月释出。
  • USB 1.1: 1998年9月释出。
  • USB 2.0: 2000年4月释出。这一标准的主要特性就是高速(理论值480Mbps)。这是当前版本。
  • USB 2.0: 2002年12月修订。加入三个不同速度标准, 允许所有USB2.0兼容所有标准的USB设备包括1.1和1.0。这使得标准能够向后兼容,但是增加了不察看标记来计算设备吞吐量的难度。

USB On-The-Go Supplement

  • USB On-The-Go Supplement 1.0: 2001年12月发布
  • USB On-The-Go Supplement 1.0a: 2003年6月发布,即当前版本



技术细节概述


技术指标

目前USB支持3种,USB设备应该在其外壳或者有时是自身上正确标明其使用的速率。进行设备认证并为通过兼容测试并支付许可费用的设备提供基本速率(低速和全速)和高速的特殊商标许可。

  • 1.5 (183 /s) 的低速速率,主要用于人机接口设备(Human Interface Devices ,HID)例如键盘、鼠标、游戏杆。
  • 12 Mbit/s (1.4 /s)的全速速率, 在USB 2.0之前是曾经是最高速率,后起的更高速率的高速接口应该兼容全速速率。多个全速设备间可以按照先到先得法则划分带宽;使用多个等时设备时会超过带宽上限也并不罕见。所有的USB Hub支持全速速率。
  • 480 Mbit/s (57 MByte/s)的高速速率。 并非所有的USB 2.0设备都是高速的。高速设备插入全速hub时应该与全速兼容。而高速hub具有所谓Transaction Translator(事务翻译器)功能,能够隔离全速、低速设备与高速之间数据流,但是不会影响供电和串联深度。

机械和电气标准

[]

标准USB接口

USB标准A、 B插头及其触点(未按比例绘制)
USB标准A、 B插头及其触点(未按比例绘制)
标准USB连接器触点
触点 功能(主机) 功能 (设备)
1 VBUS (4.75-5.25 V) VBUS (4.4-5.25 V)
2 D- D-
3 D+ D+
4 接地

USB信号使用分别标记为D+和D-的传输,它们各自使用并协同工作,以抵消长导线的电磁干扰,


Mini USB接口

Mini USB A、 B连接器及其触点(未按比例绘制)
Mini USB A、 B连接器及其触点(未按比例绘制)
Mini USB连接器触点
触点 功能
1 VBUS (4.4–5.25 V)
2 D−
3 D+
4 ID
5 接地

mini USB除了第4针外,其他接口功能皆與标准USB相同。第4针成为ID,在mini-A上连接到第5针,在mini-B可以悬空亦可连接到第5针。


编码方式

USB标准采用方式(翻转不归零制)对数据进行编码。(non-return to zero,inverted),电平保持时传送逻辑1,电平翻转时传送逻辑0。

软件架构

PCB mounting female USB connectors
Enlarge
mounting female USB connectors

一个USB主机通过hub链可以连接多个设备。由于理论上一个物理设备可以承担多种功能,例如同时也可以是一个读卡器,USB的术语中设备(device)指的是功能(functions)。集线器(hub)由于作用特殊,按照正式的观点并不认为是function。 直接连接到主机的hub是根(root)hub。


端点

设备/功能(和集线器)与管道pipe (逻辑通道)联系在一起,管道把主机控制器和被称为端点的逻辑实体连接起来。 管道和比特流(例如的)有着相同的含义,而在USB词汇中术语端点经常和管道混用,甚至在正式文档中。

端点(和各自的管道)在每个方向上按照0-15编号,因此一个设备/功能最多有32个活动管道,16个进,16个出。 (OUT)指离开控制器,而IN) 指进入主机控制器。) 两个方向的端点0总是留给总线管理,占用了32个端点中的2个。在管道中,数据使用不同长度的包传递,端点可以传递的包长度上限一般 是2^n字节,所以USB包经常包含的数据量依次有8、16、32、64、128、256、512或 者1024字节。


一个端点只能单向(进/出)传输数据,自然管道也是单向的。每个USB设备至少有两个端点/管道:它们分别是进出方向的,编号为0,用于控制总线上的设备。按照各自的传输类型,管道被分为4类:

  • 控制传输——一般用于短的、简单的对设备的命令和状态反馈,例如用于总线控制的0号管道。
  • 等时传输——按照有保障的速度(可能但不必然是尽快地)传输,可能有数据丢失,例如实时的音频、视频。
  • 中断传输——用于必须保证尽快反应的设备(有限延迟),例如鼠标、键盘。
  • 批量传输——使用余下的带宽大量地(但是没有对于延迟、连续性、带宽和速度的保证)传输数据,例如普通的文件传输。

一旦设备(功能)通过总线的hub附加到主机控制器,主机控制器就给它分配一个主机上唯一的7位地址。主机控制器通过投票分配流量,一般是通过轮询模式,因此没有明确向主机控制器请求之前,设备不能传输数据。

为了访问端点,必须获得一个分层的配置。连接到主机的设备有且仅有一个设备描述符device descriptor),而设备描述符有若干配置描述符(configuration descriptors)。这些配置一般与状态相对应,例如活跃和模式。 。每个配置描述符有若干接口描述符interface setting),用于描述设备的一定方面,所以可以被用于不同的用途:如一个相机可能拥有视频和音频两个接口。接口描述符有一个缺省接口设置default interface setting)和可能多个替代接口设置alternate interface settings),它们都拥有如上所述的端点描述符。一个端点能够在多个接口和替代接口设置之间复用。


HCD

包含主机控制器和根HUB的为程序员提供了由硬件实现定义的接口主机控制器设备 (HCD)。而实际上它在计算机是就是和。

1.0和1.1的标准有两个竞争的HCD实现。的 开放主机控制器接口 (OHCI)和Intel的通用主机控制器接口 (UHCI) 。VIA采 纳了UHCI;其他主要的芯片组多使用OHCI。它们的主要区别是UHCI更加依赖软件驱动,因此对CPU要求更高,但是自身的硬件会更廉价。它们的并存 导致操作系统开发和硬件厂商都必须在两个方案上开发和测试,从而导致费用上升。因此 USB-IF在USB 2.0的设计阶段坚持只能有一个实现规范,这就是扩展主机控制器接口 (EHCI)。因为EHCI只支持全速传输,所以EHCI控制器包括四个虚拟的全速或者慢速控制器。这里同样是 Intel和Via使用虚拟UHCI,其他一般使用OHCI控制器。

某些版本的上,打开设备管理器,如果设备说明中是否有“增强”("Enhanced"),就能够确认它是2.0版的。而在系统中,命令lspci能够列出所有的PCI设备,而USB会分别命名为OHCI、UHCI或者EHCI。

列出为16位地址的为EHCI,32位的为OHCI

命令lsusb能够显示所有USB设备的信息。命令dmesg能够显示OS启动时关于USB设备的信息。


USB 封包格式

USB 的封包格式和早期的internet封包格式非常相似,要了解USB連接原理就一定要先了解封包格式。

USB packet format
OFFSET TYPE SIZE VALUE
0 HeaderChksum 1 Checksum of the header by adding the header bytes, excluding the header checksum.
1 HeaderSize 1 Size of the header, including strings if applicable.
2 Signature 2 Signature: 0x1234
4 VendorID 2 USB Vendor ID
6 ProductID 2 USB Product ID
8 ProductVersion 1 Product version
9 FirmwareVersion 1 Firmware version
10 UsbAttributes 1 USB attributes:

Bit 0: If set to 1, the header includes all three strings: language, manufacture, and product strings; if set to 0, the header does not include any strings.
Bit 2: If set to 1, the device can be self powered; if set to 0, it cannot be self powered.
Bit 3: If set to 1, the device can be bus powered; if set to 0, it cannot be bus powered.
Bits 1 and 4 ... 7: Not used.

11 MaxPower 1 Maximum power the device needs in units of 2 mA.
12 Attribute 1 Device attributes:

Bit 0: If set to 1, the CPU speed runs at 24 MHz; if set to 0, the CPU speed runs at 12 MHz.
Bit 3: If set to 1, the device's EEPROM can support 400 MHz; if set to 0, it can not support 400 MHz.
Bits 1, 2 and 4 ... 7: Not used.

13 WPageSize 1 Maximum I2C write page size
14 DataType 1 This value defines if the device is application EEPROM or device EEPROM.

0x01: Application EEPROM
0x02: Device EEPROM
Other values are invalid.

15 RpageSize 1 Maximum I2C read page size. If the value is zero, the whole PayLoadSize is read in one I2C read setup.
16 PayLoadSize 2 Size of the application, if using EEPROM as an application EEPROM; otherwise the value is 0.
0xxx Language string 4 Language string in standard USB string format if applicable.
0xxx Manufacture string ... Manufacture string in standard USB string format if applicable.
0xxx Product string ... Product string in standard USB string format if applicable.
0xxx Application Code ... Application code if applicable.

设备分类

依附在总线上的设备可以是需要特定的驱动程序的完全定制的设备,也可能属于某个设备类别。这些类别定义了某种设备的行为和接口描述符,这样一个驱动程序可能用于所有此种类别的设备。一般操作系统都为支持这些设备类别,为其提供通用驱动程序。

设备分类由USB设计论坛设备工作组决定,并分配ID。

如果一个设备类型属于整个设备,该设备的描述府bDeviceClass的域保存类别ID;如果它这是设备的一个界面,其ID保存在界面描 述府的;bInterfaceClass域。他们都占用一个字节,所以最多有253种设备类别。(0x00和0xFF保留)。当bDeviceClass 设为0x00,会检查每个接口的bInterfaceClass以确定其类别。

每种类别可选支持子类别(SubClass)和协议子定义(Protocol subdefinition)。这样可以用于主设备类型的不断修订。

常用设备类别和ID有:

0x00 
保留值
0x01 
, 像这样的设备。
0x03 
, 键盘鼠标等
0x06 
静止图像捕捉设备,用在USB上的Picture Transfer Protocol。
0x07 
, 打印机。
0x08 
, 可移动硬盘, 、、读卡器, 数码相机, 等。 这一类设备显示成一个。
0x09 
USB hubs。
0x0A 
("CDC") used for (包括), (交叉电缆), , 。
0x0E 
, 类似,电视卡的动态图像捕捉设备。
0xE0 
无线控制器,如。
0xFF 
定制设备。

USB接头

接头是由USB协会所指定,接头的设计一方面为了支持众多USB的基本需求,另一方面也避免以往许多类似串行接头所出现的问题。

  • 接头设计的相当耐用。许多以往使用的接头较脆弱,即使受力不大,有时针脚或零件也会折弯甚至断裂。而USB接头的金属导电部份周围有塑料作为保护,而且整个连接部份被金属的保护套围住,因此USB接头不论插拔,都不容易受损。
  • 不可能把USB接口插错。这是防呆设计,方向相反的插头不可能插到插座里,方向正反很容易感觉出来。
  • 接头能相对便宜地大量生产。
  • 在USB网络中,接头被强制使用定向。USB不支持,因此不兼容的USB设备之间接口也不兼容。不像其他通讯系统(如RJ-45电缆)不能使用转换插头,防止环形USB网络产生。
  • 适度的插拔力。USB电缆和小型USB设备能被插口卡住(不需要夹子、螺丝或者其他接口那样的锁扣)。允许通过适当力量插拔,连接器要方便困难环境和残障人士使用。
  • 由于接头的构造,在将USB插头插入USB座时,插头外面的金属保护套会先接触到USB座内对应的金属部份,之后插头内部的四个触点才会接触到USB座。金属保护套会连接到系统的地点,提供路径使静电可以放电,避免因静电通过电子零件而造成损坏。

电源

USB 接头提供一组5的 电压,可作为相连接USB设备的电源。实际上,设备接收到的电源可能会低于5V,只略高于4V。USB规范要求在任何情形下,电压均不能超过5.25V; 在最坏情形下(经由USB供电HUB所连接的LOW POWER设备)电压均不能低于4.375V,一般情形电压会接近5V。

一个 USB 的根集线器最多只能提供 500 的电流。如此的电流已足以驱动许多电子设备,不过连接在总线供电HUB的所有设备,需要共享 500mA 的电流额度。一个由总线供电的设备可以使用到它所连接埠上允许输出的所有电源。

总线供电的HUB可以将电源供给连接在 HUB 上的所有设备,不过 USB 的规范只允许总线供电的 HUB 下游串接一层总线供电的设备,因此,总线供电的 HUB 下游不允许再串接另一个由总线供电的 HUB。许多 HUB 有外加电源,因此可以提供电源给下游的设备,不会消耗总线上的电源。若设备需要的电压超过5V,或是需要电流超过500mA,都需要使用外加电源。

相对于之前其他沟通介面仅能传递讯息资料,高电压USB插槽本身还能提供5V()的主动,及0.5A()的,因此对于一些小型设备而言,可以不必再外接电源供应装置,就能利用来自USB插槽的电力顺利运作。利用这特点,也有厂商开发出适当的排线,将USB拿来当作供电插座般使用,例如作为的充电器,或是提供小型电灯的电力需要,反而与原本用来连接电脑用的主要用途无关。


同类标准比较


Storage

闪存盘,典型的USB海量存储设备
Enlarge
,典型的USB海量存储设备

USB 使用 USB mass storage device class标准实现Storage设备的连接.它最初被用于传统的磁盘和光盘驱动,但是现在已经扩展到支持大量不同的设备.USB不能用于计算机内部存储设备的基本总线: 像 (IDE), Serial ATA (), 和 .

然而, USB有一个非常重要的优点,那就是它能够在不关闭计算机的情况下动态的安装和删除USB设备,这使它成为一个有用的外部设备.今天,大量的生产商提供便 携式USB移动硬盘或者一个空的,能够兼容内部驱动的盒子.这些内部驱动通常提供一个转换驱动接口,用以转换IDE, ATA, SATA, ATAPI, 或者 SCSI 到USB port。对于用户来讲,就像连接了一个内部的驱动。其他的竞争标准是 以及 .


人机接口设备(HID)

USB没有完全取代和键 盘鼠标接口,但是事实上现在所有主板制造商都提供至少多于一个USB接口。到2004年,大多数新主板都配有多个高速USB 2.0接口,尽管有些是内置在主板上的,需要使用电缆连接到位于主机前面板或者侧面的接口。同样的对游戏操纵杆,手柄,写字板和其他人机接口设备的支持逐 渐从原声卡上的“MIDI/游戏”接口和PS/2接口上转移到USB上。现在带着USB转PS/2接口转换插头的USB键盘鼠标相当普遍,他们可以使用任 意2种接口之一。

使用专用键盘鼠标的苹果电脑1999年一月也开始使用USB接口。最初的IPOD只有IEEE1394接口,后来在3G的IPOD,苹果电脑开始支持USB2.0,但是还不能用作充电,现在的IPOD,已经全面兼容USB与IEEE1394,两者均可充电以及连接计算机。


扩展

PictBridge标准可以使得消费者使用的图形设备彼此互通(例如数码相机直接通过打印机输出)。一般它使用USB做为其底层通信协议。


参见

阅读(1599) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~