USB协议2
USB协议基础——2
标准的USB设备有6种常用的USB描述符:设备描述符、配置描述符、字符串描述符、接口描述符、端点描述符、设备限定描述符。另外,还有一种特殊的描述符称为接口关联描述符,用于将一组有关的描述符关联起来共同描述一个特定的功能。下图是USB描述符结构框图。
设备描述符指明了该设备有几个配置描述符,每个配置描述符都分别指明了该配置描述符中的接口描述符,而接口描述符指明了该接口有几个端点描述符。当主机需要获取配置描述符的时候,该配置描述符拥有的接口描述符和端点描述符会一并返回。在同一个配置描述符的多个功能,(由一个或者多个接口描述符组成)能够同时工作,但是如果USB设备存在多个配置描述符,USB主机会通过SetConfiguration()使用其中一个。
设备描述符
一个设备有且只有一个设备描述符。设备描述符描述了设备的基本属性,USB设备描述符的位域,如下表所示。
在设备描述符中只会给出这个设备所支持的配置描述符的数量,设备的配置描述符的索引从1开始,比如当设备的配置描述符有两个时,这两个配置描述符的索引分别是1和2.USB主机就是使用这个索引作为GetDescriptor(Configuration)的参数来分别获取对应的设备的配置描述符。
配置描述符
配置描述符定义了设备的一种配置信息,一个设备可以有一个或者多个配置描述符。USB配置描述符的位域如下表所示。
配置描述符包括了配置的基本信息,如该设备的接口描述符的个数、配置描述符的长度、供电属性等。配置描述符的长度(wTotalLength)描述了该配置描述符的总长度,包括该描述符本身的长度,以及配置描述符中所有接口描述符和端点描述符的总长度等等
当主机需要获取配置描述符时,该配置描述符所拥有的接口描述符和端口描述符都一并返回。
接口描述符
接口描述符位于配置描述符中,指明了某个特殊的USB类接口。接口描述符通过端点完成数据传输,实现特定类的特定功能。USB接口描述符的位域如下表所示。
端点描述符
端点描述符包括该端点地址、端点属性、支持包最大长度、传输时间间隔等。在主机获取配置描述符时,端点描述符和接口描述符一起返回。USB端点描述符的位域如下表所示。
端点描述符包括该端点地址、端点属性、支持的最大包长度、传输时间间隔等。端点地址的0-3bit代表该端点所使用的地址,第7比特代表该端点是用作输入还是输出端点。端点属性的第0和第1bit代表该端点的支持的四种传输属性。
字符串描述符
字符串描述符是可选的。如果设备不支持字符串描述符,需要将设备描述符、配置描述符、接口描述符中的字符串索引值设为0,字符串描述符用UNICODE编码。
主机获得设备的某个字符串描述符两条命令:首先主机发送USB标准命令GetDescriptor(),其中所使用的字符串的索引值为0,设备返回一个零字符串描述符的位域,如下表所示
其中wLANGID[0]~[x]代表改设别支持的语言,可以从USB设备语言ID规定中获得具体值,典型值0x0409代表英语。
主机根据自己是否支持该语言,再次发出USB标准命令GetDescriptor(),指明所要求得到的字符串的索引值和语言。这次设备所返回的是UNICODE编码的字符串描述符,UNICODE字符串描述符的位域如表2-12所示。
接口关联描述符
作用是把多个接口定义成一个类设备。接口关联描述符的位域如下表所示,bFirstInterface代表起始的接口编号,bInterfaceCount代表属于这个IAD的接口数目,编号中间不能有间隔。在一个类的所有合并接口都结束之后,第二个类的所有需要合并的接口又以IAD开始。如下图所示,IAD1的bFirstInterface为0,bInterfaceCount为2;IAD2的bFirstInterface为2,bInterfaceCount为2。
设备限定描述符
设备限定描述符用于描述一个能够同时支持高速和全速模式的USB设备工作在另外一个模式时的设备信息。如果一个设备能够同时支持高速和全速模式,并且其在高速模式下和全速模式下信息有所不同,则它必须支持设备限定描述符。如果一个只支持全速模式的设备收到一个获取设备限定描述符的命令,需要告诉主机这是个错误请求。设备限定描述符的位域如下表所示。
参考 微控制器USB的信号和协议实现
相关文章
- Chrome 23 支持“不跟踪”协议
- SSH 协议科普文
- http协议客户端向服务器端请求时一般需要发送的内容
- 【学习总结】网络-ARP协议
- 【STM32H7】第8章 学习USB协议栈前要了解的基础知识
- 常见方案 目录 1. 发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,1 2. 实现直播的方法有很多,但是常用的,就这几个。 3个直播协议:rtmp、rtsp、hls。 和三个端:
- 优云软件:Tcpreplay让协议测试从此无忧
- 详解物联网Modbus通讯协议
- 基于52840 S340协议栈USB flash U盘实现
- MESI协议:如何让多核CPU的高速缓存保持一致?
- RTP协议分析
- http1.1 和 http2 的协议对比测试
- 龙芯软件开发(37)- USB协议深入分析 返回设备描述符
- 龙芯软件开发(39)- USB协议深入分析 配置
- 龙芯软件开发(36)- USB协议深入分析 返回设备描述符
- 龙芯软件开发(34)- USB协议深入分析 设备描述符配置包
- OSI七层协议模型、TCP/IP协议及socket套接字
- TCP IP协议之初识
- Netty_04_消息协议设计与实战(实践类)
- USB协议3
- USB协议层数据格式
- 基于52840 S340协议栈USB flash U盘实现