USB2.0概述及协议基础

作者: WilliamChou | 来源:发表于2016-11-02 07:49 被阅读7395次
    目录
    
    Ⅰ USB总线接口
    1 USB接口标准
    2 USB总线信号
    3 USB数据编解码和位填充
    4 USB拓扑结构
    5 USB逻辑部件
    
    Ⅱ USB设备
    1 USB设备供电方式
    2 USB设备插入检测机制
    3 USB设备状态
    4 USB设备枚举过程
    5 USB描述符
    
    Ⅲ USB传输
    1 USB传输格式  
    2 包packet  
    3 事务transaction
    4 传输transfer
    
    

    USB是通用串行总线(Universal Serial Bus)的缩写。在USB1.0和USB1.1版本中,只支持1.5Mb/s的低速(low-speed)模式和12Mb/s的全速(full-speed)模式,在USB2.0中,又加入了480Mb/s的高速模式。


    USB应用范围

    ⅠUSB总线接口


    1 USB接口标准

    标准的USB连接器有A型、B型和Mini B型,每个型号又分为插头和插座。


    USB接口标准

    2 USB总线信号

    USB使用差分传输模式,两根数据线D+和D-。

    差分信号1:D+>2.8V,D-<0.3V;
    差分信号0:D->2.8V,D+<0.3V。
    
    • J状态和K状态
      低速下:D+为“0”,D-为“1”是为“J”状态,“K”状态相反;
      全速下:D+为“1”,D-为“0”是为“J”状态,“K”状态相反;
      高速同全速。
    • SE0状态
      D+为“0”,D-为“0”
    • IDLE状态
      低速下空闲状态为“K”状态;
      全速下空闲状态为“J”状态;
      高速下空闲状态为“SE0”状态。

    针对全速模式,有以下几个重要信号:

    • Reset信号
      主机在要和设备通信之前会发送Reset信号来把设备配置到默认的未配置状态。即SE0状态保持10ms。
    • Resume信号
      20ms的K状态+低速EOP
    • Suspend信号
      3ms以上的J状态
    • SOP信号
      从IDLE状态切换到K状态
    • EOP信号
      持续2位时间的SE0信号,后跟随1位时间的J状态
    • SYNC信号
      3个重复的K、J状态切换,后跟随2位时间的K状态
    suspend、resume信号
    SYNC信号

    3 USB数据编解码和位填充

    USB采用NRZI(非归零编码)对发送的数据包进行编码。即:
    输入数据0,编码成“电平翻转”;输入数据1,编码成“电平不变”


    NRZI编码

    位填充是为了保证发送的数据序列中有足够多的电平变化。填充的对象时输入数据,即先填充后编码。数据流中每6个连续的“1”,就要插入1个“0”。
    接收方解码NRZI码流,然后识别出填充位,并丢弃它们。


    位填充

    4 USB拓扑结构

    USB是一种主从结构的系统,主机叫做Host,从机叫做Device。Device包括USB function和USB HUB。

    USB总线基于分层的星状拓扑结构,以HUB为中心,连接周围设备。总线上最多可连接127个设备。Hub串联数量最多5个。


    USB拓扑结构 USB体系结构

    5 USB逻辑部件

    USB逻辑部件

    Ⅱ USB设备


    1 USB设备供电方式

    USB设备有两种供电方式:
    1)自供电设备:设备从外部电源获取工作电压
    2)总线供电设备: 设备从VBUS(5v)取点

    对总线供电设备,区分低功耗和高功耗USB设备。
    低功耗设备是最大功耗不超过100mA。
    高功耗设备是枚举时最大功耗不超过100mA,枚举完成配置结束后功耗不超过500mA。

    设备在枚举工程中,通过配置描述符来向主机报告它的供电方式和功耗要求的。

    2 USB设备插入检测机制


    没有设备连上主机时,主机的D+和D-都在低电平(SE0状态),当SE0状态 持续一段时间了,就被主机认为是断开状态。
    当设备连上主机时,主机检测到某一数据线电平拉高并持续一段时间,就认为有设备连上来了。主机必须在复位设备前,立即采样总线状态来判断设备的速度。

    3 USB设备状态

    USB设备有插入、供电、初始化、分配地址、配置和挂起六中状态,其状态转移图如下。


    USB设备状态

    4 USB设备枚举过程

    对应USB设备的状态,host对USB设备会有以下活动:



    在枚举过程中,都是使用控制传输。

    • 复位阶段
      USB主机检测到USB设备插入后,就会对设备复位。USB设备在总线复位后其地址为0,这样主机就可以通过地址0和那些刚刚插入的设备通信。USB主机往地址为0的设备的端点0发送获取设备描述符的标准请求。设备会将设备描述符返回给主机,主机在成功获取到数据包后,就会返回一个确认数据包给设备,从而进入接下来的分配地址阶段。
    • 分配地址阶段
      主机对设备又一次复位,就进入到分配地址阶段。主机往地址为0的设备的端点0发送一个设置地址的请求,新的设备地址就包含在建立过程的数据包中。具体的地址由主机负责管理,主机会分配一个唯一的地址给刚接入的设备。设备在收到这个建立过程后,就会进入到状态过程。设备等待主机请求状态返回,收到状态请求后,设备就返回0长度的状态数据包。如果主机确认该状态包已经正确收到,就会发送应答包ACK给设备,设备在收到这个ACK之后,就要启用新的设备地址了。这样设备就分配到了一个唯一的设备地址。
    • 获取描述符阶段
      获取描述符可以形象地表述如下:

    Host:你是什么设备?

    Device:12 01 0100....Device Descriptor
    Host:你有几种功能?
    Device:09 02 09....Configuration Descriptor
    Host:每个功能有几个接口?
    Device:09 04 00....Interface Descriptor
    Host:每个接口使用哪几个端点?
    Device:06 05 82....Endpoint Descriptor
    Host:好了,我知道你是谁了,开始传输设备吧!
    Device:OK,Read Go!

    5 USB描述符

    USB描述符有以下11类:


    每种描述符的第一个字节描述该描述符包含的字节数目,第二个节描述该描述的类型。

    • Device Descriptor


    • Configuration Descriptor


    • Interface Descriptor


    • Endpoint Descriptor


    • String Descriptor


    Ⅲ USB传输


    1 USB传输格式

    USB总线上传输数据是以包(packet)为基本单位的,必须把不同的包组织成事务(transaction)才能传输数据。
    USB协议规定了四种传输(transfer)类型:批量传输、同步传输、中断传输和控制传输。其中,批量传输、同步传输和中断传输每传输一次数据都是一个事务,控制传输包括三个过程,建立过程和状态过程分别是一个事务,数据过程则可能包含多个事务。


    2 包packet

    一个包被分为不同域,根据不同类型的包,所包含的域是不一样的。但都要以同步域SYNC开始,紧跟一个包标识符PID,最终以包结束符EOP来结束这个包。


    packet的组成
    • PID域
      PID是用来标识一个包的类型的。它共有8位,只使用4位(PID0PID3),另外4位是PID0PID3的取反,用来校验PID。

      PID
      PID规定了四类包:令牌包、数据包、握手包和特殊包。同类的包又各分为具体的四种包。
      包类型
      仅在帧首传输一次SOF包。
    • 地址域
      地址共占11位,其中低7位是设备地址,高4位是端点地址。


      地址
    • 帧号域
      帧号占11位,主机每发出一个帧,帧号都会自加1,当帧号达到0x7FF时,将归零重新开始计数。

    • 数据域
      根据传输类型的不同,数据域的数据长度从0到1024字节不等。


      数据长度
    • CRC域


      CRC校验
    A. 令牌包

    令牌包有四种:

    • OUT: 通知设备将要输出一个数据包
    • IN: 通知设备返回一个数据包
    • SETUP: 只用在控制传输中,也是通知设备将要输出一个数据包,与OUT令牌的区别是:只使用DATA0数据包,且只能发到device的控制端点
    • SOF: 在每帧开始时以广播的形式发送,针对USB全速设备,主机每1ms产生一个帧,USB主机会对当前帧号进行统计,每次帧开始时通过SOF包发送帧号。

    OUT/IN/SETUP令牌包没有帧号域和数据域。


    OUT/IN/SETUP令牌包结构

    SOF令牌包没有地址域和数据域。


    SOF令牌包结构
    B.数据包

    数据包没有地址域和帧号域。根据transfer的类型不同,数据包最大长度有所不同。


    数据包结构
    C.握手包

    握手包有四种可选:

    • ACK: 传输正确完成
    • NAK: 设备暂时没有准备好接收数据,或没有准备好发送数据
    • STALL: 设备不能用于传输
    • NYET/ERR: 仅用于高速传输,设备没有准备好或出错

    握手包仅有PID域。


    握手包结构

    3 事务transaction

    事务可以分成三类

    • setup事务:主机用来向设备发送控制命令
    • 数据输入事务:主机用来从设备读取数据
    • 数据输出事务:主机用来向设备发送数据

    事务组成:Token packet + Data packet + 可选的Handshake packet

    4 传输transfer

    USB协议定义了四种传输类型:控制传输(Control transfer)、大容量数据传输(Bulk transfer)、同步传输(Isochronous transfer)和中断传输(Interrupt transfer)。

    传输类型 特点 应用场景
    控制传输 非周期性,突发 命令和状态的传输
    大容量传输 非周期性,突发 数据可以占用任意带宽,容忍延迟
    同步传输 周期性 持续性传输,传输与时效相关的信息,并且在数据中保存时间戳的信息
    同步传输 周期性,低频率 允许有延迟的通信
    A.大容量传输 bulk transfer
    bulk transfer流程图

    图中一个方框表示一个 Packet,灰色的包表示主机发出的包,白色的包表示Device 发出的包。批量传输是可靠的传输,需要握手包来表明传输的结果。若数据量比较大,将采用多次批量事务传输来完成全部数据的传输,传输过程中数据包的PID 按照 DATA0-DATA1-DATA0-…的方式翻转,以保证发送端和接收端的同步。
    一次批量传输( Transfer)由 1 次到多次批量事务传输( Transaction)组成。


    bulk transfer
    B.中断传输 interrupt transfer
    interrupt transfer流程图

    中断传输在流程上除不支持 PING 之外,其他的跟批量传输是一样的。他们之间的区别也仅在于事务传输发生的端点不一样、支持的最大包长度不一样、优先级不一样等这样一些对用户来说透明的东西。
    这里所说的中断,跟硬件上的中断是不一样的,它不是由设备主动发出一个中断请求,而是由主机保证在不大于某个时间间隔内安排一次传输。
    主机在排定中断传输任务时,会根据对应中断端点描述符中指定的查询间隔发起中断传输。中断传输有较高的优先级,仅次于同步传输。


    中断传输
    C.同步传输 Isochronous transfer
    Isochronous transfer流程图

    同步传输是不可靠的传输,所以它没有握手包,也不支持 PID 翻转。主机在排定事务传输时,同步传输有最高的优先级。


    同步传输
    D.控制传输 Control transfer

    一次控制传输分为三(或两个)个阶段:建立( Setup)、 数据( DATA)(可能没有)以及状态( Status)。 每个阶段都由一次或多次事务传输组成。

    • 建立过程 setup stage
      使用一个建立事务,如下:
      control transfer的setup stage流程图
    • 数据过程 data stage
      数据过程是可选的。一个数据过程包含一笔或者多笔数据事务。数据过程的第一个数据包必须是DATA1包,然后每次正确传输一个数据包就在DATA0和DATA1之间交替。
    • 状态过程 status stage
      状态过程也是一笔批量事务。状态过程只使用DATA1包。

    设备枚举过程中各种描述符的获取以及设置地址和设置配置等,都是通过控制传输来实现的。


    控制传输

    参考资料

    相关文章

      网友评论

        本文标题:USB2.0概述及协议基础

        本文链接:https://www.haomeiwen.com/subject/iwoputtx.html