本帖最后由 weiguopai123 于 2020-7-31 15:43 編輯
一、基礎(chǔ)知識(shí)
1.USB USB:UniversalSerial Bus,中文譯為“通用串行總線”,USB設(shè)備最顯著的優(yōu)點(diǎn)是具有熱插拔功能、傳輸速率快。USB是主從結(jié)構(gòu)的系統(tǒng),具有主機(jī)和設(shè)備這兩個(gè)角色,即Host和Device。此外,還有兩類特殊的USB設(shè)備,分別是USB集線器設(shè)備(USB Hub)和USB OTG設(shè)備。 USB協(xié)議版本有:USB1.0、USB1.、USB2.0、USB3.0。USB1.0和USB1.1只有低速模式(Low-SpeedMode)和全速模式(Full-Speed Mode),理論上最大傳輸速率分別為1.5Mbps和12Mbps。USB2.0引入了傳輸速度更快的高速模式(High-Speed Mode),理論上最大傳輸速率為480Mbps。而USB3.0在速度的提升上,實(shí)現(xiàn)了重大飛躍,最大傳輸速率理論值高達(dá)5Gbps。需要注意的是,這些都是理論值,實(shí)際開(kāi)發(fā)過(guò)程中,不可能達(dá)到這些理論值。 在實(shí)際開(kāi)發(fā)過(guò)程中,不同的傳輸類型有不同的傳輸速率,每一次的數(shù)據(jù)交互,都是一個(gè)相當(dāng)復(fù)雜的過(guò)程,有令牌包的解析、數(shù)據(jù)包的傳輸、握手包的發(fā)送等等,這些都是額外的消耗,因此,傳輸速度是不可能達(dá)到理論值。USB有四種傳輸類型,分別是控制傳輸、中斷傳輸、塊傳輸、等時(shí)傳輸。 先學(xué)習(xí)Device開(kāi)發(fā),再研究Host的實(shí)現(xiàn)。
2.USB的電氣特性USB使用差分傳輸模式,有兩條數(shù)據(jù)線,分別是: 1)USB數(shù)據(jù)正信號(hào)線,USB Data Positive,即USBDP線,簡(jiǎn)寫(xiě)為D+ 2)USB數(shù)據(jù)負(fù)信號(hào)線,USB Data Minus,即USBDM線,簡(jiǎn)寫(xiě)為D-
|
剩下的就是電源線(5V-Vbus)和地線(GND)。對(duì)于USB OTG設(shè)備,會(huì)多出一根ID線。
3.USB主機(jī)端硬件控制器類型分別有:OHCI UHCI EHCI XHCI。USB協(xié)議版本:1.0/ 1.1/ 2.0/ 3.0 與協(xié)議規(guī)定標(biāo)準(zhǔn)接口的對(duì)應(yīng)OHCI、UHCI都是USB1.1的接口標(biāo)準(zhǔn);而EHCI是對(duì)應(yīng)USB2.0的接口標(biāo)準(zhǔn);最新的xHCI是USB3.0的接口標(biāo)準(zhǔn)。
3.1 OHCI OHCI:Open Host Controller Interface,是USB1.1的標(biāo)準(zhǔn),不僅僅是針對(duì)USB,還支持其他的接口,比如支持Apple的火線(Firewire,IEEE 1394)接口。與UHCI相比,OHCI的硬件復(fù)雜,硬件做的事情更多,所以實(shí)現(xiàn)對(duì)應(yīng)的軟件驅(qū)動(dòng)的任務(wù),就相對(duì)較簡(jiǎn)單。主要用于非x86的USB,如擴(kuò)展卡、嵌入式開(kāi)發(fā)板的USB主控。
3.2 UHCI UHCI:Universal Host ControllerInterface,是Intel主導(dǎo)的對(duì)USB1.0、1.1的接口標(biāo)準(zhǔn),與OHCI不兼容。UHCI的軟件驅(qū)動(dòng)的任務(wù)重,需要做得比較復(fù)雜,但可以使用較便宜、較簡(jiǎn)單的硬件的USB控制器。Intel和VIA使用UHCI,而其余的硬件提供商使用OHCI。
3.3 EHCI EHCI:Enhanced Host Controller Interface,是Intel主導(dǎo)的USB2.0的接口標(biāo)準(zhǔn)。EHCI僅提供USB2.0的高速功能,而依靠UHCI或OHCI來(lái)提供對(duì)全速(full-speed)或低速(low-speed)設(shè)備的支持。
3.4 xHCI xHCI:eXtensible Host ControllerInterface,是最新USB3.0的接口標(biāo)準(zhǔn),它在速度、節(jié)能、虛擬化等方面都比前面3中有了較大的提高。xHCI支持所有種類速度的USB設(shè)備(USB 3.0的 SuperSpeed; USB 2.0 Low-、Full-、andHigh-speed; USB 1.1 Low- and Full-speed)。xHCI的目的是為了替換前面3種類型(UHCI/OHCI/EHCI)。
4.識(shí)別設(shè)備的速度模式 對(duì)于設(shè)備(Device)而言,按照速度來(lái)劃分,工作在低速模式下的設(shè)備稱之為低速設(shè)備;工作在全速模式下的設(shè)備稱之為全速設(shè)備;同理,工作在高速模式下的設(shè)備稱之為高速設(shè)備。 對(duì)于主機(jī)(Host)而言,只有全速主機(jī)和高速主機(jī)兩種。
4.1識(shí)別低速和全速設(shè)備 主機(jī)的D+和D-都接有15K下拉電阻;全速USB設(shè)備的數(shù)據(jù)線D+接有1.5K的上拉電阻,一旦接入主機(jī),主機(jī)的D+被拉高;低速USB設(shè)備的數(shù)據(jù)線D-接有1.5K的上拉電阻,一旦接入主機(jī),主機(jī)的D-會(huì)被拉高。因此,主機(jī)就可以根據(jù)檢測(cè)到自己的D+為高還是D-為高,從而判斷接入的設(shè)備是一個(gè)全速還是低速設(shè)備。硬件結(jié)構(gòu)圖如下:
image001.png (9.79 KB, 下載次數(shù): 69)
下載附件
2020-7-31 15:28 上傳
圖:有USB低速設(shè)備接入
image003.png (9.43 KB, 下載次數(shù): 125)
下載附件
2020-7-31 15:29 上傳
圖:有USB全速設(shè)備接入
4.2識(shí)別高速設(shè)備 剛開(kāi)始時(shí),高速設(shè)備以全速模式連接到主機(jī),D+有上拉電阻。主機(jī)檢測(cè)到全速設(shè)備連接上之后,對(duì)設(shè)備進(jìn)行復(fù)位,USB設(shè)備收到復(fù)位信號(hào),主動(dòng)發(fā)起高速模式的握手協(xié)議進(jìn)行速度識(shí)別。接下來(lái),就取決于主機(jī)端了,如果主機(jī)的USB控制器支持高速模式傳輸,則主機(jī)會(huì)與該高速設(shè)備交互完成高速模式握手協(xié)議,之后,兩者都工作在高速模式下;如果主機(jī)不支持高速模式傳輸(如果主機(jī)上沒(méi)有EHCI類型的控制器,像比較老舊的電腦,并且是XP系統(tǒng)的),那么握手協(xié)議就會(huì)失敗,設(shè)備端也不會(huì)切換到高速模式,之后兩者都工作在全速模式下。 如果是一個(gè)全速設(shè)備接到高速主機(jī),設(shè)備端沒(méi)法發(fā)起高速握手協(xié)議,所以,最終設(shè)備和主機(jī)都會(huì)工作在全速模式下。主機(jī)具有多種控制器類型,能工作在全速/高速模式下。 全速和高速控制器,都是DP上拉,低速才是DM上拉(配置寄存器的時(shí)候,需要注意的地方)。
|