USB协议基础及S3C2410 USB控制器

 在网上看到的一篇文章。总结的不错
一、USB1.1 概述
USB 是 Universal Serial Bus 的简称。它是一种可以同时处理计算机与具有 USB 接口的多种外设之间通信的电缆总线。这些连接到计算机上的外设共同分享 USB 的带宽。USB 的分时处理机制真正在硬件的意义上实现了计算机外设的即插即用。
如果留心一下当前市场上的计算机外设,大家会发现采用 USB 设备的产品正在逐渐增加。键盘、鼠标、MODEM、游戏杆、音箱、扫描仪等,以前插在串行、并行等外部扩展接口上的部件,甚至一些以前要连接到计算机内部扩展槽上的设备,都开始以 USB 接口的接口出现,USB 设备的发展势头正如日中天。
本章将从技术的角度来探讨一下 USB,有关它的部分请参阅 USB1.1 SPEC(www.usb.org) 的相关文章。
一个基于计算机的 USB 系统可以在系统层次上被分为三个部分:即 USB 主机(USB Host)、USB 器件(USB Device)和 USB 的连接。
所谓 USB 连接实际上是指一种 USB 器件和 USB 主机进行通信的方法。它包括:
(1) 总线的拓扑(由一点分出多点的网络形式):即外设和主机连接的模式。
(2) 各层之间的关系:即组成 USB 系统的各个部分在完成一个特定的 USB 任务时,各自之间的分工与合作。
(3) 数据流动的模式:即 USB 总线的数据传输方式。
(4) USB 的“分时复用”:因为 USB 提供的是一种共享连接方式,因而为了进行资料的同步传输,致使 USB 对资料的传输和处理必须采用分时处理的机。
USB 的总线拓扑如图9-1所示,在 USB 的树形拓扑中,USB 集线器(HUB)处于节点(Node)的中心位置。而每一个功能部件都和 USB 主机形成唯一的点对点连接,USB 的 HUB 为 USB 的功能部件连接到主机提供了扩展的接口。利用这种树形拓扑,USB 总线支持最多 127 个 USB 外设同时连接到主计算机系统。
图9-1 USB 的总线拓扑示意图
一个 USB 系统仅可以有一个主机,而为 USB 器件连接主机系统提供主机接口的部件被称为 USB 主机控制器。 USB 主机控制器是一个由硬件、软件和固件( Firmware )组成的复合体。一块具有 USB 接口的主板通常集成了一个称为 ROOT HUB (根集线器)的部件,它为主机提供一到多个可以连接其它 USB 外设的 USB 扩展接口,我们通常在主板上见到的 USB 接口都是由ROOT HUB提供的。
USB器件可以分为两种:即USB HUB和USB功能器件(Function Device)。作为USB总线的扩展部件,USB HUB(图9-2)必须满足以下特征:
1) 为自己和其它外设的连接提供可扩展的下行和上行(Downstream and Upstream)埠。
2) 支持 USB 总线的电源管理机制。
3) 支持总线传输失败的检测和恢复。
4) 可以自动检测下行埠外设的连接和摘除,并向主机报告。
5) 支持低速外设和高速外设的同时连接。
从以上要求出发,USB HUB 在硬件上由两部分组成:HUB 应答器( HUB Repeater )和 HUB控制器( HUB Controller )。 HUB 应答器响应主机对 USB 外设的设置,以及对连接到它下行端口的 USB 功能部件的连接和摘除( Attached and Detached )的检测、分类,并将其端口信息传送给主机,它也负责如“总线传输失败检测”这样的错误处理;而 HUB 控制器则提供主机到 HUB 之间数据传输的物理机制。如同我们所熟知的大多数计算机外设一样, USB HUB 也有一个用来向主机表明自己身份的“BIOS”系统。这块位于 USB HUB 上的 ROM,通过USB 特征字使主机可以配置这个 USB HUB,并监控它的每一个埠。
USB功能器件即可以为主机系统提供某种功能的 USB 器件,如一个 USB ISDN 的调制解调器、或是一只 USB 接口的数字摄像机、 USB 的键盘或鼠标等。
图9-3 一个典型的 USB 功能器件结构框图

