USB的架构如下所示
属于树形节点(星形)网络,HUB是树的根节点,Device表示叶子节点,HOST是根节点
USB设计的初衷就是为了构建以PC为中心的,连接各种外设硬件的网络;所以为了让USB接口占用的面积最少,设计了HUB逐级拓展的方式,然后利用PC 作为HOST,管理所有的设备
当然,这种单一主控的网络架构,导致的问题就是带宽利用率有限,外设增多之后,每个外设所得到的时间片会相应的缩小和延时抖动
现代PC机都会采用多个USB HOST的方式来缓解这个问题,USB设备分配到不同的USB网络中,从而避免了带宽冲突的问题
从整体上来看,USB属于半双工,单主机轮询机制;只有当主机轮询到对应的从机时,从机才可以发送数据,从机绝对不能主动发数据给主机
这就带来一个怎么处理紧急事务的问题:当某个设备需要紧急传输数据给主机时,只有等待下一个时间到来,虽然这个时间片可以设置很短,比如1ms,但这样增加了USB主机的查询负担
总结一下
优点:
- 架构清晰,便于通过HUB拓展外设
能通过HUB来拓展至127个外设 - USB主机控制整个总线带宽,可以合理的分配给不同的设备
设备带宽,电流单独可控 - 单主机机制,不需要复杂的主机协调协议
主机定时轮询,避免多机冲突 - 地址分配协议简单清晰
默认地址为0,主机统一分配地址
不足:
- 带宽使用率有限
- 从机只能被动的发送数据,对于紧急事件,延迟较高
随着手机等可移动设备的普及,用户不仅希望手机能和电脑连接,也能连接外设(比如U盘,打印机),主机架构已经满足不了需求了
于是USB推出一个OTG功能,增加了主机协调协议,能在连接时,通过协商来确定谁当主机,谁当从机,从而解决了这个问题
下一篇分析USB怎么识别不同速度的外设
每日推荐
2015-12-16
-----分割线-----
注意事项
本订阅号(微信搜 McuProgramming )主要发布一些嵌入式相关的知识和技巧,涉及到软件,硬件,射频,协议栈等;如果您有感兴趣的领域,请通过回复订阅号告诉我
本订阅号主要是简单文字为主,内含少量代码段,但绝不会发布大量的代码。
因为根据自己的体会,在手机微信端看代码的体验非常糟糕,一方面屏幕比较小,显示效果不好;另一方面,玩手机时,精力不会集中,更不会有大量时间。
cedar-renjun.github.io 个人博客会发一些技术细节的东西,感兴趣的,可以深入研究这里的博文微信的编辑功能比较弱,不能贴链接,代码啥的,,,所有文章均发表在个人博客,可以通过点击原文来查看,原文有代码语法高亮,显示图片,带链接等效果