3.3. USB系统的核心是Host

USB是Host端控制整个的总线数据传输的。单个USB总线上,只能有一个Host。USB协议本身,是不支持多个Host端的。

不过,相对有点特殊的是,USB为了支持多个设备互相,而不需要另外接Host,比如一个数码相机和一个打印机,希望把打印机和数码相机直接相连接,然后就可以实现通过USB,把数据从数码相机传送到打印机中,打印机就可以打印了。

此处,OTG引入了一个新的概念,HNP(Host Negotiation Protocol),主机协商协议,允许两个设备之间互相协商谁去当Host。不过,即使在OTG中,也只是同一时刻,只存在单个的Host,而不允许存在多个Host的。

USB中的Host端,负责所有底层的数据传输的控制以及数据带宽的安排调度。

底层数据的发送,是使用一种基于令牌环的协议,通过不同类型的传输方法而实现的。

USB的设备连接方式,即拓扑方式,是星形的,所以,在需要连接多个设备的时候,常需要用到对应的Hub。这种星形拓扑的好处是,对于每一个设备的供电情况,都可以控制,也可以同时支持多个不同类型的设备。而万一某设备电流过高了,也不会影响到其他设备。

同一USB总线中,最多可连接127个设备。当然,实际中你所看到的,往往都比较少,至少普通用户用到的,也就是几个的数量级。常见的是一个USB Host,提供,2,3个或者4,5个接口。而USB Host的内部实现,也有最开始的只有1个USB主控Host Controller,变得有些内部包含2个甚至更多个USB主控,以提高所接的USB设备的带宽,即速率,因为单个USB主控所接多个USB设备的话,那么多个设备是共享此USB主控的带宽的。