USB 的功能器件作为 USB 外设(USB Function),它必须保持和 USB 协议的完全兼容,并可以响应标准的 USB 操作。同样,用于表明自己身份的“BIOS”系统对于 USB 外设也是必不可少的,这在 USB 外设上被称为协议层。在物理机制上,一个 USB 外设可以由四部分构成(见图9-3):
1) 用于实现和USB协议兼容的SIE部分。
2) 用于内存件特征字、存储实现外设特殊功能程序及厂家信息的协议层( ROM )。
3) 用于实现外设功能的传感器及对资料进行简单处理的 DSP 部分。
4) 将外设连接到主机或 USB HUB 的接口部分。
根据传输率的不同, USB 器件被分为高速和低速两种。低速外设的标准传输率为1.5Mbps,而高速外设的标准传输率为12Mbps。所有的 USB HUB 都为高速外设,而功能部件则可以根据外设的具体情况设计成不同的传输率,如用于视频、音频传输的外设大都采用 12Mbps 的传输率,而像键盘、鼠标这样的人机输入设备(HID)则设计成低速外设。由于 USB 的数据传输采用资料包的形式,因而使得连接到主机的所有的 USB 外设可以同时工作而互不干扰。不幸的是,所有这些 USB 外设必须同时分享 USB 协议所规定的 USB 带宽(这个带宽在USB 1.0协议中为12Mbps ),虽然 USB 的分时处理机制可以使有限的 USB 带宽在各设备之间动态地分配,但如果两台以上的高速外设同时使用这样的连接方法,就会使它们都无法享用到最高的 USB 带宽,从而降低了性能。这也正是 Intel 这样的巨头为什幺要推出 USB 2.0 协议的原因(在 USB 2.0协议中 USB 的总线带宽一下子被提高到了 480Mbps)。
用于实现外设到主机或 USB HUB 连接的是USB线缆( 图9-4 )。从严格意义上讲, USB 线缆应属于 USB 器件的接口部分。USB 线缆由四根线组成,其中一根是电源线 VBus,一根是地线 GND,其余两根是用于差动信号传输的资料线( D+,D- )。将数据流驱动成为差动信号来传输的方法可以有效提高信号的抗干扰能力( EMI )。在资料线末端设置结束电阻的思路是非常巧妙的,以至对于 HUB 来判别所连接的外设是高速外设或是低速外设,仅仅只需要检测在外设被初次连接时, D+ 或 D- 上的信号是高或是低即可。因为对于 USB 协议来讲,要求低速外设在其 D-端并联一个1.5kΩ的接地电阻,而高速外设则在 D+ 端接同样的电阻。在加电时,根据低速外设的 D- 线和高速外设的 D+ 线所处的状态, HUB 就很容易判别器件的种类,从而为器件配置不同的信息。图9-5 表明了一个典型的高速外设的连接状况。为提高数据传输的可靠性、系统的兼容性及标准化程度, USB 协议对用于 USB 的线缆提出了较为严格的要求。如用于高速传输的 USB 线缆,其最大长度不应超过 5 米,而用于低速传输的线缆则最大长度为 2 米,每根资料线的电阻应为标准的 90Ω。
USB 系统可以通过 USB 线缆为其外设提供不高于 +5V 、500mA 的总线电源。那些完全依靠 USB 线缆来提供电源的器件被称为总线供电器件( Bus-powered device ),而自带电源的器件则被称为自供电外设( Self-powered device )。需要注意的是,当一个外设初次连接时,器件的配置和分类并不使用外设自带的电源,而是通过 USB 线缆提供的电源来使外设处于上电状态。
无论在软件还是硬件层次上, USB 主机都处于 USB 系统的核心。主机系统(图9-6)不仅包含了用于和 USB 外设进行通信的 USB 主机控制器及用于连拥?USB 接口(SIE),更重要的是主机系统是 USB 系统软件和 USB 客户软件的载体。
总而言之,USB 主机软件系统可以分为三个部分:
1) 客户软件部分( CSW ),在逻辑上和外设的功能部件部分进行资料的交换
2) USB 系统软件部分(即HCDI),在逻辑和实际中作为 HCD 和 USBD 之间的接口
3) USB 主机控制器软件部分(即 HCD 和 USBD),用于对外设和主机的所有 USB 有关部分的控制和管理,包括外设的 SIE 部分、 USB 资料发送接收器( Transreceiver )部分及外设的协议层等。

