快速入门USB2.0协议

时间:2024-04-02 09:43:40

一:常用术语和缩写

    ACK:表示肯定应答的握手包                CRC:循环冗余校验

    EOF:帧结束                                         EOP:包结束

    SOF:帧开始                                         SOP:包开始

    TRP:I/O请求包                                    IRQ :中断请求

    LOA:丢失总线活动                              LSB:最低字节

    MSB:最高字节                                    NAK:握手包

    PID:包ID                                             POR:上电复位

二:USB2.0理论速度

    高速:480Mb/s

    全速:12Mb/s

    低速:1.2Mb/s

三:检测设备连接

     当D+、D-上出现(VCC*15/(15+1.5))的电压时主机就会知道有设备连接了。

快速入门USB2.0协议

四:通讯协议

    1:包(Packet),包是USB系统传输的基本单元,包的组成部分如下

快速入门USB2.0协议

        SYNC:由八位组成,用来产生同步作用,固定为0000 0001。

        PID:包的类型,前四字节表示PID编码,后四字节表示对前四字节的每位取反,就是校验码。 快速入门USB2.0协议

        数据字段:用来传输主机与设备之间的信息,其长度内容非固定不变。在总线传输中首先传输字节的最低位。

            (1)ADDR数据域:由七位组成,可寻址最多127个外围设备

            (2)ENDP端点数据域:由四位组成最多可寻址32个端点,此端点数据域紧用在IN,OUT和 SETUP令牌信息包中。

            (3)帧***:当USB令牌包的PID为SOF时,其数据字段必须为11位的帧***,帧***由主机产生,且每个数据                        帧自动加一,最大数值为0x7fff,当溢出时将自动从零开始计算循环。

            (4)数据:存于DATA包内,不同传输类型拥有不同的字节大小,0到1023字节(实时传输)

        CRC字段: 判断数据在传输过程中是否产生错误,不同包类型的CRC字段是不一样长的,数据信息采用CRC16,其余的包          采用CRC5.

        EOP包结束:每个包的结束标志

1.1:令牌包

     主机才能发出令牌包,令牌包定义了数据的传输类型,他是事务处理的第一阶段,令牌包中较为重要的是SETUP,IN和OUT这三个令牌包。令牌包格式如下。

快速入门USB2.0协议1.2:数据包

        数据封包含有4个域:SYNC,PID,DATA,CRC16。DATA数据域的位值是根据USB设备的传输速度及传输类型而定,且许以8字节为基本单位,

快速入门USB2.0协议

 1.3:握手包

          握手信息包是最简单信息包类型。在这个包中仅包含一个PID数据域而已,

快速入门USB2.0协议

 

五:事务

        USB的数据的一次接收或发送的处理过程称为事务处理。事务处理包括IN,OUT,SETUP,帧开始,帧结尾等事务类型。

快速入门USB2.0协议

 1:IN事务处理

        表示主机从设备接收一个数据包的过程。

1.1:正常IN事务处理快速入门USB2.0协议

1.2:繁忙IN事务处理 

快速入门USB2.0协议

 1.3:出错IN事务处理

 

快速入门USB2.0协议

 2:OUT事务处理过程,SETUP事务处理与OUT事务处理是一样的方式

2.1:正常OUT事务处理快速入门USB2.0协议

 2.2:繁忙OUT事务处理

快速入门USB2.0协议

 2.3:出错OUT事务处理

快速入门USB2.0协议

 六:传输类型

        在USB传输中有四种传输类型:控制传输,中断传输,批量传输,同步传输。

1:控制传输

        控制传输类型分为3个阶段:设置阶段,数据阶段,和状态阶段。根据数据阶段的数据传输方向又可分为三种类型:控制读取“读取USB描述符”,控制写入“配置USB设备”,及无数据操作。

1.1:设置阶段

        主机从USB设备中获取配置信息,并设置设备的配置值。设置阶段的数据交互包含了SETUP令牌封包,其后的DATA0封包以及ACK握手封包。

1.2:数据传输阶段

快速入门USB2.0协议 1.3:状态阶段

        状态阶段用来表示整个传输过程的结束,状态阶段传输的方向必须与数据阶段的方向相反。

2:同步传输

        实时传输适用于必须以固定速率抵达或在指定时刻抵达,一般用于麦克风,喇叭等设备。实时传输只需要令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传。

3:批量传输

        用于传输大量数据,要求传输不能出错,对时间没有要求,常用于打印机,存储设备等。

4:中断传输

        中断传输方式总是用于对设备的查询,以确定是否有数据要传输。因此中断传输的方向总是从USB设备到主机。 

七:设备列举

        USB描述符详细记录外围USB设备相关的一切信息。为了描述不同数据,就需要不同的USB描述符。

1:设备描述符

        设备描述符具有18个字节,并且是主机向设备请求的第一个描述符。

 

快速入门USB2.0协议

 2:配置描述符

 快速入门USB2.0协议

 3:接口描述符

快速入门USB2.0协议

 4:端点描述符

 快速入门USB2.0协议

 八:设备请求

        几个主要的设备请求有:清除请求(ClearFeature),获得描述符(GetDescriptor),设置地址(SetAddress),设置状态(SetConfiguration)。

 快速入门USB2.0协议

 

设备请求

快速入门USB2.0协议

 

1:ClearFeature

        该请求格式如上图所示,wValue表示特性选择器,他对应的值位:0=端点,1=设备。当某个特性不允许取消,或该特性不存在,或指向一个不存在的接口或端点时,该请求会导致设备请求失败。如果端点被固件设置为停止状态。主机可发送一个值为0的clear_feature命令清除该端点的停止状态。

2:GetDescriptor

        该请求可以取得USB设备中存在的特定描述符,wValue的高字节表示要取得描述符类型,低字节表示描述符的索引值。

3:SetAddress

        请求给USB设备设置地址,从而可以对USB设备进行进一步访问,该请求下,USB设备一直不改变他的地址,直到该请求的状态阶段成功的完成,而其他请求操作都是在状态阶段之前完成的,若设备地址大于127,或者wIndex或wLength为非0值,该请求不执行。

4:SetConfiguration

        该请求对设备进行设置,该请求中wValue的低字节表示设置的值,该值必须为0或者与配置描述符中的配置值相匹配。

5:设备列举

主机通过USB设备请求来取得设备描述符并对该设备进行配置。可以简化为5步:

(1)使用预设地址0取得设备描述符。

(2)设置设备新地址

(3)使用新地址取得设备描述符。

(4)取得配置描述符

(5)设置配置描述符

设备列举使用的是控制传输,1,3,4步使用的控制读取。2,5步使用的无数据控制。

 

USB 2.0中文手册:https://download.csdn.net/download/qq_36573222/12391778