USB的端点描述符详解

  1. 端点描述符,是描述USB通信通道或管道的类型和功能的标准USB描述符。

  • 端点描述符和接口描述符还有配置描述符一样,不能单独发送给USB主机,需要以配置描述符集合的形式发送给主机。
  • 在设备描述服务那篇文章里,我曾经提到过USB里面有一个定义叫做端点,并做了一个比较生动的比喻,我把那段话直接复制过来:
  • 向前有4个行车道(1,2,3,4),向后有4个行车道(1,2,3,4),这就是4个双向端点。假设它们都属于一条津某高速路(一个USB接口),有的向前有的向后(有的输入有的输出),有向前的1号行车道(有输出的1号端点)。

  • 所以端点描述符,就是对USB通讯中用到的端点做一个功能描述。我们看一下下面的表格:

  • 这里尽量给大家描述清楚。

  • /*1.bLength,长度,不解释。*/
  • /*2.bDescriptorTyep,描述符类型。看代码:*/
    #define USB_DESC_TYPE_DEVICE 0x01U
    #define USB_DESC_TYPE_CONFIGURATION 0x02U
    #define USB_DESC_TYPE_STRING 0x03U
    #define USB_DESC_TYPE_INTERFACE 0x04U
    #define USB_DESC_TYPE_ENDPOINT 0x05U
    #define USB_DESC_TYPE_DEVICE_QUALIFIER 0x06U
    #define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 0x07U
    #define USB_DESC_TYPE_BOS 0x0FU
  • /*3.bmAttributes,属性,这一位稍微有点复杂。如下*/
    /*Bits 1..0: Transfer Type,传输类型*/
    00 = Control-控制传输
    01 = Isochronous-等时传输
    10 = Bulk-批量传输
    11 = Interrupt-中断传输/*如果不是一个等时传输端点,第5~2位是保留的,必须设置为0。如果它是等时的,则定义如下:*/
    /*Bits 3..2: Synchronization Type-同步类型*/
    00 = No Synchronization-无同步
    01 = Asynchronous-异步
    10 = Adaptive-适配
    11 = Synchronous-同步/*Bits 5..4: Usage Type-用途*/
    00 = Data endpoint-数据端点
    01 = Feedback endpoint-反馈端点
    10 = Implicit feedback Data endpoint-暗含反馈的数据端点
    11 = Reserved-保留
  • /*4.wMaxPackeSize,端点支持的最大包长。对于等时端点,此值用于在调度中保留总线时间,这是每(微)帧数据有效负载所需的时间。在进行中,管道实际使用的带宽可能比保留的带宽少。如果有必要,设备会报告通过其正常的、非usb定义的机制所使用的实际带宽。*/
    /*对于所有的端点,bit10~bit0指定最大数据包大小(以字节为单位)。*//*5.对于高速同步和中断端点:bit12~bit11指定每个微帧的额外通信次数:*/
    00 = None (1 transaction per microframe)
    01 = 1 additional (2 per microframe)
    10 = 2 additional (3 per microframe)
    11 = Reserved/*其它位默认为0,详细信息可参考usb_20文档第5章。*/
  • /*6.bInterval,查询时间,说白了就是主机多久和设备通讯一次。根据设备运行速度以帧或微帧表示。对于全/高速等时端点,此值必须在1到16之间。bInterval值用作2的指数;例如,bInterval为4,表示周期为8, 2(4 – 1)。对于全速/低速中断端点,该字段的值可以是1到255。对于高速中断端点,使用bInterval值作为2的指数;例如,bInterval为4表示周期为8 ,2(4-1)。这个值必须在1到16之间。对于高速批量/控制输出端点,bInterval必须指定端点的最大NAK速率。值0表示端点永不NAK。其它值表示每个微帧的bInterval数最多1个NAK。这个值的范围必须在0到255之间。详细信息可参考usb_20文档第5章。*/

