USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且操作系统中无须为每种设备提供独立的设备驱动程序,也就是说设备端的开发中不需要花费开发软件驱动的精力。这些标准的设备类包括:音频设备、人机接口设备(HID)、存储设备、打印机设备等。

  但是这些标准的设备规范并不能完全涵盖所有的电子设备,市场上也有很多非标准类型的USB设备,这时就要求厂商提供单独的客户端驱动程序,这种设备就厂商自定义设备。

  厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端的设备驱动程序,甚至还要开发设备应用程序

  但是什么样的设备必须用厂商自定义设备类来实现呢,这就需要开发者多多了解标准设备类都有哪些功能以及自己要开发的设备需要具备哪些功能。

  厂商自定义USB设备的端点可以自由地选择采用哪种传输方式(control transaction控制传输、bulk transaction批量传输、interrupt transaction中断传输、isochronous transfer实时传输),当然控制端点只能用控制传输。标准设备类可能只支持除了控制端点外的其中一种传输方式,比如前面的HID实例,除了控制端点外,只支持中断传输,而由于中断传输有其固有特点,有时并不能满足应用要求,如传输速率方面,由于决定因素在于中断时间,但中断时间最快是1ms,而批量传输可以随时发生(受带宽限制),理论上传输速率可以比中断传输快。关于这四种传输方式的特点,可以参数百合电子工作USB专题站《USB四种传输模式特点》一文。

厂商自定义USB设备类概述的更多相关文章

  1. 厂商自定义USB设备固件程序及特性

    通过前面的学习,大家应该对USB固件程序结构有了比较深的认识,现在再来详细说说固件里决定设备识别成厂商自定义USB设备的地方有哪些,或者说厂商自定义USB设备的固件特性有哪些. 之前不止一次说过学习U ...

  2. USB设备驱动概述

    USB设备驱动 ·  )USB Hub:每个USBHost控制器都会自带一个USB Hub,被称为根(Root)Hub.这个根Hub可以接子(Sub)Hub,每个Hub上挂载USB设备.一般PC有8个 ...

  3. USB 设备类协议入门【转】

    本文转载自:http://www.cnblogs.com/xidongs/archive/2011/09/26/2191616.html 一.应用场合 USB HID类是比较大的一个类,HID类设备属 ...

  4. USB设备类学习笔记

    usb audio class 版本目前有3个版本  分别是1.0,2.0,3.0:1.0针对各个厂家的设备具有不同的描述符,而2.0则将它们统一简化,3.0则是最新的,还没有与2.0作进一步比较:因 ...

  5. USB CDC类

    现代嵌入式系统中,异步串行通信接口往往作为标准外设出现在单片机和嵌入式系统中.但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失.于是嵌入式开发人员常常发 ...

  6. USB系列之一:列出你的USB设备

    USB现在已经成为PC机必不可少的接口之一,几乎所有的设备都可以接在USB设备上,USB键盘.鼠标.打印机.摄像头,还有常用的U盘等等,从本篇文章开始,将集中篇幅介绍一下在DOS中使用USB设备的方法 ...

  7. C# 上位机的USB设备拔插检测

    我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C ...

  8. USB自定义HID设备实现-LPC1768

    首先在之前鼠标的基础上修改设备描述符 #include "usbdesc.h" //usb标准设备描述符 const U8 USB_DeviceDescriptor[] = { U ...

  9. USB自定义HID设备实现-STM32

    该文档使用USB固件库,在其基础上进行了自己的定制,完成了一个USB-HID设备,首先是usb_desc.c文件,里面存放了usb各种描述符的存在 #include "usb_desc.h& ...

随机推荐

  1. #1042 - Can't get hostname for your address

    my.ini 或 my.cnf 末尾添加 skip-name-resolve 并重启MySQL服务器 ok!

  2. jQuery插件之jqzoom

    jqzoom是一款基于jQuery的图片方法插件. 使用方法:1.引入jQuery与jqzoom,jqzoom.css 2.准备两张一大一小大小相同的图片,小图片放在<img>标签的&qu ...

  3. Linux系统编程(21)——信号的产生

    1.通过终端按键产生信号 通过上一篇我们知道了SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且Core Dump,现在我们来验证一下. 首先解释什么是Core Dump ...

  4. oracle常见错误类型

    http://www.cnblogs.com/whyhappy/p/6232258.html

  5. jquery工具

    http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxsplitter/jquery-splitter-gett ...

  6. 有关Oracle cvu和cvuqdisk

    有关Oracle cvu和cvuqdisk cvu的下载链接: http://www.oracle.com/technetwork/products/clustering/downloads/cvu- ...

  7. 文件上传利器SWFUpload使用指南(转)

    http://www.cnblogs.com/2050/archive/2012/08/29/2662932.html 文件上传利器SWFUpload使用指南 SWFUpload是一个flash和js ...

  8. nginx默认虚拟主机

    server { listen 80 default_server; server_name localhost; index index.html index.htm index.php; root ...

  9. java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter

    java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast ...

  10. 基于内容的自适应变长编码[CAVLC]

    基于内容自适应的变长编码方式用于编码zigzag顺序扫描的4x4和2x2残差变换系数块. 1.编码系数个数和零序列(coeff_token): coeff_token = <TotalCoeff ...