USB3.0协议规范中文解读 - 图文 下载本文

详细参考8.11的主机与设备的TP 应答。

当端点在流控制条件中,它应该发送一个ERDY TP使自己进入活动状态。而且,如果端点是IN端点,那么它应该一直等待,直到它在能发送ERDY TP之前,为它发送的最后一个DP收到ACK TP。当端点不在一个流控制条件中,它不应该发送一个ERDY TP,除非端点是支持流的块端点。注意主机能重新开始到任何端点的事务处理——甚至端点在返回一个流控制应答以后还没有返回ERDY TP。

8.10.2 Burst Transactions(突发事务处理)

只要设备能够接收数据,超速USB协议就允许主机连续发送数据给一个设备或者 只要设备能够发送数据,主机就连续能从设备接受数据。设备端点能不需ACK而一次发送或者接受数据包数量(burst size)被记录在设备的endpoint companion descriptor中。在端点最大突发大小中记录的值为不止一个包(最大突发尺寸大于1),则被认为能支持“突发”事务处理。(如果突发大小为1,则意义为发送一个数据包而不需要ACK应答,这相当于没有突发,还是发送每个数据包后要发送ACK TP) 下面的规则适用于突发: ·在收到ACK之前能在突发中发送的最大包数 被限制于 端点的最大突发大小 加上 端点或主机收到最后一个ACK TP包的NumP域的值,减去在被最后一个ACK TP包应答之后端点或主机已经发送的包数。

(收到一个ACK之前一次突发中能被发送的最大包数 <= 端点的最大突发大小 + 收到的最后一个ACK TP包的NumP域值 — 在被最后一个ACK TP包应答的包之后已经发送的包数)

·在突发中的每个包都要有一个最大数据包尺寸的数据负载。仅仅在一次突发的最后一个包的大小能比描述符中记录的最大数据包尺寸小(类似于USB2.0)。如果最后一个包较小,则对于短包的相同规则也适用一个在一次突发结尾的短包(参考8..10.3短包)。 ·只要ACK TP包的NumP域值不为0,突发传输事务就能持续,每个包都有最大包尺寸大小的数据负载。

· 只要主机或者设备想要持续接受数据, NumP域值能在任何时候通过主机或者设备发送ACK TP包来增加。仅仅要求是NumP域值不能比设备支持的最大突发尺寸大。 ·如果设备或者主机发送一个NumP域值减少的ACK TP包,那么减少的值不能比1大. 例如,如果前一个ACK TP包NumP域值为5,那么对下一个收到的包的ACK TP的NumP域值不应该比4小,只有下面的情况除外:

-----如果设备能够接受数据但是不能再接收更多的数据了,则它应该发送一个NumP域值设为0的ACK TP包。

-----主机应该发送一个NumP域值设为0的ACK TP包作为设备发送一个带有EOB域值被置位的DP包或者是短包的的应答。

但是,如果主机收到一个短包,主机还需要在同一个端点上开始另外一次传输,那么主机可以发送一条NumP域值为非零值的ACK TP包来替代发送一个为0的ACK TP包。

8.10.3 短包

超速保持USB2.0支持的短包功能。当设备或主机收到数据长度区域比端点最大包尺寸小的DP,则它应该认为传输完成了。

在IN传输中,设备应该在发送一个短包DP后,停止发送DPs。主机应该用一个

37

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中的数据长度不与实际数据长度相符

38

8.11.3 设备对从主机那收到数据应答

设备对块,控制和中断端点从主机收到的数据的TP应答在Table 8-27先表示。如果有一个不正确的设备地址,端点号或方向,则一个DPH被当作无效的。DPP错误可能由下面一个或多个导致:

·CRC不正确 ·DPP终止 ·DPP丢失

·DPH中的数据长度不与实际数据长度相符

注意:ACK TP的接收是向主机指示前一个顺序号的DP被设备成功接收,也指示设备还能够接收主机将要发送DPs的有效的数据包的缓存数(NumP域指示)。设备应该为每个DP发送一个ACK TP.

39

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中的数据长度域实际数据长度不符

40