尺寸小的DP,则它应该认为传输完成了。
在IN传输中,设备应该在发送一个短包DP后,停止发送DPs。主机应该用一个NumP域为0的ACK TP对短包应答。当此端点开始另外一次传输,主机应该对设备端点安排事务。
在OUT事务中,主机可以在发送一个短包后停止发送DPs,主机在此端点开始另外一次传输时应该给设备端点安排事务。注意这为端点的一次新突发的开始。
8.11 TP 或DP应答
发送和接收设备应该返回DPs或TPs,正如Table 8-25 到Table 8-27详细描述的。注意依赖域传输类型和TP流的方向,并非所有TP被允许。
8.11.1 设备对TP请求数据的应答
Table 8-25显示了设备对块、控制和中断端点的TP请求数据的可能应答方式。如果有一个不正确的设备地址或者端点号和方向,一个TP被当作无效。
8.11.2 主机对收到设备的数据应答
Table 8-26显示了主机对块,控制和中断端点收到设备的数据的应答。主机能返回仅仅一个ACK TP。如果有一个不正确设备地址或端点号和方向一个DPH被当作无效的。在Table 8-26中,DPP错误可能由于下面一个或几个导致:
·CRC不正确 ·DPP终止 ·DPP丢失
·DPH中的数据长度不与实际数据长度相符
37
8.11.3 设备对从主机那收到数据应答
设备对块,控制和中断端点从主机收到的数据的TP应答在Table 8-27先表示。如果有一个不正确的设备地址,端点号或方向,则一个DPH被当作无效的。DPP错误可能由下面一个或多个导致:
·CRC不正确 ·DPP终止 ·DPP丢失
·DPH中的数据长度不与实际数据长度相符
注意:ACK TP的接收是向主机指示前一个顺序号的DP被设备成功接收,也指示设备还能够接收主机将要发送DPs的有效的数据包的缓存数(NumP域指示)。设备应该为每个DP发送一个ACK TP.
38
8.11.4 设备对SETUP DP的应答
SETUP DP是一种特别的DP,它通过Setup域被设置为1来认证,可被寻址到任意端点。SETUP是一种主机到设备的特别的数据事务处理,它允许主机初始化设备一条要执行的命令。收到SETUP DP的话,设备应该以Table 8-28.中的应答:
注意如果出现任何下面之一,SETUP DP应该被当作无效的; ·不正确的设备地址
·端点号和方向与端点当前配置部分不符 ·端点号没有适用于一个控制端点
·非零顺序号(SETUP DP中所有顺序号都要为0) ·数据长度没有被设置为8
在Table 8-28中,DPP错误可能由于下面一个或多个导致: ·CRC 错误 ·DPP终止 ·DPP丢失
·SETUP DPH中的数据长度域实际数据长度不符
39
8.12 TP流程
由事务处理组成的包依赖端点类型变化。有四中端点类型:块,控制,中断和同步。 8.12.1 块事务处理
块事务处理类型具有通过错误检测与重试保证无错误的在主机与设备之间传输数据的属性。块事务处理使用由TPs和DPs组成的双相事务处理。
8.12.1.1 状态机注释信息
这个区域展示详细的需要在IN和OUT管道上提出协议的主机和设备状态机制。 Figure 8-25展示了状态机的图解。
8.12.1.2 块输入事务处理 Bulk IN Transactions
当主机准备好接收块数据时,它就发送一个ACK TP给设备指示它想要的从设备得到的包顺序号与包数量。
主机应该为每个从设备收到的有效DP发送一个ACK TP。如果前一个ACK TP指示主机期待设备发送不止1个DP(依赖于TP中NumP域值),则设备不必等待ACK TP后就可以发送下一个DP给主机。ACK TP暗中用前一个被主机成功接受到的顺序号来应答最后的DP,也对设备指示下一个顺序号的DP和主机想要从设备获得的包数量。如果主机在收到DP时检测到一个错误,它应该发送一个顺序号值被设置为发生错误的第一个包顺序号的ACK TP,其retry位也要置位,即使是这个包以后的包都没有错误发生。设备需要重新发送从发生错误的那个顺序号包开始的所有DPs。
当端点初始化后(通过命令Set Configuration, Set Interface, ClearFeature (STALL) 参考 Chapter 9 命令),主机开始第一次从端点接收数据的传输,主机期待第一个DP的顺序号被设为0. 第二个被设备端点发送的DP顺序号应该被设置为1;第三个被设备发送的DP顺序号应该设为2,??直到顺序号为31,顺序号31的下一个DP的顺序号又为0. 一个设备端点保持它发送的包顺序号递增,除非它收到一个带有retry位置位的ACK TP,这指示主机不得不重新发送前一个DP。
如果主机要求从设备获得多个DPs,设备在那时刻没有那么多有效的DPs可以发送,则设备发送最后的DP应该在DPH中的EOB标志置位(因为有部分数据可以发送,所以不发送NRDY TP)。当再有数据发送时,设备要发送ERDY TP给主机。注意:如果被发送给主机的DP的数据量比端点中定义的最大包尺寸少(短包),则没有必要设备EOB标志。
当设备发送了所有被主机期待的数据时或发送了一个比最大数据包尺寸小的DP(短包)时,传输就完成了。当主机想要开始一次新的传输,它应该发送另外的期待从设备获得的下一个顺序号和DPs数量的ACK TP。例如,如果数据量比最大包尺寸小的
40