32 usb 配置描述符_USB总线专题(三)——描述符

本文详细介绍了USB设备的描述符,包括设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。USB主机通过GetDescriptor请求获取设备的这些描述符,以理解设备特性并建立数据链接。每个描述符都有固定格式和功能,如设备描述符包含制造商和产品信息,配置描述符包含供电方式和最大耗电量,接口描述符描述接口功能,端点描述符则定义数据传输特性。
摘要由CSDN通过智能技术生成

6cc069b003b8116f1eef1c34e1001e2b.png

1. 概述

USB 描述符信息存储在 USB 设备中,在枚举过程中,USB 主机会向 USB 设备发送 GetDescriptor 请求,USB 设备在收到这个请求之后,会将 USB 描述符信息返回给 USB 主机,USB 主机分析返回来的数据,判断出该设备是哪一种 USB 设备,建立相应的数据链接通道。

USB 设备使用描述符报告其属性。描述符是具有定义格式的数据结构,每个描述符都以字节宽度字段开头,该字段包含描述符中的总字节数,后跟一个标识描述符类型的字节宽度字段。在 USB 设备枚举过程中,主机端的协议软件需要解析从 USB 设备读取所有描述符信息。在主机 USB 向设备发送读取描述符的请求后,USB 设备将所有的描述符以连续的数据流方式传输给 USB 主机。主机从第一个读到的字符开始,根据双方规定好的数据格式,顺序地解析读到的数据流。

每个 USB 设备公开的设备描述符,指示设备的类信息、 供应商和产品标识符,以及多个配置。每个配置还公开其配置描述符,该值指示大量接口和功耗特征,每个接口公开其包含类和数量的终结点信息的替代设置的每个接口描述符,每个接口中的每个终结点公开终结点,描述符可指明终结点类型和最大数据包大小。

描述符类型:

3e0e45c33925395a0bec20f63bdcbc52.png

标准的 USB 设备有 5 种 USB 描述符:设备描述符(Device Descriptor)、配置描述符(Configuration Descriptor)、接口描述符(Interface Descriptor)、端点描述符(Endpoint Descriptor)和字符串描述符(String Descriptor)。描述符具有类似的格式,它们的第一个字段都是 bLength,第二个字段都是 bDescriptorType。不同描述符在使用时以 bDescriptorType 字段来区分。一设备至少要包含设备描述符、配置描述符和接口描述符。如果 USB 设备没有端点描述符,则它仅仅用默认管道与主机进行数据传输。

每个 USB 设备只有一个设备描述符,而一个设备中可包含一个或多个配置描述符,即 USB 设备可以有多种配置。设备的每一个配置中又可以包含一个或多个接口描述符,即 USB 设备可以支持多种功能(接口),接口的特性通过描述符提供。

a974ebcb8f8aaaab5848dd6cb61629ef.png

在 USB 主机访问 USB 设备的描述符时,USB 设备依照设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符顺序将所有描述符传给主机。一设备至少要包含设备描述符、配置描述符和接口描述符,如果 USB 设备没有端点描述符,则它仅仅用默认管道与主机进行数据传输。

2. 设备描述符

设备描述符描述的是设备的整体信息,与设备本身一一对应,包括对设备及在设备配置中起全程作用的信息,包括制造商标识号 ID、产品序列号、所属设备类号、默认端点的最大包长度和配置描述符的个数等。一个设备只能有一个设备描述符。在主机对 USB 设备枚举的过程中,首先要做的就是获取设备描述符,以对设备有一个整体的了解。

设备描述符由 14 个字段组成,总长度 18 字节:

typedef struct _USB_DEVICE_DESCRIPTOR_
{
    BYTE        bLength,
    BYTE        bDescriptorType,
    WORD        bcdUSB,    //2字节
    BYTE        bDeviceClass,
    BTYE        bDeviceSubClass,
    BYTE        bDeviceProtol,
    BYTE        bMaxPacketSize0,
    WORD        idVenderI,    //2字节
    WORD        idProduct,    //2字节<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值