外,setup包总是使用数据顺序号0。设备收到setup包会以在Section 8.11.4中定义的应答。在主机和设备上任何控制端点之间交换的TP或DP的方向域应该被设置为0。(控制端点为双向的,所以不区分端点方向)。
注意:如果端点想要对控制传输进行流控制,则它可以返回NumP域被设为0的ACK TP作为一个SETUP包的应答。设备必须发送ERDY开始数据或状态阶段。
控制传输如果存在数据阶段的话,它由一个或多个IN/OUT事务处理组成,并且和带有突发设置为1的块传输的协议规则相同。数据阶段总是从顺序号设置为0开始。所有数据阶段的事务处理应该是在同一个方向(比如全部为IN或OUT)。在数据阶段期间要被发送的最大数据量和它的方向在setup阶段被指定了。如果数据量超过了最大包大小,数据以多个最大数据包大小发送。剩下的任何数据在最后数据包中被发送。
注意:所有的控制端点值支持突发次数为1,因此,主机一次只能对控制端点发送或接收一个包。
控制传输的状态阶段是整个控制传输流程的最后的事务处理。状态阶段事务处理通过子类型被设为STATUS的TP来确认。作为对Deferred位为0的STATUS TP的应答,设备应该发送NRDY,STALL或ACK TP。如果设备发送一个NRDY TP(收到STATUS TP后没完成状态阶段),主机再发送另外一个STATUS TP给设备之前会等待设备为控制端点发送一个ERDY TP。如果STATUS TP中的Deferred位置位,那么设备会发送一个ERDY TP向主机指示,准备完成控制传输的状态阶段了。
Figure 8-33 and Figure 8-34展示了控制读和写流程的事务处理顺序,数据顺序号值和数据包类型:
49
50