USB的端点描述符详解-重新排版相关推荐

  1. USB HID设备报告描述符详解

    概述: 报告在这里意思是数据传输(data transfer),而报告描述符是对这些传输的数据作用途(usage)上的说明. USB通讯协议的规范是以1ms产生一个USB帧(Frame),USB设备可 ...

  2. (USB系列三)stm32 CubeMX usb音频描述符详解 usb audio UAC

    如果需要麦克风阵列,回声消除,声源定位,波束成形,语音对话的产品请访问我好朋友的店铺. 店铺链接:首页-智能语音开发者联盟-淘宝网 大家好我是人见人爱.花见花开的大魔王. usb协议还是很烦的,cub ...

  3. python描述符详解_Python描述符 (descriptor) 详解

    1.什么是描述符? python描述符是一个"绑定行为"的对象属性,在描述符协议中,它可以通过方法重写属性的访问.这些方法有 __get__(), __set__(), 和__de ...

  4. python 描述符参考文档_python 描述符详解

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...

  5. python描述符详解

    什么是描述符 数据描述符data descriptor和非数据描述符non-data descriptors 如何检测一个对象是不是描述符 描述符有什么用和好处 例子 总结 本文主要介绍描述符的定义, ...

  6. Linux文件描述符详解

    文章目录 一.概念 `1.1.特点` 优点 缺点 二.手动创建文件描述符 `2.1.语法` 2.1.1.创建 2.1.2.调用 2.1.3.关闭 `2.2.重定向输出的文件描述符` `2.3.重定向输 ...

  7. linux系统文件描述符详解

    首先我们需要知道操作系统内维护了三个系统文件表:文件描述符表(file descriptor table),打开文件表(open file table),inode table.这三个表的结构见Tab ...

  8. 【USB笔记】端点描述符Endpoint Descriptor

    USB笔记 端点描述符 (Endpoint Descriptor) 端点描述符 (Endpoint Descriptor)描述了USB规范定义的端点信息,包含有端点的带宽等信息.每一个端点都有自己的端 ...

  9. USB协议详解第6讲(USB描述符-端点描述符)

    目录 1.USB描述符 2.端点描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符. ...

最新文章

  1. 了不起的程序员们,瞧,这是为你们准备的 2021 年度惊喜!
  2. 人工智能进入新的发展阶段
  3. python详细安装教程环境配置-python环境配置详细步骤
  4. 国标流媒体H5实现无插件视频监控按需直播
  5. jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
  6. IOC容器特性注入第四篇:容器初始化
  7. [转] 上级向的十个iOS面试问题
  8. Android 10系统新特性解读
  9. thinkphp 3.2.2 图片上传gif类型生成缩略图错误
  10. 【并发编程】CPU cache结构和缓存一致性(MESI协议)
  11. Notion Avatar Maker - 一个简单有趣的 Notion 风格头像生成器,可生成百万个免费商用的头像
  12. echarts饼图中间默认内容显示与data数据显示切换
  13. steps_per_epoch=2000,epochs=100之间的区别
  14. BrightlyPro - 照片视屏后期自动调色增亮工具
  15. burpsuit 抓取https包,证书问题,此证书已在此前安装为一个证书权威机构
  16. 机器学习四大数据降维方法详解
  17. Linux入门教程(附上demo)
  18. 5.4.7 延迟的心跳
  19. Hexo博客Next主题配置加载优化性能提升
  20. Jira4系列、Jira6系列破解实战

热门文章

  1. 2.Android 学习之虚拟机安装
  2. Error与RuntimeException
  3. 【20180202】使用iptables做MySQL的端口转发
  4. 使用移动自适应布局+easy mock实现移动界面的简单实现
  5. 使用pip安装BeautifulSoup4模块
  6. jQ中的mouseleave和mouseout的区别 模仿下拉框效果
  7. 转-Multicast server and client in Python
  8. Windows 2008活动目录的安装和卸载
  9. socket阻塞和非阻塞的区别
  10. Python + OpenCV 太好玩了,可惜你可能还不会