您好,欢迎访问三七文档
USB协议简介USB枚举USB,全称是UniversalSerialBus(通用串行总线),它是在1994年底康柏、IBM、Microsoft等多家公司联合制订的USB1.1和USB2.0USB1.1是较为普遍的USB规范,其高速方式的传输速率为12Mbps,低速方式的传输速率为1.5Mbps(b是Bit的意思),1MB/s=8MBPS(兆位/秒),12Mbps=1.5MB/s。当前,大部分MP3为此类接口类型。USB2.0规范是由USB1.1规范演变而来的。它的传输速率达到了480Mbps,折算为MB为60MB/s,足以满足大多数外设的速率要求。使用USB为打印机应用带来的变化则是速度的大幅度提升,USB接口提供了12Mbps的连接速度,相比并口速度提高达到10倍以上,在这个速度之下打印文件传输时间大大缩减。USB2.0标准进一步将接口速度提高到480Mbps,是普通USB速度的20倍,更大幅度降低了打印文件的传输时间。USB为了支持多个设备互相,而不需要另外接Host,比如一个数码相机和一个打印机,希望把打印机和数码相机直接相连接,然后就可以实现通过USB,把数据从数码相机传送到打印机中,打印机就可以打印了。OTG引入了一个新的概念,HNP(HostNegotiationProtocol),主机协商协议,允许两个设备之间互相协商谁去当Host。不过,即使在OTG中,也只是同一时刻,只存在单个的Host,而不允许存在多个Host的。USB系统的核心是Host标准USB,Mini-USB接口定义•USB是一种常用的PC接口,只有4根线,两根电源两根信号,需要注意的是千万不要把正负极弄反了,否则会烧掉USB设备或者电脑的南桥芯片!普通PC端USB设备的接口其中ID脚在OTG功能中才使用。由于Mini-USB接口分Mini-A、B和AB接口。如果你的系统仅仅是用做Slave,那么就使用B接口。系统控制器会判断ID脚的电平判断是什么样的设备插入,如果是高电平,则是B接头插入,此时系统就做主模式(mastermode)如果ID为低,则是A接口插入,然后系统就会使用HNP对话协议来决定哪个做Master,哪个做Slave。数码相机,移动硬盘等移动设备MicroAMicroBMicro母口手机等移动设备MicroUSBMicroUSB是USB2.0标准的一个便携版本,比当前部分手机使用的MiniUSB接口更小,Micro-USB是Mini-USB的下一代规格,由USB标准化组织美国USBImplementersForum(USB-IF)于2007年1月4日制定完成。从左往右依次为:miniUSB公口(A型插头)、miniUSB公口(B型插头)、USB公口(B型)、USB母口(A型插座)、USB公口(A型插头)USB描述符•标准的描述符有5种,USB为这些描述符定义了编号:•1——设备描述符•2——配置描述符•3——字符描述符•4——接口描述符•5——端点描述符设备描述符一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。这间描述符是用一定的字段构成的,分别如下说明:设备描述符struct_DEVICE_DEscriptOR_STRUCT{BYTEbLength;//设备描述符的字节数大小,为0x12BYTEbDescriptorType;//描述符类型编号,为0x01WORDbcdUSB;//USB版本号BYTEbDeviceClass;//USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型//0x00不是在设备描述符中定义的,如HIDBYTEbDeviceSubClass;//usb分配的子类代码,同上,值由USB规定和分配的BYTEbDeviceProtocl;//USB分配的设备协议代码,同上BYTEbMaxPacketSize0;//端点0的最大包的大小WORDidVendor;//厂商编号WORDidProduct;//产品编号WORDbcdDevice;//设备出厂编号BYTEiManufacturer;//描述厂商字符串的索引BYTEiProduct;//描述产品字符串的索引BYTEiSerialNumber;//描述设备序列号字符串的索引BYTEbNumConfiguration;//可能的配置数量}表USB设备描述符的结构偏移量域大小值描述0bLength1数字此描述表的字节数1bDecriptorType1常量描述符的类型(此处应为0x01,即设备描述符)2bcdUSB2BCD码此设备与描述表兼容的USB设备说明版本号(BCD码)4bDeviceClass1类设备类码:如果此域的值为0则一个设置下每个接口指出它自己的类,各个接口各自独立工作。如果此域的值处于1~FEH之间,则设备在不同的接口上支持不同的类。并这些接口可能不能独立工作。此值指出了这些接口集体的类定义。如果此域设为FFH,则此设备的类由厂商定义。5bDeviceSubClass1子类子类挖码这些码值的具体含义根据bDeviceClass域来看。如bDeviceClass域为零,此域也须为零如bDeviceClass域为FFH,此域的所有值保留。6bDevicePortocol1协议协议码这些码的值视bDeviceClass和bDeviceSubClass的值而定。如果设备支持设备类相关的协议,此码标志了设备类的值。如果此域的值为零,则此设备不支持设备类相关的协议,然而,可能它的接口支持设备类相关的协议。如果此域的值为FFH,此设备使用厂商定义的协议。7bMaxPacketSize01数字端点0的最大包大小(仅8,16,32,64为合法值)8idVendor2ID厂商标志(由USB-IF组织赋值)10idProduct2ID产品标志(由厂商赋值)12bcdDevice2BCD码设备发行号(BCD码)14iManufacturer1索引描述厂商信息的字符串描述符的索引值。15iProduct1索引描述产品信息的字串描述符的索引值。16iSerialNumber1索引描述设备序列号信息的字串描述符的索引值。17bNumConfigurations1数字可能的配置描述符数目bDescriptorType为描述符的类型,其含义可查下表(此表也适用于标准命令Get_Descriptor中wValue域高字节的取值含义):表USB描述符的类型值类型描述符描述符值标准描述符设备描述符(DeviceDescriptor)0x01配置描述符(ConfigurationDescriptor)0x02字符串描述符(StringDescriptor)0x03接口描述符(InterfaceDescriptor)0x04端点描述符(EndPontDescriptor)0x05类描述符集线器类描述符(HubDescriptor)0x29人机接口类描述符(HID)0x21厂商定义的描述符0xFFUSB的设备类型(deviceclass)BaseClassDescriptorUsageDescription00hDeviceUseclassinformationintheInterfaceDescriptors种类信息定义在接口描述符中01hInterfaceAudio音频设备02hBothCommunicationsandCDCControl通信设备(手机,Class_02&SubClass_02&Prot_01)03hInterfaceHID(HumanInterfaceDevice)人机接口设备05hInterfacePhysical物理设备06hInterfaceImage图像设备(可能是IPhone手机,Class_06&SubClass_01&Prot_01)07hInterfacePrinter打印机08hInterfaceMassStorage大容量存储(可能是手机,Class_08&SubClass_06&Prot_50)09hDeviceHub集线器0AhInterfaceCDC-Data通信设备(手机,Class_0A&SubClass_00&Prot_00)表USBClass表0BhInterfaceSmartCard智能卡0DhInterfaceContentSecurity内容安全设备0EhInterfaceVideo视频设备(摄像头,Class_0e&SubClass_03&Prot_00)0FhInterfacePersonalHealthcare个人健康设备DChBothDiagnosticDevice诊断设备(USB2兼容设备)E0hInterfaceWirelessController无线控制器(蓝牙设备等)EFhBothMiscellaneous杂项(ActiveSync,PalmSync,各种协会等)FEhInterfaceApplicationSpecific应用专有规范(固件升级,红外,USB测试与测量等)FFhBothVendorSpecific供应商自定义规范(手机,Class_FF&SubClass_FF&Prot_FF)为何会有这么多USB的Class分类?用单一的USB接口,取代之前种类繁多的各种其他接口。而为了取代其他各种接口,那意味着就要实现,或者是支持,之前别的接口,所对应的各种功能。因此,USB协议设计的时候,就是要把鼠标,键盘,大容量存储,图像等,这些之前是通过其他接口所实现的,各种的功能,都囊括进来。并且在协议中有对应的规范定义,支持这些功能。因此,才有了如此多的各种USB的Clas,即分类,根据功能而分出的各种类别。不同的Class分类,用于实现对应的功能,适用于相应的设备。配置描述符•struct_CONFIGURATION_DEscriptOR_STRUCT•{•BYTEbLength;//设备描述符的字节数大小•BYTEbDescriptorType;//描述符类型编号•WORDwTotalLength;//配置所返回的所有数量的大小•BYTEbNumInterface;//此配置所支持的接口数量•BYTEbConfigurationVale;//Set_Configuration命令需要的参数值•BYTEiConfiguration;//描述该配置的字符串的索引值•BYTEbmAttribute;//供电模式的选择•BYTEMaxPower;//设备从总线提取的最大电流•}字符描述符struct_STRING_DEscriptOR_STRUCT{BYTEbLength;//设备描述符的字节数大小BYTEbDescriptorType;//描述符类型编号BYTESomeDescriptor[36];//UNICODE编码的字符串}接口描述符struct_INTERFACE_DEscriptOR_STRUCT{BYTEbLength;//设备描述符的字节数大小BYTEbDescriptorType;//描述符类型编号BYTEbInterfaceNunber;//接口的编号BYTEbAlternateSetting;//备用的接口描述符编号BYTEbNumEndpoints;//该接口使用端点数,不包括端点0BYTEbInterfaceClass;//接口类型BYTEbInterfaceSubClass;//接口子类型BYTEbInterfaceProtocol;//接口所遵循的协议BYTEiInterface;//描述该接口的字符串索引值}端点描述符struct_ENDPOIN_DEscriptOR_STRUCT{BYTEbLength;//设备描述符的字节数大小,为0x07BYTEbDescriptorType;//描述符类型编号,为0x05BYTEbEndpointAddress;//端点地址及输入输出属性BYTEbmAttribute;//端点的传输类型属性0x02W
本文标题:usb协议简介
链接地址:https://www.777doc.com/doc-3280600 .html