USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且操作系统中无须为每种设备提供独立的设备驱动程序,也就是说设备端的开发中不需要花费开发软件驱动的精力。这些标准的设备类包括:音频设备、人机接口设备(HID)、存储设备、打印机设备等。
但是这些标准的设备规范并不能完全涵盖所有的电子设备,市场上也有很多非标准类型的USB设备,这时就要求厂商提供单独的客户端驱动程序,这种设备就厂商自定义设备。
厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端的设备驱动程序,甚至还要开发设备应用程序。
但是什么样的设备必须用厂商自定义设备类来实现呢,这就需要开发者多多了解标准设备类都有哪些功能以及自己要开发的设备需要具备哪些功能。
厂商自定义USB设备的端点可以*地选择采用哪种传输方式(control transaction控制传输、bulk transaction批量传输、interrupt transaction中断传输、isochronous transfer实时传输),当然控制端点只能用控制传输。标准设备类可能只支持除了控制端点外的其中一种传输方式,比如前面的HID实例,除了控制端点外,只支持中断传输,而由于中断传输有其固有特点,有时并不能满足应用要求,如传输速率方面,由于决定因素在于中断时间,但中断时间最快是1ms,而批量传输可以随时发生(受带宽限制),理论上传输速率可以比中断传输快。关于这四种传输方式的特点,可以参数百合电子工作USB专题站《USB四种传输模式特点》一文。