您的位置:首页 > 其它

第2节 USB的通讯协议

2012-09-05 11:52 239 查看
http://www.eefocus.com/html/09-01/63739s.shtml

事务 输出

14.2.1


包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),包的基本格式如下图:



1、SYNC字段由8位组成,作为每个数据封包的前导,用来产生同步作用,使USB设备与总线的包传输率同步,它的数值固定为00000001。

2、PID字段用来表示数据封包的类型。PID字段如下图所示:



各种封包的类型与规范



3、数据字段是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而各不相同。并非所有的USB包都必须有数据字段,例如握手包、专用包和SOF令牌包就没有数据字段。在USB包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是首先传输字节的最低位,最后传输字节的最高位。

4、CRC字段由不同数目的位所组成。其中重要的数据封包采用CRC16的数据域(16个位),而其余的封包类型则采用CRC5的数据域(5个位)。

5、包结尾字段即发送方在包的结尾发出包结尾信号。它表现为差分线路的两根数据线保持2比特低位时间和1比特空闲位时间。USB主机根据EOP判断数据包的结束。

14.2.2
封包格式

①起始(SOF)封包

SOF封包属于令牌封包的一种,但具有独自的PID类型名:SOF。这个封包常用于等时传输,并不应用于低速设备。格式如下:



②令牌(token)封包

由于USB的数据交换是由PC主机端所激活的,所以在每一个数据交换中必须以SYNC、PID、ADDR、ENDP与CRC5这5个数据域组合而成的令牌封包为起始。格式如下:



③数据(data)封包

数据封包含有4个域:SYNC、PID、DATA与CRC16。DATA数据域的位值是根据USB设备的传输速度及传输类型而定,且须以8字节为基本单位。也就是,若传输的数据不足8字节,或传输到最后所剩余的也不足8字节,仍须传输8字节的数据域。格式如下:





④握手(Handshake)封包

握手封包仅包含SYNC和一个PID数据域,格式如下:



⑤特殊(special)封包

PRE是主机从高速传输变成低速传输时送来的封包。格式如下:



14.2.3
事务

事务处理(Transaction):在USB上数据信息的一次接收或发送的处理过程。

(1)输入(IN)事务处理

输入事务处理表示USB主机从总线上的某个USB设备接收一个数据包的过程。

①正常的输入事务处理



②设备忙时的输入事务处理



③设备出错时的输入事务处理



(2)输出(OUT)事务处理

①正常的输出事务处理



②设备忙时的输出事务处理



③设备出错时的输入事务处理



(3)设置(SETUP)事务处理

①正常的设置事务处理



②设备忙时的设置事务处理



③设备出错时的设置事务处理





(4)帧起始(SOF)事务处理

(5)帧结束(EOF)事务处理

14.2.4
控制传输

在USB的传输中,制定了4种传输类型:控制传输、中断传输、批量传输以及等时传输。

控制传输是USB传输中最重要的传输。它包含3种类型:控制读取、控制写入以及无数据控制。这3种控制传输类型又分为2~3个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。

阶段一:设置阶段

主机从USB设备获取配置信息,并设置设备的配置值。

设置阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输的内容。

阶段二:数据传输阶段

数据传输阶段用来传输主机与设备之间的数据。控制读取——将数据从设备移到主机上;控制写入——将数据从主机传到设备上。



阶段三:状态阶段

状态阶段用来表示整个传输的过程已完全结束。

状态阶段传输的方向必须与数据阶段的方向相反,即原来是IN令牌封包,这个阶段应为OUT令牌封包;反之,原来是OUT令牌封包,这个阶段应为IN令牌封包。对于控制读取而言,主机会送出OUT令牌封包,其后再跟着0长度的DATA1封包。而此时,设备也会做出相对应的动作,送ACK握手封包、NAK握手封包或STALL握手封包。相对地对于控制写入传输,主机会送出IN令牌封包,然后设备送出表示完成状态阶段的0长度的DATA1封包,主机再做出相对应的动作:送ACK握手封包、NAK握手封包或STALL握手封包。

14.2.5
设备列举

(1)设备描述符

USB描述符就好像是USB外围设备的“身份证”一样,详细地记录着外围设备相关的一切信息。为了描述不同的数据,就需以不同类型的USB描述符来加以描述,它共有以下几种类型:

①设备描述符 ②配置描述符

③接口描述符 ④端点描述符

(2)USB设备请求

在USB接口的通信协议中,由于主机是取得绝对的主控权,因此,主机与设备之间就必须遵循某种已沟通的特定命令格式,以达到通信的目的。而这个命令格式就是USB规范书中所制定的“设备请求”。

数据请求的数据格式内容



几个主要的设备请求

①Clear Feature ②Get Descriptor

③Set Address ④Set Configuration

(3)设备列举

设备列举可以简单地概括为这样的一个过程:主机通过USB设备请求来取得设备描述符并对该设备进行配置。该过程可以简化为如下5个步骤:

第一步,使用预设的地址0取得设备描述符。

第二步,设置设备的新地址。

第三步,使用新地址取得设备描述符。

第四步,取得配置描述符。

第五步,设置配置描述符。

设备列举使用的是控制传输。上述的5个步骤必须符合控制传输的基本架构,第一步、第三步和第四步使用的是控制读取,第二步和第五步使用的是无数据控制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: