USB的端点描述符详解-重新排版
USB的端点描述符详解
端点描述符,是描述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的端点描述符详解-重新排版相关推荐
- USB HID设备报告描述符详解
概述: 报告在这里意思是数据传输(data transfer),而报告描述符是对这些传输的数据作用途(usage)上的说明. USB通讯协议的规范是以1ms产生一个USB帧(Frame),USB设备可 ...
- (USB系列三)stm32 CubeMX usb音频描述符详解 usb audio UAC
如果需要麦克风阵列,回声消除,声源定位,波束成形,语音对话的产品请访问我好朋友的店铺. 店铺链接:首页-智能语音开发者联盟-淘宝网 大家好我是人见人爱.花见花开的大魔王. usb协议还是很烦的,cub ...
- python描述符详解_Python描述符 (descriptor) 详解
1.什么是描述符? python描述符是一个"绑定行为"的对象属性,在描述符协议中,它可以通过方法重写属性的访问.这些方法有 __get__(), __set__(), 和__de ...
- python 描述符参考文档_python 描述符详解
Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...
- python描述符详解
什么是描述符 数据描述符data descriptor和非数据描述符non-data descriptors 如何检测一个对象是不是描述符 描述符有什么用和好处 例子 总结 本文主要介绍描述符的定义, ...
- Linux文件描述符详解
文章目录 一.概念 `1.1.特点` 优点 缺点 二.手动创建文件描述符 `2.1.语法` 2.1.1.创建 2.1.2.调用 2.1.3.关闭 `2.2.重定向输出的文件描述符` `2.3.重定向输 ...
- linux系统文件描述符详解
首先我们需要知道操作系统内维护了三个系统文件表:文件描述符表(file descriptor table),打开文件表(open file table),inode table.这三个表的结构见Tab ...
- 【USB笔记】端点描述符Endpoint Descriptor
USB笔记 端点描述符 (Endpoint Descriptor) 端点描述符 (Endpoint Descriptor)描述了USB规范定义的端点信息,包含有端点的带宽等信息.每一个端点都有自己的端 ...
- USB协议详解第6讲(USB描述符-端点描述符)
目录 1.USB描述符 2.端点描述符组成 3.STM32配置描述符集合代码(必须按顺序) 4.接口描述符组成详解 1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符. ...
最新文章
- 了不起的程序员们,瞧,这是为你们准备的 2021 年度惊喜!
- 人工智能进入新的发展阶段
- python详细安装教程环境配置-python环境配置详细步骤
- 国标流媒体H5实现无插件视频监控按需直播
- jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
- IOC容器特性注入第四篇:容器初始化
- [转] 上级向的十个iOS面试问题
- Android 10系统新特性解读
- thinkphp 3.2.2 图片上传gif类型生成缩略图错误
- 【并发编程】CPU cache结构和缓存一致性(MESI协议)
- Notion Avatar Maker - 一个简单有趣的 Notion 风格头像生成器,可生成百万个免费商用的头像
- echarts饼图中间默认内容显示与data数据显示切换
- steps_per_epoch=2000,epochs=100之间的区别
- BrightlyPro - 照片视屏后期自动调色增亮工具
- burpsuit 抓取https包,证书问题,此证书已在此前安装为一个证书权威机构
- 机器学习四大数据降维方法详解
- Linux入门教程(附上demo)
- 5.4.7 延迟的心跳
- Hexo博客Next主题配置加载优化性能提升
- Jira4系列、Jira6系列破解实战