批量传输是一种可靠的单向传输,但延迟没有保证,它尽可能利用能够利用的带宽来完成传输,适合数据量比较大的传输。
中断传输是一种轮询的传输方式,是一种单向的传输,HOST 经过固定的间隔对中断端点进行查询,如有数据传输或能够接收数据则返回数据或发送数据,不然返回NAK,表示还没有准备好。中断传输的延迟有保证,但并不是实时传输,它是一种延迟有限的可靠传输,支持错误重传。html 中断端点的轮询间隔由在端点描述符中定义,全速端点的轮询间隔能够是1~255mS,低速端点为10~255mS,高速端点为(2^interval-1)*125uS,其中interval 取1到16 之间的值。函数 他们之间的区别也仅在于事务传输发生的端点不同、支持的最大包长度不同、优先级不同等这样一些对用户来讲透明的东西。post
批量传输和中断传输在数据处理上是彻底同样的,不一样的地方就在于事务的调度上,以及端点最大包长以及是否支持批量端点等。
http://blog.chinaunix.net/uid-28320320-id-3415354.html
USB是共享总线,若是在USB HUB上有多个设备同时进行大数据量传输。例如设备A在传输4MB的数据,那么设备B在设备A数据传输期间有可能得不到响应。如何保证设备B在其它设备传输数据时也能及时获得响应?设备B能够设立中断传输端口,这样Host Controller会每隔必定的时间间隔(例如1ms),保证向设备B发出IN令牌,使得B有机会发出数据。
因此中断传输的数据量不能太大,在USB 1.1中最多只能16 bytes.
USB 2.0的协议做了一些修改,中断传输与Bulk传输的区别不大,数据量的限制也没有了。不过,中断传输的上述机制仍是在的。
若是USB的host controller老是被一个设备独占,那也就没有中断传输与Bulk传输的区别了。
|