微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
厂商专区
产品/技术
应用分类

USB识别过程与核心请求命令

2016-07-25 09:33 来源:电源网综合 编辑:铃铛

现代人的生活几乎已经离不开USB接口,小到智能随身设备,大到个人电脑都需要USB接口来进行连接。但是不知道有没有注意过,USB主机是如何在连接的瞬间对USB进行识别的呢?本文就将为大家针对这个问题进行分析,并给出答案。

USB设备的识别

当USB设备插上主机时,主机就通过一系列的动作来对设备进行枚举配置(配置是属于枚举的一个态,态表示暂时的状态),这些态如下:

1、接入态(Attached):设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入;

2、供电态(Powered):就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置)

3、缺省态(Default):USB在被配置之前,通过缺省地址0与主机进行通信;

4、地址态(Address):经过了配置,USB设备被复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态;

5、配置态(Configured):通过各种标准的USB请求命令来获取设备的各种信息,并对设备的某此信息进行改变或设置。

6、挂起态(Suspended):总线供电设备在3ms内没有总线操作,即USB总线处于空闲状态的话,该设备就要自动进入挂起状态,在进入挂起状态后,总的电流功耗不超过280UA。


标准的USB设备请求命令

标准的USB设备请求命令是用在控制传输中的“初始设置步骤”里的数据包阶段(即DATA0,由八个字节构成)。标准USB设备请求命令共有11个,大小都是8个字节,具有相同的结构,由5个字段构成(字段是标准请求命令的数据部分),结构如下(括号中的数字表示字节数,首字母bm,b,w分别表示位图、字节,双字节):

bmRequestType(1)+bRequest(1)+wvalue(2)+wIndex(2)+wLength(2)

各字段的意义如下:

1、bmRequestType:D7D6D5D4D3D2D1D0

D7=0主机到设备

=1设备到主机;

D6D5=00标准请求命令

=01类请求命令

=10用户定义的命令

=11保留值

D4D3D2D1D0=00000接收者为设备

=00001接收者为设备

=00010接收者为端点

=00011接收者为其他接收者

=其他其他值保留

2、bRequest:请求命令代码,在标准的USB命令中,每一个命令都定义了编号,编号的值就为字段的值,编号与命令名称如下(要注意这里的命令代码要与其他字段结合使用,可以说命令代码是标准请求命令代码的核心,正是因为这些命令代码而决定了11个USB标准请求命令):

1)0GET_STATUS:用来返回特定接收者的状态

2)1CLEAR_FEATURE:用来清除或禁止接收者的某些特性

3)3SET_FEATURE:用来启用或激活命令接收者的某些特性

4)5SET_ADDRESS:用来给设备分配地址

5)6GET_DEscriptOR:用于主机获取设备的特定描述符

6)7SET_DEscriptOR:修改设备中有关的描述符,或者增加新的描述符

7)8GET_CONFIGURATION:用于主机获取设备当前设备的配置值(注同上面的不同)

8)9SET_CONFIGURATION:用于主机指示设备采用的要求的配置

9)10GET_INTERFACE:用于获取当前某个接口描述符编号

10)11SET_INTERFACE:用于主机要求设备用某个描述符来描述接口

11)12SYNCH_FRAME:用于设备设置和报告一个端点的同步帧

关于这些命令,小编在这里只是为大家进行罗列,具体的介绍还需要大家自己去收集和阅读相关资粮。因为如果每个参数都展开细说,那么这将是一个非常浩大的工程。实际上对USB识别传输起作用的不仅仅是这11个命令,这11条命令只是控制传输的重心,所以大家只要掌握这11条命令,就算是能够初步入门。

标签: USB USB识别

声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。

相关阅读

微信关注
技术专题 更多>>
研发工程师的工具箱
智慧生活 创新未来

头条推荐

电子行业原创技术内容推荐
客服热线
服务时间:周一至周五9:00-18:00
微信关注
获取一手干货分享
免费技术研讨会
editor@netbroad.com
400-003-2006