我們經常使用USB,對USB多少了解呢?本篇文章我們一起來學習一下USB的拓撲結構和數據通信原理。
USB是一種主從結構的系統,主機叫做Host,從機叫做Device,通常所說的主機具有一個或者多個USB主控制器(Host controller)和跟集線器(root hub),主控制器主要負責數據處理,而跟集線器則提供一個連接主控制器和設備之間的接口和通路。另外,還有一類特殊的USB設備-USB集線器,我們也叫USB HUB,它可以對原有的USB口的數量上進行擴展,就可以獲得更多的USB口。但是需要注意的是集線器只能擴展處更多的USB口,而不能擴展出更多的帶寬,帶寬是共享一個USB主控制器的。
?
USB HUB
通常,PC上有多個USB主控制器和多個USB口,每個主控制器下有一個跟集線器,跟集線器下面通常具有一個或者幾個USB口,當你有多個不同的USB設備都需要較大的數據帶寬時,可以考慮將他們分別接到不同的主控制器的跟集線器上,以避免帶寬不足。
USB的數據交換只能發生在主機與設備之間,主機與主機之間,設備與設備之間不能直接互聯和交換數據。為了在物理上區分主機和設備,使用了不同的插頭和插座,所有的數據都由主機主動發起,而設備只是被動的負責應答,例如,在讀數據時,USB先發出命令,設備收到該命令后,才返回數據。
USB OTG比普通的4線USB多了一條ID識別線,用來表明它是主機還是設備,它可以在主機和設備之間切換角色,這樣就實現了設備與設備的鏈接,增大了USB的使用范圍。但是需要注意的是依然沒有脫離主從關系,兩個設備之間必須要有一個作為主機,一個作為設備。
?
USB層次連接
塔頂作為USB主控制器和跟集線器,下面接USB集線器,USB集線器將一個USB口擴展為多個USB口,多個USB口又可以通過集線器擴展出更多的接口,但USB協議中對集線器的層數是有限制的,USB1.1規定最多4層,USB2.0規定最多6層,理論上一個USB主控制器最多接127個設備,這是因為協議規定每個USB設備具有一個7bit的地址(取值范圍0-127)。
一個完美的數據傳輸過程如下:首先由USB主控制器發出命令和數據,通過跟集線器,再通過下面的集線器發給USB設備,設備對接收到的數據極性處理后,返回一些信息或者數據,它首先到達上一層的集線器,上層的集線器再交給更上層的集線器,一直到USB的主控制器,最終USB主控制器講述CPU處理。
文中我們對USB的拓撲結構和數據通信過程做了一個詳細的描述,你學到了嗎?
往期回顧:
●張飛單片機來了
●為什么好多人設計USB上拉電阻都是1.5K?
●C語言與匯編混合工程
END

