Day 8 USB 总线架构

USB的架构如下所示

USB框架图

属于树形节点(星形)网络,HUB是树的根节点,Device表示叶子节点,HOST是根节点

USB设计的初衷就是为了构建以PC为中心的,连接各种外设硬件的网络;所以为了让USB接口占用的面积最少,设计了HUB逐级拓展的方式,然后利用PC 作为HOST,管理所有的设备

当然,这种单一主控的网络架构,导致的问题就是带宽利用率有限,外设增多之后,每个外设所得到的时间片会相应的缩小和延时抖动

现代PC机都会采用多个USB HOST的方式来缓解这个问题,USB设备分配到不同的USB网络中,从而避免了带宽冲突的问题

从整体上来看,USB属于半双工,单主机轮询机制;只有当主机轮询到对应的从机时,从机才可以发送数据,从机绝对不能主动发数据给主机

这就带来一个怎么处理紧急事务的问题:当某个设备需要紧急传输数据给主机时,只有等待下一个时间到来,虽然这个时间片可以设置很短,比如1ms,但这样增加了USB主机的查询负担

总结一下

优点:

  1. 架构清晰,便于通过HUB拓展外设
    能通过HUB来拓展至127个外设
  2. USB主机控制整个总线带宽,可以合理的分配给不同的设备
    设备带宽,电流单独可控
  3. 单主机机制,不需要复杂的主机协调协议
    主机定时轮询,避免多机冲突
  4. 地址分配协议简单清晰
    默认地址为0,主机统一分配地址

不足:

  1. 带宽使用率有限
  2. 从机只能被动的发送数据,对于紧急事件,延迟较高

随着手机等可移动设备的普及,用户不仅希望手机能和电脑连接,也能连接外设(比如U盘,打印机),主机架构已经满足不了需求了

于是USB推出一个OTG功能,增加了主机协调协议,能在连接时,通过协商来确定谁当主机,谁当从机,从而解决了这个问题

下一篇分析USB怎么识别不同速度的外设

每日推荐

  1. ST巡讲会的USB资料http://sttext.eefocus.com/data/st/06/e3/9e/1371713070198251.pdf

2015-12-16

-----分割线-----
注意事项

  1. 本订阅号(微信搜 McuProgramming )主要发布一些嵌入式相关的知识和技巧,涉及到软件,硬件,射频,协议栈等;如果您有感兴趣的领域,请通过回复订阅号告诉我

  2. 本订阅号主要是简单文字为主,内含少量代码段,但绝不会发布大量的代码。
    因为根据自己的体会,在手机微信端看代码的体验非常糟糕,一方面屏幕比较小,显示效果不好;另一方面,玩手机时,精力不会集中,更不会有大量时间。
    cedar-renjun.github.io 个人博客会发一些技术细节的东西,感兴趣的,可以深入研究这里的博文

  3. 微信的编辑功能比较弱,不能贴链接,代码啥的,,,所有文章均发表在个人博客,可以通过点击原文来查看,原文有代码语法高亮,显示图片,带链接等效果