USB2.0之架构简述
USB2.0之架构简述
USB(Universal Serial Bus)是一种广泛使用的串行总线标准,用于连接计算机和其他设备。USB 2.0作为USB标准的重要版本,其架构设计精良,能够支持多种设备类型和数据传输需求。本文将详细介绍USB 2.0的架构组成和技术特点。
总线拓扑
USB总线采用分层星型拓扑结构,一个USB系统只能有一个主机(Host)。由于时间限制,USB系统最多可以拓展到7层,其中的集线器(Hub)最多只能级联5层(不包括根集线器)。含有Hub的复合设备不能接到第7层。一个USB系统最多支持127个设备。
物理接口
USB线缆包含4根线:2根电源线和2根数据线。电源电压为5V,可以为设备提供电源,设备本身也可以单独安排电源供电。数据线传输的是差分信号,按速率分为3种:
- 480Mb/s的高速(High-Speed)
- 12 Mb/s的全速(Full-Speed)
- 1.5 Mb/s的低速(Low-Speed)
健壮性
USB采用多种机制确保数据传输的可靠性:
- USB线上采用差分信号传输数据
- 采用CRC校验数据
- 数据错误重发机制:当数据接收方发现接收到的数据出错时,会要求发送方重新发送数据,一包数据最大可发送3次,超过三次,发送方就会将错误报告给上层软件处理。
总线协议
USB是轮询总线,所有数据传输都由主机启动。大多数总线事务涉及最多三个数据包的传输:
- 主机先发送一个数据包给设备,这个数据包包含数据类型、数据方向、设备地址等信息
- 接收到该数据包的设备根据数据包的内容做出相应处理——接收下一包数据或者向主机发送一包数据
- 接收到数据的主机或者设备向数据发送方发送一包数据,表示数据接收的情况
端点(Endpoint)是USB设备上的数据处理单位。主机发送过来的数据,由端点接收,设备要发送给主机数据,也由端点发送。端点0比较特殊,支持双向,既可以接收,也可以发送,其它端点只能有一个方向。
主机与设备端点之间的数据传输可以看作是管道(Pipe)模型,这是逻辑上的管道概念,设备上有多个端点,每个端点只能处理规定的数据类型,那么主机就要明确数据是发给哪个端点的,如此主机和每一个端点就有了独立的捆绑关系,在逻辑上类似于在两者之间架设了直连管道传输数据。管道分为流管道(Stream Pipes)和信息管道(Message Pipes)。信息管道的数据有规定的格式含义,而流管道没有。
数据流类型
一条管道只能支持一种类型的数据传输,也就是说一个端点只能接受一种类型的数据传输。USB将数据传输类型分为四种:
- 控制传输(Control Transfers):用于设备连接时的配置处理以及其它管道控制等目的。每个USB设备接入都会使用到该类型传输。
- 批量传输(Bulk Data Transfers):用于大量数据的传输,延迟没有保证。例如打印机、扫描仪都会使用到该类型传输。
- 中断传输(Interrupt Data Transfers):有时间保证的可靠传输。会有延迟,但时间是控制在一定阈值之下的。例如鼠标的使用就涉及到这种类型的数据传输。
- 同步传输(Isochronous Data Transfers):实时传输,数据正确性不保证。一个典型例子就是USB音频设备。
USB将带宽分配给管道,如果设备要求更多的带宽,那设备就需要有更大的空间以便承载数据。
设备特点
每一个设备都有端点0,设备的信息都是通过端口0发送给主机的。设备信息可以分为三类:
- 标准信息:这是所有USB设备都有的一类信息,包括厂商标识、设备类别、电源管理能力、各级描述符。
- 类信息:这个跟标准信息中的设备类别信息相关。
- 厂商信息:USB厂商自定义的内容。
设备主要分为两类:集线类(Hubs)和功能类(Functions),Hub扩展接口数量,Function提供具体功能。
主机硬件和软件
主机是通过主机控制器(Host Controller)和设备通信的,主要做以下几方面的工作:
- 检测设备的插入和移除
- 管理主机和设备之间的控制流
- 管理主机和设备之间的数据流
- 收集状态和活动统计
- 设备供电
系统软件和设备软件的互动有以下几方面:
- 设备枚举和配置
- 同步数据传输
- 异步数据传输
- 电源管理
- 设备和总线管理信息
本文原文来自CSDN