接口/总线/驱动
先说一下什么叫USB枚举,设备接入主机后被主机识别,主机为设备供电,此时主机和设备使用默认的地址0通讯,直到主机重新分配地址。枚举过程中前一段使用缺省的地址0,后一段使用主机分配的地址。所谓枚举就是主机向设备要数据,这些数据描述了设备的属性,比如厂商,供电情况,有多少配置,接口属性及数量,端点属性及数量,字符描述信息等等,不同设备描述信息不同。
这些信息就是通过标准请求来获得的。我们在使用usb设备的时候有时候电脑弹窗出现“未知设备”,这就是电脑没有获取到设备的描述信息,不知道它是什么设备,更谈不上为它加载驱动了。
USB标准请求通过SETUP事务下发到设备端,请求出现在SETUP事务的DATA0数据包中,注意此处必须是DATA0,共有8个字节。标准请求是为了获取或者设置设备参数,比如获取描述符,设置地址,设置配置等。以下是SETUP数据包格式
bit7代表传输方向
bit5bit6请求类型,是标准请求,类请求,还是厂商自定义请求
bit0-bit4请求接受者,是设备,接口,端点,还是其他
其他参数见下面表格,表格中罗列了标准请求种类
以下表格是标准请求码,在bRequest字段中传输
以下是描述符类型列表,在wValue字段传输,经常会用到。描述符的种类比较多,后文在所详细介绍。
以上标准请求经常在USB枚举中见到,在传输过程中也能出现,比如虚拟串口设备,上位机打开关闭串口时会有类请求下发波特率等参数。
全部0条评论
快来发表一下你的评论吧 !