USB简介系列-05

系列文章目录

USB简介之五



USB设备举例

本部分讨论USB常用设备。


一、HID人机接口设备

首先看一下USB鼠标设备插入USB接口时系统产生的USB数据流,因为不同系统中USB数据序列不同,此处指定系统为windos XP系统。

对于如下所示的显示,分析仪已设置为仅显示总线状态和最高级别的传输。显示的每个控制传输都由一系列事务组成,每个事务都由一系列数据包组成,我们将在后面看到。

USB总线上的数据捕获在插入鼠标前 1.9 秒开始。分析仪指示该器件已插入,并且该器件为低速器件(因为上拉电阻器位于 D- 上)。3 毫秒后,由于尚不允许主机发送任何数据,因此设备因在数据线上未看到任何活动而挂起。不久之后,主机发出 RESET,在本例中持续 31 毫秒。

然后,它执行 Get Descriptor 请求(对默认地址 0),以发现为控制终结点定义的最大数据包大小。获得此信息后,它会再次重置设备,然后发送“设置地址”请求,在此示例中将设备地址设置为 1。

USB数据分析
从现在开始,所有请求都将发送到设备地址 1。主机现在已请求设备描述符。(见1.1设备描述符部分,可以查看对设备描述符的分析)。它还请求了配置描述符集合的前 9 个字节。请记住,当主机请求配置描述符时,它还将获得接口和端点描述符,也可能获取其他描述符。但是主机不知道这个集合的总长度。但是,它确实知道配置描述符本身的长度为 9 个字节,并且此描述符包含描述符集合的总长度值。因此,它首先使用所需长度为 9 的 Get Configuration Descriptor 仅请求配置描述符。(见1.2查看对配置描述符集合的分析。

此外,主机还请求了字符串描述符 0(用于支持的字符串语言列表)和描述符索引 2(在本例中已分配给产品描述字符串)。

USB数据流
在此之后,可以看出主机再次询问了大部分信息。发生这种情况的原因多种多样,例如堆栈中的不同驱动程序出于自己的目的提出相同的问题。

然后,主机发送了“设置配置”请求,从那时起,设备就被“配置”并能够执行其功能。主机现在能够发送 HID 类请求“Set Idle”,以告知设备仅在发生新事件时响应中断 IN 事务。(在任何情况下,当发送 IN 请求并且报告没有更改时,设备将使用 NAK 数据包进行响应。分析器已设置为不显示这些“NAKed”不响应事务,因此我们不会在此处看到它们) 然后,它还请求 HID 类报告描述符,在这种情况下,该描述符会通知相应的驱动程序期望在其中断 IN 端点上收到鼠标事件的 4 字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值