图9-4 USB 线缆
图9-5 高速外设的 USB 线缆和电阻的连接图
图9-6 USB 主机系统的结构及各部分之间的关系
当一个 USB 外设初次接入一个 USB 系统时,主机就会为该 USB 外设分配一个唯一的 USB地址,并作为该 USB 外设的唯一标识( USB 系统最多可以分配这样的地址 127 个),这称为 USB 的总线枚举( Bus Enumeration )过程。USB 使用总线枚举方法在计算机系统运行期间动态检测外设的连接和摘除,并动态地分配 USB 地址,从而在硬件意义上真正实现“即插即用”和“热插拔”。
在所有的 USB 信道之间动态地分配带宽是 USB 总线的特征之一。当一台 USB 外设在连接( Attached )并配置( Configuration )以后,主机即会为该 USB 外设的信道分配 USB 带宽;而当该 USB 外设从 USB 系统中摘除( Detached )或是处于挂起( Suspended )状态时,则它所占用的 USB 带宽即会被释放,并为其它的 USB 外设所分享。这种“分时复用”( Scheduling the USB )的带宽分配机制大大地提高了 USB 带宽利用率。
作为一种先进的总线方式,USB 提供了基于主机的电源管理系统。USB 系统会在一台外设长时间(这个时间一般在3.0ms以上)处于非使用状态时自动将该设备挂起( Suspend ),当一台 USB 外设处于挂起状态时, USB 总线通过 USB 线缆为该设备仅仅提供 500μA 以下的电流,并把该外设所占用的 USB 带宽分配给其它的 USB 外设。 USB 的电源管理机制使它支持如远程唤醒这样的高级特性。当一台外设处于挂起状态( Suspended Mode )时,必须先通过主机使该设备“唤醒”( Resume ),然后才可以执行 USB 操作。
USB的这种智能电源管理机制,使得它特别适合如笔记本计算机之类的设备的应用。
三、USB的数据传输模式
我们知道,USB 总线是一种串行总线,即它的资料是一个 bit 一个 bit 来传送的。虽然 USB 总线是把这些 bit 形式的资料打成资料包来传送,但资料的同步也是必不可少的。 USB 1.0/1.1 协议规定, USB 的标准脉冲时钟为 12MHz ,而其总线时钟为 1ms ,即每隔 1ms ,USB 器件应为 USB 线缆产生一个时钟脉冲序列。这个脉冲序列称为帧开始资料包( SOF,如图9-7所示),主机利用 SOF 来同步 USB 资料的发送和接收。
图9-7 帧开始资料包在USB数据传输中的分布
由此可见,对于一个数据传输率为 12Mbps 的外设而言,它每一帧的长度为 12000bit ;而对于低速外设而言,它每一帧的长度仅有 1500bit。 USB 总线并不关心外设的数据采集系统及其处理的速率,无论对于怎样的资料产生或是接收,它总是以外设所事先规定的 USB 标准传输率来传输资料。这就要求外设厂商必须在数据采集或接收系统和 USB 协议系统( SIE )之间,设置大小合适的先入先出模式( FIFO )来对资料进行缓存。
在 USB 系统中,资料是通过 USB 线缆采用 USB 资料包从主机传送到外设或是从外设传送到主机的。在 USB 协议中,把基于外设的资料源和基于主机的资料接收软件(或者方向相反)之间的数据传输模式称为信道或管道( Pipe )。信道分为流模式的信道( Stream Pipe )和消息模式的信道( Message Pipe )两种。信道和外设所定义的资料带宽、数据传输模式以及外设的功能部件的特性(如缓存大小、数据传输的方向等)相关。只要一个 USB 外设一经连接,就会在主机和外设之间建立信道。对于任何的 USB 外设,在它连接到一个 USB 系统中,并被 USB 主机经 USB 线缆加电使其处于上电状态时,都会在 USB 主机和外设的协议层之间首先建立一个称为Endpoint 0(端点0)的消息信道,这个信道又称为控制信道,主要用于外设的配置( Configuration )、对外设所处状态的检测及控制命令的传送等。信道方式的结构使得 USB 系统支持一个外设拥有多个功能部件(用Endpoint 0、Endpoint 1...Endpoint n这样的方法进行标识),这些功能部件可以同时地、以不同的数据传输方向在同一条 USB 线缆上进行数据传输而互不影响(图9-8)。比如一个 USB 的 ISDN MODEM ,就可以同时拥有一个上传的信道和一个下载的信道,并能同时很好地工作。
图9-8 USB的通信流及信道
为实现多外设、多信道地同时工作,USB 总线使用资料包的方式来传输资料和控制信息。USB 数据传输中的每一个资料包都以一个同步字段开始(图9-9),它的最后两个 bit 作为 PID 字段开始的标志。紧跟在同步字段之后的一段 8bit 的脉冲序列称为 PID (资料包标识字段,如图9-10所示), PID 字段的前四位用来标记该资料包的类型,后四位则作为对前四位的校验。 PID 字段被分为标记 PID (共有 IN 、 OUT 、 SETUP 或 SOF 四种)、资料 PID ( DATA0 或 DATA1 )、握手 PID( ACK、 NAK 或 STALL )及特殊 PID 等。主机根据 PID 字段的类型来判断一个资料包中所包含的数据类型,并执行相应的操作。
图9-9 同步字段
图9-10 PID字段
当一个 USB 外设初次连接时, USB 系统会为这台外设分配唯一的 USB 地址,这个地址通过地址寄存器( ADDR)来标记,以保证资料包不会传送到别的 USB 外设。7bit 的 ADDR 使得 USB 系统最大寻址为 127 台设备( ADDR 字段,如图9-11所示)。由于一台 USB 外设可能具有多个信道,因而在 ADDR 字段后会有一个附加的端点字段( Endpoint Field,简标为 ENDP )来标记不同的信道(图9-12)。所有的 USB 外设都必须支持 Endpoint 0信道,用0000来标记。对于高速设备,可以最大支持 16 个信道,而低速设备在 Endpoint 0 之外仅能有一个信道。
图9-11 资料包的ADDR字段
图9-12 端点(Endpoint)字段
数据域位作为一次 USB 数据传输的中心目的,在一个 USB 资料包中可以包含0~1203 Byte 的资料(图9-13)。而帧数量字段则包含在帧开始资料包中,对有的应用场合,可以用帧数量字段作为资料的同步信号。
为保证控制、块传送及中断传送中资料包的正确性, CRC 校验字段被引用到如标记、资料、帧开始( SOF )这样的资料包中。 CRC 校验(资料冗余校验)可以给予资料以 100% 的正确性检验。
图9-13 USB的数据域位
在 USB 系统中,有四种形式的资料包:信令包( Token Packets)、DATA 资料包(DATA Packets)、帧开始包(SOF Packets)和握手包(Handshake Packets)。
(1) 信令包由 PID 、ADDR 、ENDP 和 CRC5 四个字段组成(图9-14)。它因为 PID 字段的不同而分为输入类型( IN )、输出类型( OUT )和设置类型( SETUP )三种。信令包处于每一次 USB 传输的 DATA 资料包前面,以指明这次 USB 操作的类型(PID字段标记)、操作的对象(在 ADDR 和 ENDP 字段中指明)等信息。 5bit 的 CRC 校验位用来确保标记资料包的正确性。
图9-14 标记数据包的组成
(2) 我们已经指出, USB 主机会每隔 1ms 在 USB 总线上产生一个 SOF 的 USB 帧同步信号, SOF 资料包包含了这个脉冲序列的实际内容(图9-15),它由 SOF 格式的 PID 字段、帧数量字段和 5bit 的 CRC 校验码组成。主机利用 SOF 资料包来同步资料的传送和接收。
图9-15 SOF 资料包的格式
(3) 用于传输真正资料的 DATA 资料包(图9-16),因为 PID 的不同可以分为 DATA0 和 DATA1 两种。 DATA0 为偶数据包,DATA1 为奇数据包。DATA 资料包的奇偶性分类易于资料的双流水处理,而用于控制传输的 DATA 资料包总是以 DATA0 来传送资料。
图9-16 DATA资料包的格式
(4) 握手资料包仅仅包含一个 PID 字段( 图9-17 ), ACK 形式的 PID 表明此次 USB 传输没有发生错误,资料已经成功的传输;而 NAK 形式的握手资料包则向主机表明此次 USB 传输因为 CRC 校验错误或别的原因而失败了,从而使得主机可以进行资料的重新传输; STALL 形式的响应向主机报告外设此刻正处于挂起状态而无法完成资料的传输。
图9-17 握手资料包
需要指出的是,每个资料包的结束都会有两个 bit 宽的 EOP 字段作为资料包结束的标志(图7-18),EOP 在差模信号中表现为 D+ 和 D- 都处于“0”状态。对于高速 USB 外设而言,这个脉冲宽度在 160~175ns 之间,而低速设备则在 1.25~1.50μs 之间。无论其后是否有其它的资料包,USB 线缆都会在 EOP 字段后紧跟 1bit 的总线空闲位。USB 主机或外设利用 EOP 来判断一个资料包的结束。
图9-18 EOP字段在差模信号中的电压表现
在前面我们已经提到,每一个 USB 信道对应着一个特定的 USB 传输模式,根据不同的需要,USB 外设可以为 USB 信道指定不同的 USB 传输模式。USB 总线支持四种数据传输模式:
(1)控制传输模式,控制传输用于在外设初次连接时对器件进行配置;对外设的状态进行实时检测;对控制命令的传送等;也可以在器件配置完成后被客户软件用于其它目的。Endpoint 0信道只可以采用控制传送的方式。
(2) 块传送模式(图9-19),块传送用于进行批量的、非实时的数据传输。如一台 USB 扫描仪即可采用块传送的模式,以保证资料连续地、在硬件层次上的实时纠错地传送。采用块传送方式的信道所占用的 USB 带宽,在实时带宽分配中具有最高的优先级。
图9-19 块传送的流程
(3)同步传输模式(图9-20),同步传输适用于那些要求资料连续地、实时地、以固定的数据传输率产生、传送并消耗的场合,如数字录像机等。为保证数据传输的实时性,同步传输不进行资料错误的重试,也不在硬件层次上响应一个握手资料包,这样有可能使数据流中存在资料错误的隐患。为保证在同步传输数据流中致命错误的几率小到可以容忍的程度,而数据传输的延迟又不会对外设的性能造成太大的影响,厂商必须为使用同步传输的信道选择一个合适的带宽(即必须在速度和品质之间做出权衡)。
图9-20 同步传输的流程
(4)中断传输模式(图9-21),对于那些小批量的、点式、非连续的数据传输应用的场合,如用于人机交互的鼠标、键盘、游戏杆等,中断传输的方式是最适合的。
图9-21 中断传输的流程
上述内容并不想详细论述 USB 外设(本部分所说的USB外设如无特别说明均指USB功能器件)的设计细节,而只想介绍 USB 功能器件的一般组成,以此来帮助读者了解 USB 外设的基本软硬件构成,以便了解 USB 外设的工作过程和原理。
组成外设的传感器件和 DSP 因为外设的具体应用各异而有所不同。如对于一台 CMOS 数字摄像头,它的 CMOS 光电耦合器及其 DSP 部分并不因为使用什幺样的接口方式而有所改变(如早期的摄像头皆采用 ECP 的并口增强模式来进行图像数据的传输,而现在几乎都是 USB 接口)。因而本文的重点是阐述 USB 外设接口的部分,即 USB Device Microcontroller ( USB器件微控制器)。
USB总线是以差模驱动的方式来进行数据传输的,但在资料包发送之前, USB 协议规定必须使用 NRZI 的编码方式来对资料进行编码。当然,在 USB 外设中,用于译码的器件对外设来说也是必不可少的。 NRZI 的编码协议其实很简单,它采用的是逢“1”保持,逢“0”跳变的原则(图9-22),而 NRZI 的译码则采用相反的操作。
图9-22 NRZI数据编码
为保证数据流中有足够的信号变化, USB 协议规定了 Bit stuffing (加填充位)的原则,即如果信号流中连续出现六位以上的资料“1”,则每隔六位,必须插入一个“0”,然后才进入NRZI编码。图9-23是一串原始资料及其加填充位后和 NRZI 编码后的资料格式对比。
图9-23 原始资料和加填充位后及NRZI编码后的资料格式对比
SIE (Serial interface Engine)是 USB 外设最重要的硬件组成部分之一,它主要由四部分组成:
1) 硬件上用来完成 NRZI 编/译码和加/去填充位操作的,NRZI/Bit Buffing 和NRZO/Bit Unstuffing 的部分。
2) 硬件上产生资料的 CRC 校验码并对资料包进行 CRC 校验的 CRC check & Generator 部分。
3) 用来将并行资料转化成 USB 串行资料的并/串转换部分( Packet Encode ),将主机发送的 USB 资料包转化成可以识别的并行资料的串/并转换部分( Packet Decode )。
4) 检测和产生 SOP (即每个资料包的同步字段)和 EOP 信号的部分。
USB 外设使用一段代码来存储关于该外设工作的一些重要信息,这被称为 USB 的协议层( Protocol Layer ),它不仅存储了诸如厂家识别号、该外设所属的类型(是 HUB 还是 Function,是低速还是高速设备)、电源管理等常规信息,更重要的是还存储了外设的设备类型、器件配置信息、功能部件的描述、接口信息等,其存储方式都采用特征字( Descriptors )的方式。 USB 主机通过在外设的协议层和主机之间建立Endpoint 0信道、采用控制传输的方式对这些信息进行存取。特征字采用 USB 协议所规定的结构和代码排列(关于特征字的详细信息请参阅 USB 协议标准)。协议层是一台 USB 外设能够被主机正确识别和配置,并正常工作的前提。可以说,协议层是一台 USB 外设的固件( Firmware )中心。
我们知道,资料采样率因采样精度和使用的不同场合而不同,如对于音频应用,就可以采用 22.05kHz 或 44.1kHz 的采样率,而这个时钟并不和 USB 标准时钟对应。因而在实际应用中,为保证采集到的资料无丢失地打包和传送,必须在 SIE 和数据采集部件(对诸如音箱或打印机等外设则为资料消耗部件)之间设立 FIFOs,以便对资料进行缓存。对于采用块传送和同步传送的外设而言, FIFOs 的作用显得尤为重要。例如一台采用同步传输的 USB 数字摄像机(现在市场上有很多这种类型的产品),我们假设它的 CCD 为 400×300像素,那幺为保证资料正确地压缩、传输和接收,直到以后的解压缩及处理,在动态采集中,FIFOs至少要存储一帧图像,即要求 FIFOs 有 400 × 300 = 12KB的容量。
在 USB 外设中,用于实现和 USB 线缆无缝连接的 USB 传输接收部分( Transreceiver )是必不可少的,它不仅要在电气和物理层面上实现和 USB 线缆的连接,而且要完成对资料包的差模驱动或分离的操作。
以上我们简述了 USB 外设接口的硬件组成,那幺在完成 USB 数据传输的过程中,这些硬件又是如何配合工作并和位于主机的软硬件交互,以完成数据传输的呢?
前面已经提到, USB 总线采用总线列举的方法来标记和管理外设所处的状态,当一台 USB外设初次连接到 USB 系统中后,通过8个步骤来完成它的初始化:
1) USB 外设所连接的 HUB ( ROOT HUB 或扩展 HUB )检测到所连接的 USB 外设并自动通知主机,以及它的端口状态的变化,这时外设还处于禁止( Disabled )状态。
2) 主机通过对 HUB 的查询以确认外设的连接。
3) 现在,主机已经知道有一台新的 USB 外设连接到了 USB 系统中,然后,它激活( Enabled )这个 HUB 的埠,并向 HUB 发送一个复位( Reset )该埠的命令。
4) HUB 将复位信号保持 10ms ,为连接到该埠的外设提供 100mA 的总线电流,这时该外设处于上电状态,它的所有寄存器被清空并指向默认的地址。
5) 在外设分配到唯一的 USB 地址以前,它的默认信道均使用主机的默认地址。然后主机通过读取外设协议层的特征字来了解该外设的默认信道所使用的实际的最大资料有效载荷宽度(即外设在特征字中所定义的在 DATA0 资料包中数据域位的长度)。
6) 主机分配一个唯一的 USB 地址给该外设,并使它处于 Addressed 状态。
7) 主机开始使用 Endpoint 0 信道读取外设的器件配置特征字,这会花去几帧的时间。
8) 基于器件配置特征字,主机为该外设指定一个配置值,这时,外设即处于配置( Configured )状态了,它所有的端点( Endpoint )这时也处于配置值所描述的状态。从外设的角度来看,这时该外设已处于准备使用的状态。
在一台外设能被使用之前,它必须被配置。“配置”即主机根据外设的配置特征字来定义器件的配置寄存器,以便规定外设的所有 Endpoint 的工作环境。如某信道所采用的数据传输方式,该外设所属的器件“类”(Class)、“子类”(SubClass)等,从而通过基于主机的 USB 系统软件或客户软件对外设进行控制。当一台 USB 外设配置好以后,即会进入到挂起 ( Suspend )状态,直到它开始被使用。
必须指出的是,一台 USB 外设一旦配置好,它的每一个特定的信道只能使用一种数据传输方式。 Endpoint 0 信道只能采用控制传送的方式,主机通过 Endpoint 0 来传送标准的 USB 命令,完成诸如读取器件配置特征字、控制外设对资料的采集、处理和传送等任务,并可以通过Endpoint 0来检测和改变外设所处的状态(如对外设的远程唤醒、挂起和恢复等)。
对于一台采用同步传输的数字摄像机来说,数据传输的过程如下:
(1) 应用软件( CSW )在内存中开辟资料缓冲区,并通过标准 USB 命令字向外设发出资料请求(IRPs)。
(2) 主机 USB 系统软件通过对该 IRPs 的翻译形成 Token 资料包发送到外设,这时主机进入等待状态。
(3) 外设对资料包进行 NRZI 译码和 Bit Unstuffing 操作及 CRC 校验,确认后接收主机 PID 字段中所包含的命令并开始采集资料。
(4) 采集到的并行资料首先进入 FIFOs ,并通过并/串转换部件形成串行脉冲。
(5) 根据器件配置寄存器的要求对资料进行符合条件的分割,配置资料包的 PID 字段等以形成原始资料包。
(6) 通过 CRC 校验产生器对每一个资料包生成 CRC 校验码字段, SOP & EOP 信号产生器为该资料包加入同步字段头和资料包结束符。
(7) 数据包的 NRZI 编码和 Bit Stuffing 操作。
(8) 使用收发器( Transreceiver )将数据流驱动到 USB 线缆上。
(9) 主机控制器将 USB 资料转化成为普通资料送到资料缓冲区以进行资料的进一步处理。如果是控制传输、块传输或中断传输方式,在资料被成功传送后,主机还会向外设发送 ACK 的握手资料包作为响应。
图9-24简单描绘了异步数据传输的请求和传送过程(在同步传输中没有Handshake部分)。
图9-24 异步数据传输的请求和传送过程
至此,我们已从几个方面较详细地介绍了 USB 系统的软硬件构成及 USB 的数据传输协议。USB 可以说是开辟了计算机外设接口的新纪元。它把人们从繁杂的联机、不同的接口标准和恼人的中断冲突中解放出来;
使“PnP”和“热插拔”这样的特性不再只是口号;它大大扩展了计算机可连接的外设数目;它的智能电源管理有效地降低了手持计算机的电源损耗。USB 正在成为市场的热点,越来越多的外设生产厂家将自己的产品转向 USB 接口。而 USB 2.0 协议的推出,无疑对 USB 技术的发展起到了推波助澜的作用。
在如鼠标、键盘、手写板或是游戏杆等人机交互的应用场合:如扫描仪、数码相机、移动存贮设备、数字摄像机等数据输入应用场合,USB 无疑是替代传统串/并口的最佳接口方式,它们使得 USB 的优点得到了充分发挥。

你可能感兴趣的:(USB协议基础及S3C2410 USB控制器)