1. 控制传输:
控制传输是一种可靠的双向传输,一次控制传输可分为三个阶段。阶段为从HOST到Device的SETUP事务传输,这个阶段指定了此次控制传输的请求类型;
第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次IN/OUT 传输表明请求是否成功完成。
控制传输通过控制管道在应用软件和 Device的控制端点之间进行,控制传输过程中传输的数据是有格式定义的,USB 设备或主机可根据格式定义解析获得的数据含义。
其他三种传输类型都没有格式定义。
控制传输对于包长度有固定的要求。对于高速设备该值为64Byte;对于低速设备该值为 8;全速设备可以是 8或 16或 32或 64。
包长度表征了一个端点单次接收/发送数据的能力,实际上反应的是该端点对应的Buffer 的大小。Buffer越大,单次可接收/发送的数据包越大,亦反。
当通过一个端点进行数据传输时, 若数据的大小超过该端点的包长度时,需要将数据分成若干个数据包传输,并且要求除一个包外,所有的包长度均等于该包长度。
这也就是说如果一个端点收到/发送了一个长度小于包长度的包,即意味着数据传输结束。
控制传输在访问总线时也受到一些限制,如:
a.高速端点的控制传输不能占用超过 20%的微帧,全速和低速的则不能超过 10%。
b.在一帧内如果有多余的未用时间,并且没有同步和中断传输,可以用来进行控制传输。