?? s3c2410usb控制器.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.2900.3132" 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>瀏覽過7864次 作者:<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 + -