USB是由世界著名计算机和通信公司等共同推出的新一代接口标准,全称为Universal Serial Bus(通用串行总线),是一种快速、灵活的总线接口。

它是为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准。

USB一般分为USB低速,USB全速,USB高速和USB超高速,其分别对应于USB1.0,USB1.1,USB2.0和USB3.0,而USB3.0又分了GEN1,GEN2等。最新一代是USB4

传输速度为40Gbit/s,三段式电压5V/12V/20V,最大供电100W ,新型Type C接口允许正反盲插。

USB系统组成

USB系统主要包括USB主机和USB设备两种设备。

USB主机:提供USB接口和接口管理功能的硬件、软件、固件的复合体。PC机或OTG设备,一个USB系统只能有一个主机.USB主机提的硬件主要包括USB主控制器和USB根集线器。
USB设备:1.集线器HUB:扩展主机接口,设备可以通过其接入主机 2.功能设备,如U盘,USB摄像头,HID键盘鼠标等。

物理连接:即USB电缆,USB使用差分信号传输数据,USB全速/高速模式电缆必须外层屏蔽铜质传输线,且差分数据线双绞。一条USB的传输线分别由地线、

电源线、D+、D-四条线构成,D+、D-是差分输入线,使用的是3.3V电压,而电源线与地线可向设备提供5V电压,最大电流500mA。

USB3.0采用了9线制,3.2更是多增加了一结差分收发引线。详见可见:USB引脚接线定义

USB拓扑结构

USB的物理拓扑结构是一种叫做菊花链的方式。
USB拓扑结构

每个USB系统只允许有一个HOST(主机)。允许的最大层数为7层(包含主机);每层的电缆最大长度为5米,电缆总长度为30米;每层最大允许接5个DEVICE(设备);

这里的每个系统是一根USB主控制器,也是一个USB根集线器,即一条USB总线。PC中可以有多块USB主控制器,所以也会有多根USB总本。

USB系统程序

USB速度选择

这里主要介绍USB2.0的速度选择。

USB全速模式

USB全速模式是在D+线上上拉1.5K的电阻。
全速模式

USB低速模式

USB低速模式是在D-线上上拉1.5K的电阻。
低速模式

USB信号描述

USB信号描述

差分信号:
1: D+ > Voh(2.8V) and D- < Vol(0.3V)
0:D- > Voh and D+ < Vol

J状态:
Low Speed :Differential(差分信号) 0
Full Speed :Differential(差分信号) 1

K状态:
Low Speed :Differential(差分信号) 1
Full Speed :Differential(差分信号) 0

USB协议分层

USB在逻辑上被分为三层:信号层、协议层、数据传输层。
USB协议分层

设备速度的检测

高速设备
低速设备

USB信号的编码

USB中的数据采用反向不归零编码方式(NRZI:none-return to zero inverted),并对D+和D-线所处的不同状态定义成J和K两种状态。

数据状态
D+
D-
低速J状态
0
1
低速K状态
1
0

数据的编码/解码(反向不归零码)
USB信号的编码

说明:遇到0的边沿进行状态改变,如果是1保持原有状态

注:在数据进行NRZI编码前,每6个连续的1信号之后都会插入一个0信号,以免丢失同步。

USB 协议层

包是USB系统中信息传输的基本单位,所有的数据都是经过打包后再总线上传输的。

每个包由6部分组成:同步字段(SYNC)、包标识符(PID)、地址字段(ADDR)、数据字段(DATA,包括帧号)、检验字段(CRC)、包结束(EOP)。
USB包


USB工作原理

所有 USB 数据传输均由 USB 主机发起。主机通过维护称帧的时间间隔来控制通信时间。主机在每帧开始时在 USB 数据线上发出帧开始 (SOF) 序列。
每帧的时间间隔由指定的USB 速度决定。USB 合规性认证的一项能力要求是主机准确发布 SOF。

低速或全速的SOF间隔1ms,高速为125us。

USB主机与设备进在帧间期间使用事务通信。
事务通讯

传输数据的机制涉及主机读取和写入位于每个设备上的一组内存位置。这些内存位置称为端点。端点的大小(即端点中的数据量)在不同设备之间可能会有很大差异。

设备端点以编号对的形式出现。端点编号从 0 开始,最高可达 32。每个端点编号都有一个 IN 和一个 OUT 端点。OUT 端点携带来自主机的数据,

而 IN 端点包含发送到主机的数据。例如,端点 1 是两个端点;端点 1 IN (EP1IN) 和端点 1 OUT (EP1OUT)。

USB主机发送数据到设备

当主机希望向设备发送消息时,通过使用 WRITE 事务将消息放置在设备上的 OUT 端点中。设备的应用程序代码监视 OUT 端点以确定是否已从主机接收到任何消息。

在检测到来自 Host 的消息存在后,Device 将从 OUT 端点复制消息。

USB主机发送数据到设备

USB主机接收来自设备的数据

如果设备的程序希望与主机通信,则会在 IN 端点中放置一条消息。该消息将保留在 IN 端点中,直到主机发出 READ 事务。READ 事务导致将 IN 端点的内容发送到主机。
USB主机接收来自设备的数据

通讯参数

USB 与端点通信的数据速率取决于三个项:

有关所有端点参数和通信要求的信息由设备定义,并在设备插入主机并成功枚举时提供给主机。枚举过程通知主机在与设备端点通信时使用哪种传输类型。

控制和配置

每个 USB 设备都将端点 0 保留为称为控制端点的唯一端点。端点0 IN 包含主机在枚举期间读取的 USB 设备的描述。端点0 OUT 使主机能够向设备发送配置命令。