Chinaunix首页 | 论坛 | 博客
  • 博客访问: 157607
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-23 14:38
文章分类

全部博文(47)

文章存档

2017年(7)

2016年(4)

2015年(19)

2014年(17)

我的朋友

分类: 嵌入式

2014-11-24 13:52:09

USB,是英文Universal Serial Bus)的缩写,而其中文简称为“通串线”,是一个标准,用于规范电脑与的连接和通讯。是应用在PC领域的。USB接口支持设备的功能。USB是在1994年底由等多家公司联合提出的。

上图显示了USB的拓扑结构。
PC主板上的那两个插口,就是root hub。root hub是一个USB系统的总控制端口。它既可以直接接外设,也可以通过hub控制更多的外设。
USB hub结构类似通常的网络集线器,有一个upper link和很多子端口,每个子端口可以接一个外设,也可以再通过一个hub接入更多外设,直到所有外设加起来到127为止。当USB 设备接入hub或root hub后,主机控制器和主机软件(host controller & host software)能自动侦测到设备的接入。然后host software读取一系列的数据用于确认设备特征,如vendor ID, product ID, interface工作方式,电源消耗量等参数。之后主机分配给外设一个单独的地址。地址是动态分配的,各次可能不同。在分配完地址之后对设备进行初始 化,初始化完成以后就可以对设备进行IO操作了。
 一个USB系统包含三类硬件设备: USB主机(USB HOST)、 USB设备(USB DEVICE)、USB集线器(USB HUB)。
(1)USB HOST

  在一个USB系统中,当且仅当有一个USB HOST时,USB HOST有以下功能:

  ◇ 管理USB系统;
  ◇ 每毫秒产生一帧数据;
  ◇ 发送配置请求对USB设备进行配置操作;
  ◇ 对总线上的错误进行管理和恢复。

  (2)USB DEVICE

   在一个USB系统中,USB DEVICE和USB HUB总数不能超过127个。USB DEVICE接收USB总线上的所有数据包,通过数据包的地址域来判断是不是发给自己的数据包:若地址不符,则简单地丢弃该数据包;若地址相符,则通过响 应USB HOST的数据包与USB HOST进行数据传输。

  (3)USB HUB

  USB HUB用于设备扩展连接,所有USB DEVICE都连接在USB HUB的端口上。一个USB HOST总与一个根HUB (USB ROOT HUB)相连。USB HUB为其每个端口提供100mA电流供设备使用。同时,USB HUB可以通过端口的电气变化诊断出设备的插拔操作,并通过响应USB HOST的数据包把端口状态汇报给USB HOST。一般来说,USB设备与USB HUB间的连线长度不超过5m,USB系统的级联不能超过5级(包括ROOT HUB)。


从物理结构上,USB系统是一个星形结构;但在逻辑结构上,每个USB逻辑设备都是直接与USB HOST相连进行数据传输的。在USB总线上,每ms传输1帧数据。每帧数据可由多个数据包的传输过程组成。USB设备可根据数据包中的地址信息来判断是 否响应该数据传输。在USB标准1.1版本中,规定了4种传输方式以适应不同的传输需求:

  (1)控制传输(control transfer)

  控制传输发送设备请求信息,主要用于读取设备配置信息及设备状态、设置设备地址,设置设备属性、发送控制命令等功能。全速设备每次控制传输的最大有效负荷可为64个字节,而低速设备每次控制传输的最大有效负荷仅为8个字节。

  (2)同步传输(isochronous transfer)

  同步传输仅适用于全速/高速设备。同步传输每ms进行一次传输,有较大的带宽,常用于语音设备。同步传输每次传输的最大有效负荷可为1023个字节。

  (3)中断传输(interrupt transfer)

  中断传输用于支持数据量少的周期性传输需求。全速设备的中断传输周期可为1~255ms,而低速设备的中断传输周期为10~255ms。全速设备每次中断传输的最大有效负荷可为64个字节,而低速设备每次中断传输的最大有效负荷仅为8个字节。

  (4)块数据传输(bulk transfer)

  块数据传输是非周期性的数据传输,仅全速/高速设备支持块数据传输,同时,当且仅当总线带宽有效时才进行块数据传输。块数据传输每次数据传输的最大有效负荷可为64个字节。

(1)USB接口驱动程序

  USB接口驱动程序需实现以下功能:

  ◇ USB接口器件的初始化
  ◇ 计算上层数据包的效验和,发送上层的数据包;
  ◇ 发送SOF帧;
  ◇ 接收从USB接口传送来的数据,并检查数据的有效性;
  ◇ 将接收到的数据送往上层。

  (2)USB协议栈驱动程序

  USB协议栈驱动程序需实现以下功能:

  ◇ 提供与设备驱动程序的接口;
  ◇ 读取并解析USB设备描述符,配置描述符;
  ◇ 为USB设备分配唯一的地址;
  ◇ 使用默认的配置来配置设备;
  ◇ 支持基本的USB命令请求;
  ◇ 连接设备与相应的驱动程序;
  ◇ 转发设备驱动程序的数据包。

  (3)设备驱动程序

  设备驱动程序需实现以下功能:

  ◇ 提供与应用程序的接口;
  ◇ 读取并解析USB设备特有的描述符,获得设备提供的传输通道;
  ◇ 发送设备特有的和基本的USB命令请求;
  ◇ 通过设备提供的传输通道与设备进行数据传输;
  ◇ 通过USB命令请求重新配置设备。


USB的硬件结构
 USB 采用四线电缆,其中两根是用来传送数据的串行通道,另两根为下游(Downstream)设备提供电源,对于高速且需要高带宽的外设,USB以全速 12Mbps的传输数据;对于低速外设,USB则以1.5Mbps的传输速率来传输数据。USB总线会根据外设情况在两种传输模式中自动地动态转换。
     USB是基于令牌的总线。类似于令牌环网络或FDDI基于令牌的总线。USB主控制器广播令牌,总线上设备检测令牌中的地址是否与自身相符,通过接收 或发送数据给主机来响应。USB通过支持悬挂/恢复操作来管理USB总线电源。USB系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机 (Host)、集线器(Hub)和功能设备。
    主机,也称为根,根结或根Hub,它做在主板上或作为适配卡安装在计算机上,主机包含有主控制器和根集线器(Root Hub),控制着USB总线上的数据和控制信息的流动,每个USB系统只能有一个根集线器,它连接在主控制器上。
    集线器是USB结构中的特定成分,它提供叫做端口(Port)的点将设备连接到USB总线上,同时检测连接在总线上的设备,并为这些设备提供电源管 理,负责总线的故障检测和恢复。集线可为总线提供能源,也可为自身提供能源(从外部得到电源),自身提供能源的设备可插入总线提供能源的集线器中,但总线 提供能源的设备不能插入自身提供能源的集线器或支持超过四个的下游端口中,如总线提供能源设备的需要超过100mA电源时,不能同总线提供电源的集线器连 接。

阅读(1127) | 评论(0) | 转发(0) |
0

上一篇:关于API

下一篇:关于USB(2)

给主人留下些什么吧!~~