在USB总线接口协议中,规定了一些标准的USB描述符,如表所示。

对于USB设备来说,有些USB描述符是必需的,例如:

  • 设备描述符
  • 配置描述符
  • 字符串描述符
  • 接口描述符
  • 端点描述符

其余一些描述符并非必需,只在特定USB设备中使用,例如:设备限定描述符、其他速率配置描述符用于高速USB设备;OTG设备描述符用于USB OTG外设;超高速端点伴侣描述符用于超高速USB设备。

USB描述符其实就是一个数据集合,用来表征USB设备某一方面的功能。USB协议中严格规定了每一种描述符的数据格式。各个USB描述符均由一系列具有固定排列顺序的字段构成。通常来说,bLength为第一个字段,表示该描述符的长度;bDescriptorType为第二个字段,表示该描述符的类型。在描述符的定义中,往往采用特定的前缀字符来表示该字符的类型和长度,包括以下几类:

  • 前缀字符b:表示一个字节(8Bits);
  • 前缀字符w:表示一个字(16Bits);
  • 前缀字符bm:表示按位寻址;
  • 前缀字符bcd:表示采用二进制编码的十进制数;
  • 前缀字符i:表示索引值;
  • 前缀字符id:表示标识码;

// USB描述符是学习USB开发所必须首要掌握的。


相关资源连接:

http://www.usb.org/home

http://www.beyondlogic.org/usbnutshell/usb1.shtml

http://www.usbmadesimple.co.uk/index.html

http://www.ti.com/lit/ug/sprufm8/sprufm8.pdf

http://www.crifan.com/files/doc/docbook/usb_basic/release/htmls/index.html

USB描述符概述的更多相关文章

  1. USB 描述符

    标准的USB设备有5种USB描述符:设备描述符,配置描述符,字符串描述符,接口描述符,端点描述符. // Standard Device Descriptor typedef struct { u8 ...

  2. USB描述符解析-->枚举.

    枚举可以理解为主机按不定的顺序向USB设备讨要设备信息,好给它分配资源,若枚举不成功,就放弃分配资源,免得浪费资源.一般都是使用中断传输方式通信. 常用的描述符有以下几种:01H.设备描述符  02H ...

  3. usb描述符简述(二)

    title: usb描述符简述 tags: linux date: 2018/12/18/ 18:25:23 toc: true --- usb描述符简述 转载自cnblog 具体描述符 https: ...

  4. USB学习笔记连载(十二):USB描述符

    USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.H ...

  5. 2.6 USB摄像头驱动之USB描述符

    学习目标:分析USB摄像头驱动的描述符: 一.USB设备描述符 在usb设备驱动分析那一节,也用到了usb描述符. usb描述符可分为: USB设备描述符(usb_device_descriptor) ...

  6. USB描述符【整理】

    USB描述符 USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主 ...

  7. USB描述符(转)

    //============================================================================// 文件名: USBDESC.C// 用 ...

  8. 文件锁及其实例,底层文件I/O操作,基本文件操作和实例,Linux中文件及文件描述符概述

    http://blog.csdn.net/rl529014/article/details/51336161 http://blog.csdn.net/rl529014/article/details ...

  9. 自己总结的USB数据结构及其描述符

    背景: USB理论知识光看着空想总觉着丢三落四,好像哪里没法理解到位,自己做个总结. 正文: 1. USB通信的最基本单位是“包”.如果把“包”肢解的话,可以分为各种“域”(7类,即一串二进制数.每类 ...

随机推荐

  1. Centos 下搭建SVN + Apache 服务器(转载)

    安装软件包 ? 1 # yum install httpd ? 1 # yum install mod_dav_svn ? 1 # yum install subversion 2.  验证安装 ? ...

  2. 类成员函数作为pthread_create函数参数

    from:http://www.cnblogs.com/shijingxiang/articles/5389294.html 近日需要将线程池封装成C++类,类名为Threadpool.在类的成员函数 ...

  3. node cheerio

    所谓工欲善其事,必先利其器,所以通读了cheerio的API,顺便翻译了一遍,有些地方因为知道的比较少,不知道什么意思,保留了英文,希望各位不吝告诉我,然后一起把这个翻译完成. ###cheerio ...

  4. cmd打开控制面板及其他命令

    如果你在权限较小的域用户的机器上,要做一些管理操作,就不可避免的要使用cmd打开一些以前只能在图形界面里打开的程序.下面是我收集的一些常用操作. 以某个身份启动程序:runas /user:it\n1 ...

  5. java程序(一)----HashMap同时获取键值

    快速会用: HashMap<Integer,String> maps=new HashMap<Integer,String>(); maps.put(1,"xiaom ...

  6. 从python中copy与deepcopy的区别看python引用

    讨论copy与deepcopy的区别这个问题要先搞清楚python中的引用.python的内存管理. python中的一切事物皆为对象,并且规定参数的传递都是对象的引用.可能这样说听起来比较难懂,对比 ...

  7. Java 时间、日期类

    1. System类 currentTimeMillis():返回当前时间的long型值.此long值是从1970年1月1日0点0分00秒开始到当前的毫秒数. 此方法常用来计算时间差. 2. Date ...

  8. IT公司100题-19-求Fibonacci数列

    问题描述: 定义Fibonacci数列的定义如下:          /    0                           n=0f(n)=      1                  ...

  9. UIKit-3347.44.2/UICollectionView.m:3443

    Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewC ...

  10. 《JAVA学习笔记(1---13-4)》

    [1]问题: 1.什么叫做面向过程? 2.什么叫做面向对象? 解答: 1: 所谓的面向过程就是我们是一个执行者,我们要开发一个项目,这个项目要求要实现很多功能,作为执行者的我们就需要 去一个一个的找这 ...