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