来源:大大通【阿福的随笔】浅谈 USB Bulk 深入浅出 (1) - USB 传输模式 及 何谓 USB bulk
1. USB 传输模式有哪些
USB 是即插即用使用差动信号的装置界面,是以 端点 ( Endpoint ),做为传输装置的输出入端,透过不同的端点 ( Endpoint ) 和模式,来进行与装置的沟通,可从传输方块图来观看会比较好理解。从硬体的hot plug 通知 Host 端目前有装置连接的行为开始,到 USB波形交握,再到USB 命令沟通,取得 装置的描述符和之后如何传输规划的设定,这一切的规范都是来自 USB org 的 USB spec 所定义的。
下载链接如下:
USB 2.0 Specification | USB-IF
今天要主要是要探讨 USB Bulk 的传输架构,不过还是先从USB传输模式说明开始
USB 四种传输模式如下 :
- 控制中断传输 ( Control )
- 中断传输 ( Interrupt )
- 批量资料传输 ( Bulk )
- 同步传输 ( Isochronous )
后面会再详细说明。
1.1 方块图
传输方块图,如‘图1.1.1’( 注1 )
‘图1.1.1’( 注1 )
2. 传输模式说明
(1) 控制中断传输 ( Control ) : 一开始的 USB 命令控制,如 configuration ( 组态命令 ) ,用来取得传输速度或是设定传输速度及取得描述符… 等等,且一定是使用 Endpoint 0。因为控制传输是 USB装置一开始的命令,所以每个 USB装置一定都会有 Endpoint 0。
Full speed 控制框架为 63bytes (9 SYNC bytes, 9 PID bytes, 6 Endpoint + CRC bytes, 6 CRC bytes, 8 Setup data bytes, and a 7-byte interpacket delay (EOP, etc.))
而 High speed 框架为 173bytes
(2) 中断传输 ( Interrupt ) : 使用中断方式来做传输 ,需要设定间隔时间 ,在Full speed 最小间隔时间为 1ms ,high Speed 最小间隔时间为 125us,中断传输通常是发生事件时才传输资料,或是固定在间隔时间上传资料,例如 : 一般的 USB HID 装置,USB键盘,鼠标,或自定义的传输,虽然在中断传输时,同一个端点可以同时设定 In 和 out ,但若是端点资源充足的话,还是建议分开来设定,若是 In 因为某种原因而卡住在 Still 时,因为同一个端点 busy 所以 out也一样会卡住。( 但在程式上还是需要分时来传 )
Full speed框架为 13 bytes
High speed 框架为 55 bytes
(3) 批量资料传输 ( Bulk ) : 需要大量资料传输时使用,且一个端点只能 bulk in 或是 bulk out,批量资料传输的装置有多,例如 : USBCDC ,USB mass storage,ADB,印表机 … 等等,一般自定义的 Bulk 是需要 driver 的,或是强制指定使用 windows 内建的 driver ,但强制指定的方式,可能只能用于 底层 driver 呼叫,例如 BUS hound ,若是使用 winUSB ( winUSB.sys or winUSB.dll ) 来当 base 的 driver 来说,会碰到 Windows API 无法指定使用的问题。这时候若是不想另外找 driver 来使用的话,可以先将 USB Bulk装置 ,改写成 USB CDC ,USB mass storage 或是 ADB 已经有人写好 driver 的USB 描述符宣告方式,但是这样就会受限于目前使用的 driver 了。若是 driver没有数位签章的认证的话,可另外找有包含数位签章的 driver 或是先停用数位签章来测试 USB bulk 装置是否能正常传输。
Full speed框架为 13 bytes
High speed 框架为 55 bytes
(4) 同步传输 ( Isochronous ) : 时间同步的资料传输,需要及时资料更新时使用,规划上可大量传输,但是资料不验证,若错误也不修正,资料丢失也不重送,也没有 CRC check,但是若是接收端不允许掉资料的话,建议就不要使用此方式传输,一般是使用在有一点错误也不影响的影像与声音传输,例如 : UVC ,UAC规范的装置,常见于 USB Camera,喇叭,麦克风或耳机…等。
Full speed框架为 9 bytes
High speed 框架为 38 bytes
3 参考资料
注1 : 作者: USB ORG ( Compaq ,Hewlett-Packard ,Intel ,Lucent,Microsoft,NEC,Philips );
出处 : USB 2.0 Specification | USB-IF
登录大大通,了解更多详情,查看更多相关文章,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!