注:本文基于usb2.0
usb的三种速度
设备描述符(Device Descriptor)
配置描述符(Configuration Descriptor)
接口描述符(Interface Descriptor)
端点描述符(Endpoint Descriptor)
字符串描述符(String Descriptor)
几种描述符之间的关系
每个设备只有一个设备描述符(设备描述符就代表一个设备);而每个设备描述符则可以有几个配置描述符(配置描述符则表示这个设备支持哪些功能,有几个功能,就有几个配置描述符);每个配置描述符又可以有几个接口描述符(接口用来实现功能),每个接口描述符又有几个端点描述符(usb具体的行为都是由端点来实现的)。
比如,一个USB接口的CD-ROM,作为一个设备,它具有两种功能,读取光盘和播放CD,所以有2个配置描述符。一个功能的实现要涉及许多接口,比如当CD播放机使用时,需要音频接口,同时还需要控制CD机的接口。而控制命令接口又由许多端点组成,比如有的端点负责向CD机发送命令,有的接口负责接收来自CD机的反馈。
USB枚举过程
(1)主机检测到设备插入;
(2)主机要求设备发送自己的设备描述符;
(3)设备发送自己的设备描述符;
(4)主机询问设备有几种功能?
(5)设备返回自己的配置描述符;
(6)主机询问设备每个功能有几个接口?
(7)设备返回自己的接口描述符;
(8)主机询问设备每个接口使用哪几个端点?
(9)设备返回自己的端点描述符;
(10)主机识别到设备,开始传输数据;
(11)设备准备开始数据传输;