接口与协议学习笔记-USB协议_USB2.0_USB3.0不一样版本(三)

      USB(Universal Serial Bus)全称通用串口总线,USB为解决即插即用需求而诞生,支持热插拔。USB协议版本有USB1.0、USB1.一、USB2.0、USB3.1等,USB2.0目前比较经常使用,USB是主从模式的结构,设备与设备之间、主机与主机之间不能互连,为解决这个问题,扩大USB的应用范围,出现了USB OTG,全拼 ON The Go。USB OTG 同一个设备,在不一样的场合下可行在主机和从机之间切换。并发

    一、USB特色大数据

         USB1.0和USB1.1支持1.5Mb/s的低速模式和12Mb/bs的全速模式。在USB2.0以上支持480Mb/s的高速模式。 编码

 二、  自供电设备:设备从外部电源获取工做电压 总线供电设备:设备从VBUS(5v) 取电 。对总线供电设备,区分低功耗和高功耗USB设备 spa

低功耗总线供电设备:最大功耗不超过100mA 
高功耗总线供电设备: 枚举时最大功耗不超过100mA,枚举完成配置结束后功耗不超过500mA 
设备在枚举过程当中,经过设备的配置描述符向主机报告它的供电配置(自供电/总线供电)以及它的功耗要求视频

三、 USB总线信号:
        USB使用的是差分传输模式,两个数据线D+和D- 
        差分信号1:D+ > VOH(min) (2.8V) 且D- < VOL(max)(0.3V) 
        差分信号0:D- > VOH and D+ < VOL  blog

总有如下个状态,接口

J状态(高电平):D+ 高,D- 低
K状态(低电平):D+低,D- 高
SEO状态:D+ 低,D- 高
Reset信号:D+ and D- < VOL for >= 10ms 
主机在要和设备通讯以前会发送Reset信号来把设备设置到默认的未配置状态。即主机拉低两根信号线(SE0状态)
并保持10ms 
Idle状态:J状态数据发、送先后总线的状态 
Suspend状态:3ms以上的J状态 事务

                               SYNC: 3个KJ状态切换,后跟随2位时间的K状态同步

Resume信号:20ms的K状态+低速EOP 
主机在挂起设备后可经过翻转数据线上的极性并保持20ms来唤醒设备,并以低速EOP信号结尾 
带远程唤醒功能的设备还可本身发起该唤醒信号;前提是设备已进入idle状态至少5ms,而后发出唤醒K信号,维持1ms到15ms并由主机在1ms内接管来继续驱动唤醒信号 
SOP:从IDLE状态切换到K状态 
EOP:持续2位时间的SE0信号,后跟随1位时间的J状态 
Keep alive即低速EOP信号效率

唤醒slave设备操做

四、USB插入检测和速度检测

     全速高速设备在D+接上拉1.5k电阻,低速设备在D-接上拉1.5K电阻。主机检测到某一个数据线电平拉高并保持了一段时间,就认为有设备连上来了, 先把高速设备检测为全速设备,而后再经过“Chirp序列”的总线握手机制来识别高速和全速设备。主机必需在驱动SE0状态以复位设备以前,马上采样总线状态来判断设备的速度 。

    D+和D-数据线上的下拉电阻起做用,使得两者都在低电平;主机端看来就是个SE0状态;一样地,当数据线上的SE0状态持续一段时间了,就被主机认为是断开状态。

五、USB传输

     一个传输有多个事务组成,一个事务由2到3个包组成。传输又分为四种类型:批量传输、等时(同步)传输、中断传输、控制传输。注意:USB传输数据先发数据低位再发高位数据。

   USB协议定义了四种传输类型: 
批量(大容量数据)传输(Bulk Transfers): 非周期性,突发  
大容量数据的通讯,数据能够占用任意带宽,并容忍延迟 。如USB打印机、扫描仪、大容量储存设备等 

低速 USB 设备不支持批量传输,高速批量端点的最大包长度为 512,全速批量端点的最大包长度能够为 八、1六、3二、64。

      批量传输在访问 USB 总线时,相对其余传输类型具备最低的优先级,USB HOST 老是优先安排其余类型的传输,当总线带宽有富余时才安排批量传输。

      高速的批量端点必须支持PING 操做,向主机报告端点的状态,NYET 表示否认应答,没有准备好接收下一个数据包,ACK 表示确定应答,已经准备好接收下一个数据包。


