打印
[应用方案]

USB入门教程(一)-设备枚举介绍

[复制链接]
632|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Tong459|  楼主 | 2022-5-5 13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Tong459 于 2022-5-5 13:42 编辑

#申请原创#

从软件开发的角度上分析,USB入门可以直接从USB枚举下手。USB枚举的过程其实就是USB主机识别USB设备的过程。那如何区分主机和设备呢?从外观的角度,公口就是设备(比如U盘),母口就是主机(比如电脑)。从功能的角度,能够主动控制数据传输的就是主机,而被动收发数据的则是设备。下面我们介绍一下USB的枚举。

枚举这一词在百度百科上是一一列举的意思,将其与USB相结合,我们可以理解为:将USB设备的信息一一列举给USB主机。USB枚举的过程就是主机识别设备的过程。那什么USB设备的信息的载体是什么?结构如何?答案就是->USB描述符。

USB描述符的本质:多个字节组成的集合(在程序中体现为数组,仅存于设备)

USB描述符的分类:①设备描述符、②配置描述符、③字符串描述符、④接口描述符、⑤端点描述符、⑥设备限定符、⑦其他速度描述符等。在描述符中,分类处于第二个字节(比方说,描述符第二个字节为1,则表示设备描述符,值为3表示字符串描述符)。描述符的第一个字节表示此类描述符的长度,和你的数组长度不一定对应,这主要是给主机看的。其他字节则因分类不同而含义不同。

描述符制定完毕之后,我们需要将其发送至主机,而USB每次的通信都需要主机通过“请求”发起。我们来分析下主机的“请求”。

USB主机请求的本质:8个字节组成的集合(在程序中体现为数组,仅存于主机)

USB常用的主机请求:①获取描述符、②获取配置、③获取状态、④设置地址、⑤清除特征等。在请求中,通过第二个字节可以区分不同的请求。关于更多的请求和细节请关注后续**。

关于上述内容,估计有小伙伴会疑问:主机的请求除了获取描述符,还能做其他很多事情啊,但设备只有描述符,这怎么对应呢?那是因为设备的描述符内容非常丰富,其中包含了配置内容、枚举地址、特征定义等等信息,主机的各种请求其实就是从描述符中提取信息而已。

USB枚举的过程可以简述为:①主机检查到有新设备后对设备进行复位->②主机获取一次设备描述符,然后再次复位设备->③主机分配设备地址->④主机使用新分配的地址获取设备描述符(此前地址为0)->⑤主机获取配置描述符->⑥主机获取字符串等描述符->⑦主机发送“设置配置”请求。








使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

0

粉丝