1.控制传输:
双向传输最为靠谱的传输就是控制传输,一次控制传输划分成三个阶段。第一阶段是从HOST到Device的SETUP办公传输,这一阶段指定了本次控制传输的请求类型
第二个阶段是数据阶段,当然也有一些请求没有数据阶段;第三个阶段是状态阶段,通过一次IN/OUT传输表明请求是否成功。
控制传输是通过控制管道在应用软件和Device的控制端之间进行的,控制传输过程中传输的数据有格式定义,USB设备和主机可以根据格式定义分析获得的数据意义。
其他三种传输类型都没有格式定义。
控制传输对最大包的长度有特定的要求。高速设备的值为64Byte的低速设备的值为8的全速设备可以是8、16、32或64。
最大包长表示一个端点一次性接收/发送数据的能力,实际反应的是该端点对应的Buffer的大小。Buffer越大,一次可以接收/发送的数据包越大,反之亦然。
当数据通过一个端点传输时,如果数据的大小超过该端点的最大包的长度,则需要将数据分成几个包进行传输,并要求所有包的长度与最大包的长度相等。
也就是说,如果一个端点收到/发送一个长度低于最大包长度的包,这意味着数据传输已经结束。
控制传输在访问总线时也受到限制。
(1).高速端点的控制传输不得占微框架的20%以上,全速和低速不得超过10%。
(2).一帧内有多馀的未使用时间,无同步和中断传输,可用于控制传输。
2.中断传输:
中断传输是轮询的传输方式,属于单向传输。HOST通过固定间隔查询中断端点,如果有数据传输或可以接收数据,则返回数据或发送数据,否则返回NAK,表示尚未准备好。
中断传输的延迟有保证,但不是实时传输,而是延迟有限的靠谱传输,支持错误的再传输。
高速中断传输不得占80%以上的微帧时间,全速和低速不得超过90%。
对于高速/全速/低速端点,最大包的长度可达1024/64/8Bytes。
中断端点的轮询间隔由端点描述符定义,全速端点的轮询间隔为1~255mS,低速端点为10~255mS,高速端点为(2interval-1)*125uS,其中interval取1~16之间的值。
除了高速高带宽中断端点外,一个微框架内只允许一次中断办公传输,高速高带宽端点最多可以在一个微框架内进行三次中断办公传输,传输高达3072字节的数据。
单向传输不是指该传输只支持一个方向的传输,而是指在某个端点上该传输只支持一个方向、输出或输入。如果需要在两个方向进行某个单向传输,则需要占用两个端点
分别配置在不同的方向,可以有相同的端点编号。
3.批量传输:
批量传输是靠谱的单向传输,但延迟没有保证,尽量利用可利用的带宽完成传输,适用于数据量较大的传输。
低速USB设备是不支持批量传输,高速批量端点的最大包长为512,全速批量端点的最大包长为8、16、32、64。
批量传输在访问USB公交时,相对于其他传输类型具有最低的优先级,USBHOST总是优先安排其他类型的传输,公交带宽富馀时安排批量传输。
高速批量端点应支持PING操作,并向主机报告端点状态,NYET表示否认响应,未准备接收下一个数据包,ACK表示肯定响应,已准备接收下一个数据包。
4.同步传输:
同步传输是实时、不靠谱的传输,不支持错误的再传输机制。只有高速和全速端点支持同步传输,高速同步端点最大包长1024,低速1023。
除高速高带宽同步端点外,一个微帧内只允许一次同步办公传输,高速高带宽端点最多可在一个微帧内进行三次同步办公传输,传输高达3072字节的数据。
全速同步传输不得占帧时间的80%以上,高速同步传输不得占帧时间的90%以上。同步端点的访问也和中断端点一样,有固定的时间间隔限制。
主机控制器和USBHUB之间还有另一种传输-分离传输(SplitTransaction),只在主机控制器和HUB之间执行,通过分离传输,可以将全速/低速设备连接到高速主机。
5.分离传输:
顾名思义,将完整的事务传输分为两个事务传输。其起点是高速传输和全速/低速传输的速度不同,使用完整的事务传输的话,一定会产生比较长的等待时间
同时分离传输对USB设备是透明的,看不见的。
降低高速USB巴士的利用率。是将一次传输分为两部分,将代币(和数据)的传输和应答数据(和握手)的传输分开,在中间插入其他高速传输,利于提高巴士的利用率。