中断传输(Interrupt Transfers): 周期性,低频率
容许有限延迟的通讯 如人机接口设备(HID)中的鼠标、键盘、轨迹球等

中断传输是一种保证查询频率的传输。中断端点在端点描述符中要报告它的查询间隔,主机会保证在小于
这个时间间隔的范围内安排一次传输。

中断传输是一种轮询的传输方式,是一种单向的传输,HOST经过固定的间隔对中断端点进行查询,如有数据传输或能够接收数据则返回数据或发送数据,不然返回NAK,表示还没有准备好。

      中断传输的延迟有保证,但并不是实时传输,它是一种延迟有限的可靠传输,支持错误重传。 
      对于高速/全速/低速端点,最大包长度分别能够达到1024/64/8 Bytes。

      高速中断传输不得占用超过 80%的微帧时间,全速和低速不得超过 90%。

      中断端点的轮询间隔由在端点描述符中定义,全速端点的轮询间隔能够是1~255mS,低速端点为10~255mS,高速端点为(2interval-1)*125uS,其中 interval取 1到 16之间的值。

      除高速高带宽中断端点外,一个微帧内仅容许一次中断事务传输,高速高带宽端点最多能够在一个微帧内进行三次中断事务传输,传输高达 3072 字节的数据。

      所谓单向传输,并非说该传输只支持一个方向的传输,而是指在某个端点上该传输仅支持一个方向,或输出,或输入。若是须要在两个方向上进行某种单向传输,须要占用两个端点,

      分别配置成不一样的方向,能够拥有相同的端点编号。


等时(同步)传输(Isochronous Transfers): 周期性 
持续性的传输,用于传输与时效相关的信息,而且在数据中保存时间戳的信息 ,如音频视频设备

等时(同步)传输用在数据量大、对实时性要求高的场合,如音频设备,视频设备等,这些设备对数据的延迟很敏感。对于音频或视频设备数据的100%正确性要求不高,少许的数据错误是能够容忍的,主要是保证数据不能停顿,因此等时传输是不保证数据100%正确的。当数据错误时,再也不重传操做。所以等时传输没有应答包,数据是否正确,由数据的CRC校验来确认。


控制传输(Control Transfers): 非周期性,突发
用于命令和状态的传输

                              控制传输可分为三个过程:(1)创建过程 (2)数据过程(可选) (3)状态过程
                              特性:  
                             每一个USB设备都必须有控制端点,支持控制传输来进行命令和状态的传输。USB主机驱动将经过控制传输与USB设备的控制端点通讯,完成USB设备的枚举和配置 
                             方向:  
                             控制传输是双向的传输,必须有IN和OUT两个方向上的特定端点号的控制端点来完成两个方向上的控制传输

控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从HOST到Device的SETUP事务传输,这个阶段指定了这次控制传输的请求类型;

      第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,经过一次IN/OUT 传输代表请求是否成功完成。

      控制传输经过控制管道在应用软件和 Device 的控制端点之间进行,控制传输过程当中传输的数据是有格式定义的,USB 设备或主机可根据格式定义解析得到的数据含义。

      其余三种传输类型都没有格式定义。

      控制传输对于最大包长度有固定的要求。对于高速设备该值为 64Byte;对于低速设备该值为 8;全速设备能够是 8或 16或 32或 64。

      最大包长度 表征了一个端点单次接收/发送数据的能力,实际上反应的是该端点对应的Buffer 的大小。Buffer 越大,单次可接收/发送的数据包越大,反之亦反。

      当经过一个端点进行数据传输时,  若数据的大小超过该端点的最大包长度时,须要将数据分红若干个数据包传输,而且要求除最后一个包外,全部的包长度均等于该最大包长度。

      这也就是说若是一个端点收到/发送了一个长度小于最大包长度的包,即意味着数据传输结束。

      控制传输在访问总线时也受到一些限制,如:

        a. 高速端点的控制传输不能占用超过 20%的微帧,全速和低速的则不能超过 10%。 
        b. 在一帧内若是有多余的未用时间,而且没有同步和中断传输,能够用来进行控制传输。

