简介
USB(Universal Serial BUS)是“通用串行总线”英文的缩写。
USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
USB是一个使计算机周边设备连接标准化、单一化的接口 。广泛应用于日益增多的外围设备,如键盘、鼠标、调制解调器、打印机、网卡、显示器以及各种PDA等手持设备。
USB的出现
1994.11.11—USB v0.7:该版本推出响应不大
1996年—USB(LowSpeed) v1.0:1.5Mbps
1998年—USB(FullSpeed) v1.1:12Mbps
2004.04—USB(HighSpeed) v2.0:480Mbps I<500mA
2008年上半年—USB(SuperSpeed) v3.0:5Gbps I<900mA
没有USB,就不会有移动数据业务如此的迅猛发展。
USB拓扑结构
USB是一种主从结构的系统。
USB主机由USB主控制器(Host Controller)和根集线器(Root Hub)构成
USB主控制器:主要负责数据处理。
根集线器:提供一个连接主控制器与设备之间的接口和通路。
USB从机可以是各种USB设备也可以是集线器
USB集线器(USB Hub):
对原有的USB接口数量进行扩展,以获得更多的USB设备接口,但不能扩展出更多的带宽。
USB的金字塔拓扑结构图:
图1
集线器(USB Hub)本身就是一个USB设备。
USB协议对集线器的层数限制:
USB1.1规定最多为4层(不包括Host)
USB2.0规定最多为6层(不包括Host)
USB设备由7bit二进制表示,所以一个USB主控制器理论上可以接127个设备,但通常0地址被保留给未初始化的设备使用。
USB数据交换过程:
数据交换不能发生在主机与主机之间或设备与设备之间,只能发生在主机与设备之间。
USB On-The-Go
USB On-The-Go 是USB协议的补充版本,是USB主机嵌入式化的一种实现,可翻译为“便
携式USB”或“移动USB”简记成USB OTG USB是主从模式,设备与设备之间、主机与主机之间不能互连,为了解决这个问题,扩大USB的使用范围,就出现了USB OTG,这样,同一个USB设备在不同的场合下可以在主机和设备(从机)之间进行任意切换。
USB电气特性
USB的连线
标准USB连线使用4芯电缆:5V电源线(VBUS)、差分数据线负(D-)、差分数据线正(D+)及地线(GND)。
图2
USB的数据传输
USB2.0支持3种传输速度:低速(1.5Mbps)、全速(12Mbps)、高速(480Mbps)三种模式。
USB低速和全速模式中,采用的是电压传输模式;而在高速模式下,则是电流传输模式。
USB实际传输速率比理论值要低,因为有很多协议开销,例如同步、令牌、校验、位填充
和包间隙等。
USB使用的是NRZI(非归零反相编码)编码方式。具体的数据传输任务由USB控制器实现,用户不必关心
USB的插拔检测机制
在USB集线器的每个下游端口D+和D-上,都分别接有一个15K左右的下拉电阻。
对于USB设备来说,正好接有一个1.5K左右的上接电阻:
低速设备,接在端口的D-上。
全速和高速设备,接在端口的D+上
当设备与集线器端口连接时,集线器端口的下拉低电平会由于上拉分压,而变成高电平,从而识别出USB的插拔动作。
设备描述符
描述符概念
前面所描述的USB总线结构,只是一个数据通路,我们还需要一些描述设备特性的东西来
代表和区分不同的USB设备,这就是描述符。
描述符:描述了设备的各种行为和具体参数类型等,让主机明确应该加载什么样的驱动程序与设备之间进行怎样的操作。
USB2.0协议定义的描述符
设备描述符(Device Descriptor)
配置描述符(Configuration Descriptor)
接口描述符(Interface Descriptor)
端点描述符(Endpoint Descriptor)
字符串描述符(String Descriptor)
Qualifier Descriptor
Other Speed Configuration Descriptor interface_power
类特殊描述符:
HID描述符
音频接口描述符
厂商自定义描述符
USB描述符介绍
设备描述符:
设备所使用的USB协议版本号、设备类型、端点0的最大包大小、厂商ID(VID)和产品ID(PID)、设备版本号、厂商字符串索引、产品字符串索引、设备序列号索引、可能的配置数量等。
配置描述符:
反映设备对主机的配置需求,包含配置的编号、供电方式、接口数、是否支持远程唤醒、电流需求量等。
接口描述符:
接口的编号、接口的端点数、接口所使用的类、子类、协议等。
端点描述符:
端点号及方向、端点的传输类型(控制、同步、批量、中断传输)、最大包长度、查寻时间间隔等。
字符串描述符:
不是必需的,采用unicode编码,主要是提供一些方便人们阅读的厂商或设备名称等文字信息。
USB描述符的分析及模型
配置和接口是为了更方便地管理端点而抽象出来的概念:
不同的配置可以使设备发挥不同的功能。
不同的接口可以实现功能的复用。
非0端点只有在配置之后才能使用。
端点0作为默认控制管道的端点,在设备连接、上电和收到总线复位信号时就可以访问0端点。
枚举就是通过控制传输从设备读取各种描述符信息的过程。之后主机会据此加载合适的驱动程序。
USB设备的枚举过程
USB主机检测到USB设备的插入(主机通过查询集线器端口确定变化的类型 )
主机等待100ms让设备的电源变得稳定,然后对设备进行复位使设备拥用0地址和0端点,使设备处于默认状态
获取设备描述符,记录端点0的最大包大小再次对设备进行复位,通过默认通道发出输出令牌配置设备地址
主机发出输入令牌,设备成功确认回复则启用新的地址
再次通过新地址,发送多次输入令牌,获取完整的设备描述符
获取配置描述符,以及其它描述符集合单独获取字符串、报告等描述符
最后主机给设备分配一个配置,设备处于配置状态。