USB通信协议——分割数据交易
图1 起始分割数据交易与完成分割数据交易的示意图
但其中,有一个例外的是,快速等时OUT数据交易。这是因其无须回传任何值,所以不必使用完全分割数据交易。而即使用户需要包含更多的数据交易来实现一个传输的工作,但分割数据交易的程序将会使得总线的时间有较佳的使用性。这是因为它们将会缩小对于低速或是全速设备用来响应所需花费的总线等待时间量。
如图1所示,在起始分割数据交易中,2.0主机会送出至起始分割令牌封包(Start-Split Token Packet,SSPLIT),其后再跟随一般的低速或是全速令牌封包(在令牌阶段中,包含2个令牌封包,SSPLIT(起始令牌)+令牌),以及指定此设备的数据封包。此时,若设各所连接的2.0集线器回传ACK或是NAK,主机就可以针对别的数据交易很自由地使用整个总线的带宽。而设各也知道至今仍未有任何的数据存在。
为了更清楚了解整个起始分割数据交易与完成分割数据交易的过程,读者可以比对图2与图3,分割数据交易IN与OUT的过程示意图。在这两个图中,包含了3个主要的传输部分,2.0主机、2.0集线器与低速或是全速的设各。因此,读者可以从这3个主要的部分来加以分析,且以图2与3所示之3个步骤来加以了解。
图2 分割数据交易(IN)过程示意图
如图2所示的第1步中,2.0主机先送出SSPLIT与IN令牌。第2步,集线器就会转换主机接收到的封包或多 个封包为适当的速度,然后将它们送至设备,以及存储如果设备有的任何响应。根据数据交易类型,设各可以回传数据、握手或是没有任何动作。对于设备部分来说,这个数据已经是以预期的低速或是全速来处理的,且不知这是已被分割过的数据交易。此时,主机仍未收到任何设备的响应。当集线器已经完成了与设各的数据交易的工作后,紧接着,主机可以开始另外的总线传输工作。同时,该集线器也必须加以处理。
此时对主机来说,当其认为集线器已经有足够的时间来完成与设各的数据交易后,就开始与集线器进行完成分割数据的步骤,这即是步骤3(注意到这个动作在数据交易OUT,是不需要的)。
在第3步中的完成分割数据交易中,主机会送出完成分割数据交易,其后一般再跟随低速或全速令牌封包(在令牌阶段中,包含2个令牌封包,CSPLIT(完成令牌)+令牌),来要求集线器已经从设各收到的数据或状态信息。这也可参考图2所示的下半部。集线器就会回传所要求的数据或是状态码。这将是完成数据交易的动作。如果集线器并没有准备好可以送出封包,它将会回传NYET状态码,而且主机还会再试一次。
中断与等时传输的分割数据交易的程序是类似的,但更严谨地定义其时序。而这个目标即是在设各有可使用的数据后,会尽可能立即去传输数据给主机,或是设备已经准备好新的数据之前,主机能传输数据给设各。为了达到这个目标,具有大量封包的等时数据交易可以使用多个起始分割或完成分割数据交易,来每一次传输一部分数据。
不像批量或控制传输,在中断与等时传输的起始分割数据交易不含有握手阶段。反而是在其后跟随IN、OUT或SETUP封包,以及若是OUT或SETUP封包,应再加上数据封包。
在此,对数据交易的起始分割与完成分割做个小结论(参考图2)。
·仍然包含3个(或是更少)的数据交易层(令牌、数据与握手);
·令牌阶段具有2个封包:SPLIT令牌封包与一般令牌封包;
·Start-OUT:SSPLIT(起始令牌)+令牌,数据,(握手);
·Start IN:SSPLIT(起始令牌)+令牌,(握手);
·Complete OUT:CSPLIT(完成令牌)+令牌,握手;
·Complete I
- Linux系统下USB摄像头驱动程序开发(04-25)
- 基于uClinux嵌入式系统的汽车黑匣子的设计(07-08)
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 基于WinCE的ARM视频监控系统(11-14)
- 基于LabVIEW的USB实时数据采集处理系统的实现(03-26)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)