六、USB的编码方案

     USB采用不归零取反来传输数据,当传输线上的差分数据输入0时就取反,输入1时就保持原值,为了确保信号发送的准确性,当在USB总线上发送一个包时,传输设备就要进行位插入***做(即在数据流中每连续6个1后就插入一个0)。

七、USB的数据格式

   (一)域:是USB数据最小的单位,由若干位组成(至因而多少位由具体的域决定),域可分为七个类型:

一、同步域(SYNC),八位,值固定为0000 0001,用于本地时钟与输入同步

二、标识域(PID),由四位标识符+四位标识符反码构成,代表包的类型和格式,这是一个很重要的部分,这里能够计算出,USB的标识码有16种,具体分类请看问题五。

三、地址域(ADDR):七位地址,表明了设备在主机上的地址,地址000 0000被命名为零地址,是任何一个设备第一次链接到主机时,在被主机配置、枚举前的默认地址,由此能够知道为何一个USB主机只能接127个设备的缘由。

四、端点域(ENDP),四位,由此可知一个USB设备有的端点数量最大为16个。

五、帧号域(FRAM),11位,每个帧都有一个特定的帧号,帧号域最大容量0x800,对于同步传输有重要意义(同步传输为四种传输类型之一,请看下面)。

六、数据域(DATA):长度为0~1023字节,在不一样的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度

七、校验域(CRC):对令牌包和数据包(对于包的分类请看下面)中非PID域进行校验的一种方法,CRC校验在通信中应用很泛,是一种很好的校验方法,至于具体的校验方法这里就很少说,请查阅相关资料,只须注意CRC码的除法是模2运算,不一样于10进制中的除法。

(二)包:由域构成的包有四种类型,分别是令牌包、数据包、握手包和特殊包,前面三种是重要的包,不一样的包的域结构不一样,介绍以下

一、令牌包:可分为输入包、输出包、设置包和帧起始包(注意这里的输入包是用于设置输入命令的,输出包是用来设置输出命令的,而不是放据数的)

其中输入包、输出包和设置包的格式都是同样的:

SYNC+PID+ADDR+ENDP+CRC5(五位的校验码)

帧起始包的格式:

SYNC+PID+11位FRAM+CRC5(五位的校验码)

二、数据包:分为DATA0包和DATA1包,当USB发送数据的时候,当一次发送的数据长度大于相应端点的容量时,就须要把数据包分为好几个包,分批发送,DATA0包和DATA1包交替发送,即若是第一个数据包是 DATA0,那第二个数据包就是DATA1。但也有例外状况,在同步传输中(四类传输类型中之一),全部的数据包都是为DATA0,格式以下:

SYNC+PID+0~1023字节+CRC16

三、握手包:结构最为简单的包,格式以下

SYNC+PID

八、USB 2.0 和USB 3.0 对比 

  1. USB 2.0基于半双工二线制总线,两根线的差分信号来传输数据,只能提供单向数据流传输;而USB 3.0采用了TxRx四线制差分信号线,相似于PCIe总线,故而支持双向并发数据流传输。
  2.  USB3.0的最大数据传输速率为5Gbps,与USB2.0的480Mbps相比,提高到了10倍以上。
  3.   USB3.0芯片大小目标与现有的USB2.0芯片至关,封装尺寸为6mm×6mm~7mm×7mm
  4.  USB3.0链接器为了保证与现有标准的兼容性,USB3.0引入了新的链接器,包括两种类型:标准规格和面向便携设备的Micro规格。标准规格又包含两种类型:A型与B型。

    A型接口:USB2.0链接器在前,而USB3.0链接器在后

    B型接口:USB3.0链接器设置于USB2.0链接器的上方。

  5. 电源电流在一样的5V电压下,USB3.0的电源电流可达到900mA,而USB2.0的100mA。
  6. USB3.0将会智能管理USB设备,最大限度地杜绝空置的电能浪费,此举对笔记本用户会带来必定的好处;USB3.0增大了供应电流。在以前的USB规范中,设备取电通常最大能够获得100毫安的电流,若是采用高电量的模式,则获得的电流是500毫安,若是须要更大的电流,则只能借助变压器,然而USB3.0可供应的最大电流是900毫安。这意味着,对于MP三、手机充电来讲,采用USB3.0传输的话,充电效率将成倍的提升,从而大大节约充电时间。据悉这是因为USB3.0增长5个针脚形成的。
相关文章
相关标签/搜索