第2节 USB的通讯协议

时间:2023-02-20 19:54:44
http://www.eefocus.com/html/09-01/63739s.shtml

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

第2节 USB的通讯协议

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

第2节 USB的通讯协议

各种封包的类型与规范

第2节 USB的通讯协议


3、数据字段是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而各不相同。并非所有的USB包都必须有数据字段,例如握手包、专用包和SOF令牌包就没有数据字段。在USB包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是首先传输字节的最低位,最后传输字节的最高位。
4、CRC字段由不同数目的位所组成。其中重要的数据封包采用CRC16的数据域(16个位),而其余的封包类型则采用CRC5的数据域(5个位)。
5、包结尾字段即发送方在包的结尾发出包结尾信号。它表现为差分线路的两根数据线保持2比特低位时间和1比特空闲位时间。USB主机根据EOP判断数据包的结束。

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

第2节 USB的通讯协议

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

第2节 USB的通讯协议

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

第2节 USB的通讯协议

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

第2节 USB的通讯协议

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

第2节 USB的通讯协议

14.2.3 事务
事务处理(Transaction):在USB上数据信息的一次接收或发送的处理过程。
(1)输入(IN)事务处理
输入事务处理表示USB主机从总线上的某个USB设备接收一个数据包的过程。
①正常的输入事务处理

第2节 USB的通讯协议

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

第2节 USB的通讯协议

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

第2节 USB的通讯协议

(2)输出(OUT)事务处理
①正常的输出事务处理

第2节 USB的通讯协议


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

第2节 USB的通讯协议


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

第2节 USB的通讯协议


(3)设置(SETUP)事务处理
①正常的设置事务处理

第2节 USB的通讯协议


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

第2节 USB的通讯协议


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

第2节 USB的通讯协议第2节 USB的通讯协议

(4)帧起始(SOF)事务处理
(5)帧结束(EOF)事务处理

14.2.4 控制传输
在USB的传输中,制定了4种传输类型:控制传输、中断传输、批量传输以及等时传输。
控制传输是USB传输中最重要的传输。它包含3种类型:控制读取、控制写入以及无数据控制。这3种控制传输类型又分为2~3个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。
阶段一:设置阶段
主机从USB设备获取配置信息,并设置设备的配置值。
设置阶段的数据交换包含了SETUP令牌封包、紧随其后的DATA0数据封包以及ACK握手封包。它的作用是执行一个设置(概念含糊)的数据交换,并定义此控制传输的内容。

阶段二:数据传输阶段

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

第2节 USB的通讯协议

阶段三:状态阶段
状态阶段用来表示整个传输的过程已完全结束。
状态阶段传输的方向必须与数据阶段的方向相反,即原来是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个步骤必须符合控制传输的基本架构,第一步、第三步和第四步使用的是控制读取,第二步和第五步使用的是无数据控制。