📄 usb协议基础及s3c2410 usb控制器.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0043)http://www.embedon.com/aticle-show.asp?id=4 -->
<HTML><HEAD><TITLE>USB协议基础及S3C2410 USB控制器</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="USB协议基础及S3C2410 USB控制器.files/sys.css" type=text/css rel=stylesheet>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<TABLE borderColor=#000000 cellSpacing=0 cellPadding=5 width=750 align=center
border=0>
<TBODY>
<TR align=middle bgColor=#0099cc>
<TD colSpan=3><FONT class=text1 color=#ffffff><STRONG>USB协议基础及S3C2410
USB控制器</STRONG></FONT></TD></TR>
<TR align=middle>
<TD colSpan=3><FONT
color=#006699>浏览过1403次 作者:<FONT
color=#ff0000></FONT></FONT><FONT color=#006699></FONT>深圳远峰<BR>
<HR width="88%" SIZE=1>
</TD></TR>
<TR>
<TD colSpan=3>
<TABLE height=49 cellSpacing=0 cellPadding=0 width="90%" align=center><!--DWLayoutTable-->
<TBODY>
<TR>
<TD vAlign=top>一、USB1.1 概述<BR>USB 是 Universal Serial Bus
的简称。它是一种可以同时处理计算机与具有 USB 接口的多种外设之间通信的电缆总线。这些连接到计算机上的外设共同分享 USB
的带宽。USB 的分时处理机制真正在硬件的意义上实现了计算机外设的即插即用。 <BR>如果留心一下当前市场上的计算机外设,大家会发现采用
USB
设备的产品正在逐渐增加。键盘、鼠标、MODEM、游戏杆、音箱、扫描仪等,以前插在串行、并行等外部扩展接口上的部件,甚至一些以前要连接到计算机内部扩展槽上的设备,都开始以
USB 接口的接口出现,USB 设备的发展势头正如日中天。 <BR>本章将从技术的角度来探讨一下 USB,有关它的部分请参阅
USB1.1 SPEC(www.usb.org) 的相关文章。<BR>一个基于计算机的 USB 系统可以在系统层次上被分为三个部分:即
USB 主机(USB Host)、USB 器件(USB Device)和 USB 的连接。<BR>所谓 USB 连接实际上是指一种
USB 器件和 USB 主机进行通信的方法。它包括: <BR>(1)
总线的拓扑(由一点分出多点的网络形式):即外设和主机连接的模式。<BR>(2) 各层之间的关系:即组成 USB
系统的各个部分在完成一个特定的 USB 任务时,各自之间的分工与合作。<BR>(3) 数据流动的模式:即 USB
总线的数据传输方式。<BR>(4) USB 的“分时复用”:因为 USB 提供的是一种共享连接方式,因而为了进行资料的同步传输,致使
USB 对资料的传输和处理必须采用分时处理的机。<BR>USB 的总线拓扑如图9-1所示,在 USB 的树形拓扑中,USB
集线器(HUB)处于节点(Node)的中心位置。而每一个功能部件都和 USB 主机形成唯一的点对点连接,USB 的 HUB 为 USB
的功能部件连接到主机提供了扩展的接口。利用这种树形拓扑,USB 总线支持最多 127 个 USB
外设同时连接到主计算机系统。<BR><BR></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center><IMG height=219
src="USB协议基础及S3C2410 USB控制器.files/401.gif" width=333></DIV></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center>图9-1 USB 的总线拓扑示意图<BR></DIV></TD></TR>
<TR>
<TD vAlign=top>一个 USB 系统仅可以有一个主机,而为 USB 器件连接主机系统提供主机接口的部件被称为 USB
主机控制器。 USB 主机控制器是一个由硬件、软件和固件( Firmware )组成的复合体。一块具有 USB
接口的主板通常集成了一个称为 ROOT HUB (根集线器)的部件,它为主机提供一到多个可以连接其它 USB 外设的 USB
扩展接口,我们通常在主板上见到的 USB 接口都是由ROOT HUB提供的。<BR>USB器件可以分为两种:即USB
HUB和USB功能器件(Function Device)。作为USB总线的扩展部件,USB HUB(图9-2)必须满足以下特征:
<BR>1) 为自己和其它外设的连接提供可扩展的下行和上行(Downstream and Upstream)埠。<BR>2) 支持
USB 总线的电源管理机制。<BR>3) 支持总线传输失败的检测和恢复。<BR>4)
可以自动检测下行埠外设的连接和摘除,并向主机报告。<BR>5) 支持低速外设和高速外设的同时连接。<BR>从以上要求出发,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,并监控它的每一个埠。<BR>USB功能器件即可以为主机系统提供某种功能的 USB 器件,如一个 USB ISDN
的调制解调器、或是一只 USB 接口的数字摄像机、 USB 的键盘或鼠标等。 <BR><BR></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center><IMG height=200
src="USB协议基础及S3C2410 USB控制器.files/403.gif" width=415></DIV></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center>图9-3 一个典型的 USB 功能器件结构框图<BR></DIV></TD></TR>
<TR>
<TD vAlign=top>
<P align=left>USB 的功能器件作为 USB 外设(USB Function),它必须保持和 USB
协议的完全兼容,并可以响应标准的 USB 操作。同样,用于表明自己身份的“BIOS”系统对于 USB 外设也是必不可少的,这在 USB
外设上被称为协议层。在物理机制上,一个 USB 外设可以由四部分构成(见图9-3):<BR>1)
用于实现和USB协议兼容的SIE部分。<BR>2) 用于内存件特征字、存储实现外设特殊功能程序及厂家信息的协议层( ROM
)。<BR>3) 用于实现外设功能的传感器及对资料进行简单处理的 DSP 部分。<BR>4) 将外设连接到主机或 USB HUB
的接口部分。<BR>根据传输率的不同, 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)。 <BR>用于实现外设到主机或 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Ω。<BR>USB 系统可以通过 USB 线缆为其外设提供不高于 +5V 、500mA
的总线电源。那些完全依靠 USB 线缆来提供电源的器件被称为总线供电器件( Bus-powered device
),而自带电源的器件则被称为自供电外设( Self-powered device
)。需要注意的是,当一个外设初次连接时,器件的配置和分类并不使用外设自带的电源,而是通过 USB 线缆提供的电源来使外设处于上电状态。
<BR>无论在软件还是硬件层次上, USB 主机都处于 USB 系统的核心。主机系统(图9-6)不仅包含了用于和 USB 外设进行通信的
USB 主机控制器及用于连接的 USB 接口(SIE),更重要的是主机系统是 USB 系统软件和 USB
客户软件的载体。<BR>总而言之,USB 主机软件系统可以分为三个部分:<BR>1) 客户软件部分( CSW
),在逻辑上和外设的功能部件部分进行资料的交换<BR>2) USB 系统软件部分(即HCDI),在逻辑和实际中作为 HCD 和 USBD
之间的接口<BR>3) USB 主机控制器软件部分(即 HCD 和 USBD),用于对外设和主机的所有 USB
有关部分的控制和管理,包括外设的 SIE 部分、 USB 资料发送接收器( Transreceiver
)部分及外设的协议层等。<BR></P></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center><IMG height=107
src="USB协议基础及S3C2410 USB控制器.files/404.gif" width=400></DIV></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center>图9-4 USB 线缆</DIV></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center><IMG height=164
src="USB协议基础及S3C2410 USB控制器.files/405.gif" width=445></DIV></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center>图9-5 高速外设的 USB 线缆和电阻的连接图</DIV></TD></TR>
<TR>
<TD vAlign=top>
<DIV align=center><IMG height=218
src="USB协议基础及S3C2410 USB控制器.files/406.gif" width=412></DIV></TD></TR>
<TR>
<TD class=text2 vAlign=center>
<DIV align=center>图9-6 USB 主机系统的结构及各部分之间的关系</DIV></TD></TR>
<TR>
<TD class=text2 vAlign=center>
<DIV align=left>当一个 USB 外设初次接入一个 USB 系统时,主机就会为该 USB 外设分配一个唯一的
USB地址,并作为该 USB 外设的唯一标识( USB 系统最多可以分配这样的地址 127 个),这称为 USB 的总线枚举( Bus
Enumeration )过程。USB 使用总线枚举方法在计算机系统运行期间动态检测外设的连接和摘除,并动态地分配 USB
地址,从而在硬件意义上真正实现“即插即用”和“热插拔”。 <BR>在所有的 USB 信道之间动态地分配带宽是 USB
总线的特征之一。当一台 USB 外设在连接( Attached )并配置( Configuration )以后,主机即会为该 USB
外设的信道分配 USB 带宽;而当该 USB 外设从 USB 系统中摘除( Detached )或是处于挂起( Suspended
)状态时,则它所占用的 USB 带宽即会被释放,并为其它的 USB 外设所分享。这种“分时复用”( Scheduling the USB
)的带宽分配机制大大地提高了 USB 带宽利用率。 <BR>作为一种先进的总线方式,USB 提供了基于主机的电源管理系统。USB
系统会在一台外设长时间(这个时间一般在3.0ms以上)处于非使用状态时自动将该设备挂起( Suspend ),当一台 USB
外设处于挂起状态时, USB 总线通过 USB 线缆为该设备仅仅提供 500μA 以下的电流,并把该外设所占用的 USB
带宽分配给其它的 USB 外设。 USB 的电源管理机制使它支持如远程唤醒这样的高级特性。当一台外设处于挂起状态( Suspended
Mode )时,必须先通过主机使该设备“唤醒”( Resume ),然后才可以执行 USB
操作。<BR>USB的这种智能电源管理机制,使得它特别适合如笔记本计算机之类的设备的应用。<BR>三、USB的数据传输模式<BR>我们知道,USB
总线是一种串行总线,即它的资料是一个 bit 一个 bit 来传送的。虽然 USB 总线是把这些 bit
形式的资料打成资料包来传送,但资料的同步也是必不可少的。 USB 1.0/1.1 协议规定, USB 的标准脉冲时钟为 12MHz
,而其总线时钟为 1ms ,即每隔 1ms ,USB 器件应为 USB 线缆产生一个时钟脉冲序列。这个脉冲序列称为帧开始资料包(
SOF,如图9-7所示),主机利用 SOF 来同步 USB 资料的发送和接收。<BR></DIV></TD></TR>
<TR>
<TD class=text2 vAlign=center>
<DIV align=center><IMG height=72
src="USB协议基础及S3C2410 USB控制器.files/407.gif" width=523></DIV></TD></TR>
<TR>
<TD class=text2 vAlign=center>
<DIV align=center>图9-7 帧开始资料包在USB数据传输中的分布 </DIV></TD></TR>
<TR>
<TD class=text2 vAlign=center>
<DIV align=center></DIV></TD></TR></TBODY></TABLE>
<TABLE height=49 cellSpacing=0 cellPadding=0 width="90%" align=center><!--DWLayoutTable-->
<TBODY>
<TR>
<TD vAlign=top>由此可见,对于一个数据传输率为 12Mbps 的外设而言,它每一帧的长度为 12000bit
;而对于低速外设而言,它每一帧的长度仅有 1500bit。 USB
总线并不关心外设的数据采集系统及其处理的速率,无论对于怎样的资料产生或是接收,它总是以外设所事先规定的 USB
标准传输率来传输资料。这就要求外设厂商必须在数据采集或接收系统和 USB 协议系统( SIE )之间,设置大小合适的先入先出模式(
FIFO )来对资料进行缓存。<BR>在 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
,就可以同时拥有一个上传的信道和一个下载的信道,并能同时很好地工作。 <BR><BR></TD></TR>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -