您的位置 首页 ADAS

USB设备驱动开发-USB协议相关(3)

一、USB设备标准请求USB设备标准请求是为所有USB设备定义的操作,即使设备还没有被分配地址或还没有被配置都必须相应设备标准请求。标准特…

一、USB设备规范恳求

USB设备规范恳求是为一切USB设备界说的操作,即便设备还没有被分配地址或还没有被装备都有必要相应设备规范恳求。

规范特性挑选子

特性挑选子用于对特性使能或设置特性,若一个不支撑或不合法的恳求发送给USB设备,设备将在数据或状况传输阶段回来STALL作为呼应。若设备的默许操控通道因为过错不能通讯,则设备将被reset来铲除过错状况并重启默许操控通道。

1. Clear Feature

wValue中的特性挑选子有必要和操作目标匹配,即设备特性对应设备,接口特性对应接口,端点特性对应端点。

若对应的特性不存在或不能被铲除,或许操作的接口或端点不存在,将回来一个恳求过错状况。

在Default状况:设备接收到这个恳求后的操作是未界说的;

在Address状况:对设备操作是有用的,但对接口和端点的操作将回来恳求过错;

在Configured状况:一切的恳求都是有用的。

其间TEST_MODE特性不能被ClearFeature恳求铲除。

2. Set Feature

设置或使能特性

3. Get Configuration

回来当时的设备装备值(一个字节),在装备状况下,回来非0的bConfigurationValue值。若设备没有装备则回来0。

4. Set Configuration

设置设备的装备

在wValue的低字节是装备值,若装备值为0,则设备将仍处于Address状况。

5. Set Descriptor

用于更新已有的描绘符或新增描绘符。

6. Get Descriptor

其间wValue的高字节表明描绘符的类型,如下表所示;低字节表明描绘符的索引。一个设备能够完成多个装备描绘符和字符串描绘符,因而只要这两种描绘符才会用到索引值。

7. Get Interface

这个恳求回来接口现在挑选的可选设置(Alernate Setting)。

8. Set Interface

设置接口

9. Get Status

回来操作目标的状况。

10. Set Address

设置设备的地址

只答应对设备描绘符、装备描绘符和字符串描绘符进行操作。

11. Synch Frame

在等时传输方法中,用于设置并回来端点的同步帧。

二、描绘符

USB设备运用描绘符来陈述特点,一个描绘符即预先界说好的数据结构。每个描绘符的第一个字节表明描绘符的长度,第二个字节表明描绘符的类型。

在描绘符中或许包括有对字符串描绘符的引证来描绘这个描绘符,若设备不支撑字符串描绘符,则其他描绘符中字符串描绘符引证域有必要存储,但需求设置为0来描绘没有可用字符串描绘符。

1. 设备描绘符

设备描绘符用于描绘一个设备的通用信息,一个USB设备只具有一个设备描绘符。高速设备的设备描绘符有一个版本号bcdUSB,0200H来表明USB 2.0

struct usb_device_descriptor {

__u8 bLength;

__u8 bDescriptorType;

__le16 bcdUSB;

__u8 bDeviceClass;

__u8 bDeviceSubClass;

__u8 bDeviceProtocol;

__u8 bMaxPacketSize0;

__le16 idVendor;

__le16 idProduct;

__le16 bcdDevice;

__u8 iManufacturer;

__u8 iProduct;

__u8 iSerialNumber;

__u8 bNumConfigurations;

} __attribute__ ((packed));

2. Device_Qualifier

关于高速设备,若在其他速度下需求更改一些装备,这需求界说这个描绘符。

3. 装备描绘符

装备描绘符描绘一个设备装备的信息,其间的bConfigurationValue值作为传输传递给SetConfiguration()恳求,使设备选用这个装备。

一个USB设备有一个或多个装备描绘符,一个装备描绘符具有一个或多个接口,一个接口具有0个或多个端点。在同一个装备中,一个端点不能在不同的接口之间共用,但能够在同一个接口的不同设置共有。但在不同的装备中,端点能够在接口之间共用。

一旦装备选定,则设备一般仅罕见的可变设置,即接口具有可选设置则才或许更改设置。

4. 接口描绘符

接口描绘符描绘一个装备中的接口。一个装备供给一个或多个接口。当一个装备支撑一个或多个接口时,接口描绘将作为装备描绘符的一部分回来,端点描绘符将紧跟着接口描绘符回来。接口描绘符不能经过GetDescriptor()或SetDescriptor拜访。

一个接口包括可变设置来答应在设备装备后答应端点或一些特性做必定的改动。接口默许的设置都为0,SetInterface()恳求用于挑选一个设置或回来默许的设置。GetInterface()恳求回来挑选的设置。

假如一个设备装备支撑单个接口并此接口有两个可选设置,装备描绘表回来今后会紧跟着回来bInterfaceNumber与bAlternateSetting域皆为0的第一个设置的接口描绘表及相关的结点描绘表,而随之后是另一个设置接口描绘表与结点描绘表第二个接口描绘表的bInterfaceNumber域也应为0但bAlternate Setting域应为1 。

假如一个接口仅运用节点0则接口描绘表今后就不再回来节点描绘表而且此接口表明的是一个恳求接口它运用连在节点0上的缺省通道在这种情况下bNumberEndpoints域应被设置成0 ,一个接口描绘表的节点个数不把结点0计在内。

5. 端点描绘符

接口的端点具有自己的描绘符,描绘符包括主机分配每个端点带宽的信息。每个端点描绘符是作为装备信息的一部分在GetDescriptor恳求中回来的。端点描绘符不能直接经过GetDescriptor()或SetDescriptor()恳求拜访,这点与接口描绘符共同。端点0没有端点描绘符。

6. 字符串描绘符

字符串描绘符是可选的,但若设备不支撑字符串描绘符,则设备中装备描绘符、接口描绘符中对字符串描绘符的引证值有必要设置为0。字符串描绘符运用UN%&&&&&%ODE编码方法。USB设备或许需求支撑多种言语,字符串描绘符中16位的LANGID来表明支撑的言语。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/239356.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部