简而言之,USB
理解USB标准开始新的USB接口可能会让人望而生畏。和USB 2.0规范在650页的篇幅上,人们很容易因为标准的篇幅而被推迟。这只是一长串USB相关标准的开始。有USB类标准例如HID类规范,它详细说明了HID(人机界面设备)类下的设备(键盘、鼠标等)的常见操作——只有另外97页。如果您正在设计一个USB主机,那么您有三个主机控制器接口标准可供选择。这些都没有在usb2.0规范中详细说明。
好消息是你甚至不需要费心去阅读整个USB标准。有些章节是由市场营销精心编写的,有些章节针对的是通常由USB控制器IC负责的较低链路层,还有一些章节针对主机和集线器开发人员。通过一个小的章节让我们简单的介绍一下USB的各个章节。
所以现在我们可以开始阅读标准中与我们需要相关的部分。如果您为USB外设开发驱动程序(软件),那么您可能只需要阅读章节,
4-建筑概述
5-USB数据流模型
9-USB设备框架,以及
10-USB主机硬件和软件。
另一方面,外围硬件(电子)设计师可能只需要阅读章节,
4-建筑概述
5-USB数据流模型
6-机械,以及
7-电气
现在让我们面对现实,(1)我们大多数人都是来开发USB外设的,(2)读一个标准很常见,但仍然不知道如何实现一个设备。因此在接下来的7章中,我们将重点介绍开发USB设备所需的相关部分。这使您能够掌握USB及其问题,从而进一步研究特定于您的应用程序的问题。
USB1.1标准在高速传输到USB2.0之前已经足够复杂了。为了帮助理解USB背后的基本原理,我们省略了许多高速设备特有的领域。
介绍通用串行总线USB版本1.1支持两种速度,一种是12Mbits/s的全速模式,另一种是1.5Mbits/s的低速模式。1.5Mbits/s模式速度较慢,不易受电磁干扰影响,因此降低了铁氧体磁珠和优质元件的成本。例如,晶体可以用更便宜的谐振器代替。USB2.0在主流台式机上还没有见到曙光,它已经把****注提高到480Mbits/s。480Mbits/s被称为高速模式,是与Firewire串行总线竞争的一种手段。
USB速度
高速-480Mbits/s
全速-12Mbits/s
低速-1.5Mbits/s
通用串行总线由主机控制。每个总线只能有一个主机。规范本身不支持任何形式的多主控排列。但是随动规范作为usb2.0的一个附加标准,它引入了一个主机协商协议,允许两个设备协商主机的角色。这是针对并仅限于单点对点连接,例如移动电话和个人事务管理器,而不是多个集线器、多设备桌面配置。USB主机负责处理所有事务和调度带宽。可以使用基于令牌的协议通过各种事务方法发送数据。
在我看来,USB的总线拓扑结构有一定的局限性。USB的初衷之一是减少电脑背面的布线量。苹果的人会说,这个想法来自苹果桌面总线,在那里键盘、鼠标和其他一些外围设备可以通过一根电缆连接在一起(菊花链)。
然而,USB使用分层星形拓扑结构,与10BaseT以太网相似。这就要求在某处使用集线器,这增加了更大的开销,桌面上有更多的盒子和更多的电缆。不过,这并不像看上去那么糟糕。许多设备都集成了USB集线器。例如,您的键盘可能包含一个连接到您的计算机的集线器。鼠标和其他设备(如数码相机)可以轻松地插入键盘背面。监视器只是一长串通常有内置集线器的外围设备。
这种分层的星形拓扑结构,而不是简单地将设备串接在一起有一些好处。首先,可以监控每个设备的电源,如果发生过电流情况,甚至可以在不中断其他USB设备的情况下关闭电源。高速、全速和低速设备都可以支持,集线器过滤掉高速和全速事务,这样低速设备就不会接收到它们。
在任何一个给定的时间,最多可以将127个设备连接到任何一个USB总线。需要更多设备吗只需添加另一个端口/主机。虽然大多数早期的USB主机都有两个端口,但大多数制造商认为这是一种限制,并开始引入4端口和5端口主机卡以及硬盘等的内部端口。早期的主机有一个USB控制器,因此两个端口共享相同的可用USB带宽。随着带宽需求的增长,我们开始看到带有两个或更多控制器的多端口卡允许单独的通道。
USB主机控制器有自己的规格。对于USB1.1,有两种主机控制器接口规格, 通用主机控制器接口由Intel开发,它将更多的负担放在软件(Microsoft)上,并允许更便宜的硬件和开放式主机控制器接口由康柏公司、微软公司和国家半导体公司共同开发,它将更多的负担放在硬件(英特尔)上,并使软件变得更简单。典型的硬件/软件工程师关系。
随着usb2.0的引入,需要一个新的主机控制器接口规范来描述特定于usb2.0的寄存器级细节。这个增强型主机接口出生了。重要的贡献者包括Intel、Compaq、NEC、Lucent和Microsoft,因此希望它们能够联合起来,为我们提供一个接口标准,从而只有一个新的驱动程序可以在我们的操作系统中实现。是时候了。
USB顾名思义就是串行总线。它使用4根屏蔽线,其中2根为电源(5v和GND)。其余两个是双绞线差分数据信号。它使用NRZI(Non-Return to Zero Invert)编码方案发送带有同步字段的数据,以同步主机和接收器的时钟。
USB支持plug'n'plug与动态可加载和不可加载的驱动程序。用户只需将设备插入总线即可。主机将检测到这个添加,询问新插入的设备,并在沙漏闪烁的时间内加载相应的驱动程序,前提是为您的设备安装了驱动程序。最终用户不必担心终止,诸如irq和端口地址之类的术语,或者重新启动计算机。一旦用户完成,他们可以简单地将电缆拔出,主机将检测到它的缺失并自动卸载驱动程序。
使用PID/VID(产品ID/供应商ID)组合加载相应的驱动程序。VID是由USB实现者的论坛以一定的成本提供的,这被视为USB的另一个症结。有关费用的最新信息,请访问USB实施者网站
其他标准组织为非商业活动提供额外的视频,如教学、研究或玩弄(业余爱好者)。USB实现者论坛还没有提供这项服务。在这些情况下,您可能希望使用分配给开发系统制造商的一个。例如,大多数芯片制造商将有一个VID/PID组合,您可以使用您的芯片,这是众所周知的不存在的商业设备。其他芯片制造商甚至可以卖给你一个PID,与他们的视频一起用于你的商业设备。
USB的另一个更显著的特点是它的传输模式。USB支持控制、中断、批量和同步传输。稍后我们将讨论其他传输模式,Isochronous允许设备在保证延迟的情况下保留一定数量的带宽。这是音频或视频应用程序的理想选择,在这些应用程序中,拥塞可能会导致数据或帧的丢失。每种传输模式在错误检测和恢复、保证的延迟和带宽等方面为设计者提供了权衡。