④握手(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个步骤必须符合控制传输的基本架构,第一步、第三步和第四步使用的是控制读取,第二步和第五步使用的是无数据控制。