usb协议基础

usb简介

usb是一种支持热插拔的高速串行传输总线,使用差分信号来传输数据,高速模式下传输速率为480Mb/S,全速模式为12Mb/S,低速模式为1.5Mb/S,USB支持“总线供电”和“自供电”两种供电模式,在总线模式下,设备最多和获得500mA的电流(设备未配置前枚举阶段提供100mA)。

usb优缺点

优点:传输速率快,支持热插拔,即插即用;
缺点:传输距离短,供电能力有限;

usb的拓扑结构

usb主控制器:对从机设备的控制和数据处理;
usb根集线器:是特殊的USB集线器,集成在主机控制器中,不占用地址;
usb集线器:可以扩展出更多的USB口;
一个主控制器对应一个根集线器,而一个根集线器通常具有一个或者几个USB口,比如我的电脑主机上有7个主控制器和7个根集线器(图1),根集线器上有6个端口可用,端口自供电,提供5v/500ma的电流(图2);


usb协议基础_第1张图片


usb协议基础_第2张图片

USB体系包括”主机”、”设备”、”物理连接”三个部分,其中主机是一个提供USB接口及接口管理能力的硬件、软件及古剑的复合体,可以是PC,也可以是OTG设备。一个USB系统中仅有一个USB主机;设备包括USB功能设备和USB集线器,最多支持127个设备;物理连接指的是USB的传输线使用屏蔽的双绞线;
以下是USB的分层星型拓扑结构,以根集线器为起点,最多支持7层。一个usb主机最多可以同时支持127个地址;(usb主机最多支持128个地址,不过地址0作为默认地址,只在设备枚举期间临时使用,不能分配给任何一个设备)


usb协议基础_第3张图片

usb总线信号

usb使用的是差分信号来进行传输,D+为高电平,D-为低电平,表示总线数据1;D+位低电平,D-为高电平,表示总线数据0;
USB协议中是是用J和K状态来表示总线状态的(J状态:(LS:差分0;FS:差分1) K状态:(LS:差分1;FS:差分0),具体的状态如下:
Reset信号:D+和D-都是低电平,并且保持10ms以上表示总线复位,总线复位信号将设备设置到默认的未配置状态;
IDLE状态:数据发送前后的状态,使用J状态来表示;
挂起状态:3ms以上的空闲状态(J状态);
sync状态:3个KJ状态的切换,后跟随两个位时间的K状态;
唤醒信号:主机在挂起设备后可通过翻转数据线上的极性并保持20ms来唤醒设备,并以低速EOP信号结束;带远程唤醒工程的设备可以自己发起该唤醒信号,前提是设备已经进入idle状态至少5ms,然后发出唤醒K信号,维持1ms到15ms,并有主机在1ms内接管来继续驱动唤醒信号;
SOP:从IDLE状态切换至K状态;
EOP:持续两位时间的SE0信号,后跟随1位时间的J状态,低速模式下的KEEP ALIVE就是EOP信号;

usb设备插入检测和速度检测

全速和低速的识别
主机的hub端上的D+和D-上,分别接了15k的下拉电阻到地,当主机hub端悬空时,主机hub端均为低电平;usb设备端的D+或者D-上接有1.5k的上拉电阻,低速设备的上拉电阻接到D-上,高速和全速设备的上拉电阻接到D+上,当设备插入主机时,主机hub端的D+或者D-会被拉高,如果D+为高电平,主机认为高速或者全速设备插入,放D-为高电平时,主机认为低速设备插入;
高速设备识别
usb高速设备的D+上接有1.5k的上拉电阻,当设备插入主机时,首先被识别为全速设备。之后,hub和设备需要通过“Chirp序列”的总线握手机制来识别高速和全速设备。整个过程中,高速的hub需要检测插入的设备是高速、全速还是低速,高速的设备需要检测所连接上的hub是都支持高速模式,如果双方都确认成功,就进行以系列的动作,设备从全速切换到高速模式,高速模式下,采用电流传输模式,设备需要将上拉电阻断开。否则,设备以全速模式工作;

NRZI编码

我们常见的串行总线协议中,主机和设备之间的传输都是同步或者异步的,UART串口通信,是异步通信,所以使用波特率来同步两个设备之间的数据传输,I2C、SPI同步串行总线,是使用clk时钟线来进行数据的同步,usb通信的协议中使用NRZI编码的机制来进行主机和设备之间数据的同步传输;
下面是RZ、NRZ、NRZI的描述:
RZ:归零编码,在数据传输线上有三种电平,正电平、零电平、负电平,正电平代表1,负电平代表0,每次传输完一位数据后,传输线上的信号都会返回零电平;接受端在接受到零电平(归零信号)的时候,去采样数据,实现数据传输的同步,这种传输会增加带宽,是数据的传输速率减小一半;
NRZ:非归零编码,在数据传输线上有两种电平,高电平和低电平,高电平表示1,低电平表示0,不能实现自同步;
NRZI:反向非归零编码,使用电平的翻转来表示0或者1,当数据是0时,电平翻转,当数据为1时,电平不翻转,不能实现自同步;
NRZ和NRZI的同步机制:
NRZ和NRZI都不能实现自同步,所系需要一些措施保证收据收发两方的数据同步,第一:采用同步域,对于NRZ,同步域是若干01010101数据,对于NRZI编码机制,同步域若干00000000(数据0表示电平翻转),这样接收端就可以计算出采样频率,这是外部同步的概念;第二:对于BRZI编码,可以利用信号的跳变来实现同步,即位填充,在数据传输的过程中,当连续出现6个数据1,就强行插入一个数据0,实现信号的翻转,使接收端进行同步,接收端接受到6个数据1时,去掉填充位,这种同步可以理解为自同步。

你可能感兴趣的:(usb)