USB通信协议——分割数据交易
中断与等时传输的分割数据交易的程序是类似的,但更严谨地定义其时序。而这个目标即是在设各有可使用的数据后,会尽可能立即去传输数据给主机,或是设备已经准备好新的数据之前,主机能传输数据给设各。为了达到这个目标,具有大量封包的等时数据交易可以使用多个起始分割或完成分割数据交易,来每一次传输一部分数据。
不像批量或控制传输,在中断与等时传输的起始分割数据交易不含有握手阶段。反而是在其后跟随IN、OUT或SETUP封包,以及若是OUT或SETUP封包,应再加上数据封包。
在此,对数据交易的起始分割与完成分割做个小结论(参考图2)。
·仍然包含3个(或是更少)的数据交易层(令牌、数据与握手);
·令牌阶段具有2个封包:SPLIT令牌封包与一般令牌封包;
·Start-OUT:SSPLIT(起始令牌)+令牌,数据,(握手);
·Start IN:SSPLIT(起始令牌)+令牌,(握手);
·Complete OUT:CSPLIT(完成令牌)+令牌,握手;
·Complete IN:CSPLIT(完成令牌)+令牌,{数据),握手。
如图2所示,在等时IN数据交易中,当主机知道设各将会有部分数据要回传时,就会在每一个微帧安排完成分割数据交易的工作。这种以较小量来要求数据的方式,可以确保主机尽可能快速地接收到数据。这样主机就不必等待从设备以全速传输的所有数据。
此外,如图3所示,在等时OUT数据交易中,主机会以一个或是更多的起始分割数据交易来送出数据。主机会安排这些数据交易的程序,如此集线器的缓冲区将不曾是空的,且会尽可能包含一些字节。在每一个SPLIT封包中,包含了用来表示其在低速或全速数据封包的数据位置的许多位。读者也可以发现这个OUT数据交易不含完成分割数据交易的程序。
图3 分割数据交易(OUT)过程示意图
表比较了在不同的总线速度下,低速与全速设各所具有的数据交易的结构与内容。其中,列出了当低速或全速设各在高速总线上有一个数据交易,且主机在这些设各与USB 2.0主机集线器之间使用了起始分割数据交易(SSPLIT)以及完成分割数据交易(CSPLIT)时,中间的集线器就负责将低速或全速加以完成分割,并且回报给主机。
表 不同的总线下,低速与全速设备所具有的数据交易的结构与内容
评论