實用USB術語詳解
主機
本文引用地址:http://www.ex-cimer.com/article/201612/329605.htmUSB是一種“主-從”式總線,包括一個主機和多個從機。從機稱作外設,在USB術語中也稱作功能部件。主機稱作主設備。所有USB傳輸都由主機啟 動;外設總是響應傳輸,不會啟動傳輸。最常用的主機是PC機,主機通過USB-A連接器連接到下行設備。嵌入式主機不包括PC機,而是用一個微控制器作為 專用主機,或許只能與一類USB設備通信。
功能部件
功能部件是USB設備,也稱作USB外設。USB外設是主機的“下行”設備,使用USB B型連接器連接。
速率
USB 2.0標準規(guī)定了以下三種傳輸速率:
低速模式傳輸速率為1.5Mbps,多用于鍵盤和鼠標。
全速模式傳輸速率為12Mbps。
高速模式傳輸速率為480Mbps。
市場上關于“USB 2.0兼容”的概念有一些混亂。這種混亂源于USB標準版本的升級,首先推出的是USB 1.0,緊接著有了比1.0更理想的USB1.1。USB1.x支持低速和全速兩種USB總線速度。2.0版本增加了高速模式,完全替代了1.1。所以, 如果使用的是工作在12Mbps速率下的全速器件,則可認為它與USB 2.0兼容,即使許多人僅將USB 2.0用于高速(480Mbps)操作。
入-出方向
USB系統(tǒng)以主機為中心。因此,解釋USB術語時假設面向的是主機。所以,從主機側看,“入”表示傳輸方向從外設到主機;同樣,“出”表示傳輸方向從主機到外設。
端點
端點位于USB外設內部,所有通信數據的來源或目的都基于這些端點,是一個可尋址的FIFO。每個USB外設有一個唯一的地址,可能包含最多十六個端點。主機通過發(fā)出器件地址和每次數據傳輸的端點號,向一個具體端點(FIFO)發(fā)送數據。
每個端點的地址為0到15,一個端點地址對應一個方向。所以,端點2-IN與端點2-OUT完全不同。 每個器件有一個默認的雙向控制端點0,因此不存在端點0-IN和端點0-OUT。
外設中端點的編號是任意的。枚舉期間外設向主機報告其端點號和特征。
集線器
集線器擴展了USB主機所能連接設備的數量。PC機的USB控制器內置一個集線器,負責完成一些底層USB功能,如檢測設備的插入或拔出。集線器以 全速或高速連接到上行端口(到PC),以低速、全速或高速連接到下行端口(到外設)。PC的根集線器可為每個A型連接器提供5V、500mA電源。一個總 線供電的外部集線器可為每端口提供100mA電流。由于USB為外部集線器電路分配100mA電流,因此,一個總線供電的集線器可以有四個下行端口。如果 集線器有自己的電源(自供電),每個下行端口可提供高達500mA電流。
枚舉
插入USB設備時,主機獲取連接通知,繼而識別剛剛插入的是什么。主機需要得到一系列描述符(數據表),該描述符來自插入的設備,所有USB設備在 插入USB端口時,主機都通過默認的CONTROL端點0與設備進行通訊。如果主機確認它從設備接收的數據正確,則配置該設備使之開始工作。如果主機認為 設備的數據不正確(例如,某個描述符數據有沖突或超出了規(guī)范),則忽略該設備。這時會彈出一個對話窗,說明該USB設備出了一些問題。
第九章(關于枚舉的更多信息)
USB標準的第9章定義了枚舉期間主機送到外設的所有請求,以及外設響應的數據格式。如果訪問USB官方網站,將找到一個名為USBCV (USB命令驗證器)的軟件工具,其中有一部分名為“第9章測試”。這些測試可以證明您的枚舉代碼是否正確。在進行USB實驗室測試時也要用到 USBCV。因此,如果已在自己的實驗室里通過了這一USB驗證,則實驗室測試也不成問題。
SIE
SIE指串行接口引擎,是所有USB控制器內部的“核心”。SIE負責處理底層協議,如填充位,CRC生成和校驗,并可發(fā)出錯誤報告。SIE的主要 任務是將低級信號轉換成字節(jié),以供控制器使用,某些SIE會更加先進靈活。它處理的底層信號細節(jié)越多,控制固件越簡單。例如,某些SIE只報告端點數據觸 發(fā)的結果(參見下文),并將它留給固件以確定如何處理。
數據觸發(fā)
USB包從PID或ID開始。數據傳輸用到兩種PID:DATA0和DATA1。主機和外設均包含數據觸發(fā)位,每個端點一個。觸發(fā)位確定這些數據 PID中的哪一個用于數據傳輸。當外設脫離復位狀態(tài),主機和外設均將其內部數據觸發(fā)位復位到零。因此,第一個傳送的是DATA0 PID數據包。當數據包傳輸無誤時(發(fā)送方接收到ACK PID信號,表明數據傳輸無誤),發(fā)送方和接收方補償其數據觸發(fā)值。然后用DATA1 PID向端點發(fā)送第二個數據包。成功傳輸后,DATA0 PID和DATA1 PID數據包交替發(fā)送(或再次觸發(fā))。USB將該機制作為其誤差校正的一部分。
控制傳輸、批量傳輸、中斷傳輸、同步傳輸
USB有上述四種傳輸類型。枚舉期間外設告訴主機每個端點支持哪種傳輸類型。
只有主機能夠發(fā)出控制傳輸,該傳輸由兩個或三段組成。先通過設置數據包(8字節(jié)長)發(fā)送具體的主機請求。然后用一個可選數據包移動描述符表等數據。 最后,用握手(狀態(tài))包終止控制傳輸。作為“關鍵”傳輸,控制傳輸有高總線優(yōu)先權和最全面的誤差校驗。每個USB外設都需要一個默認的控制端點0。
批量傳輸使用流控制和誤差校驗移動數據。批量傳輸為異步方式,這意味著預定傳輸時間不固定或不能保證。主機安排批量傳輸的優(yōu)先級為低。這并不說明批量傳輸很慢;如果總線被輕微加載,批量傳輸即可在所有可用帶寬上進行。
實際上,中斷傳輸和批量傳輸很難區(qū)分。他們之間的唯一區(qū)別是中斷點包含輪詢間隔值,用來告訴主機多長時間“ping”一次端點。所以批量和中斷傳輸之間的唯一區(qū)別是主機多長時間安排一次傳輸。
同步(ISO)傳輸用于數據流,例如音頻或視頻,此時數據必須及時到達以避免音頻或視頻數據中斷。當器件枚舉時告訴主機其ISO端點對帶寬的要求。 如果帶寬適當,主機保證每隔1ms發(fā)送一個USB幀,包含一個發(fā)往或來自設備的ISO數據包。ISO不使用握手(ACK/NAK)或總線重試。同步傳輸僅 適用于全速和高速設備。
總線復位
主機通過發(fā)出總線復位信號復位USB外設。全速和低速USB的D+和D-線上通常使用差分信號。但也有例外,總線復位和包結束信號使用的是單端零信號,此時D+和D-均為低。
USB驅動器
Windows中內置了支持各種USB設備的驅動程序。如果固件支持這些標準設備之一,則USB產品不需要安裝定制驅動程序(沒人真的想要寫 Windows驅動)。Windows包含標準設備驅動程序,如HID (人機接口設備)和大容量存儲器(磁盤驅動器、CD-ROM、存儲器條)。
評論