文章目录
USB是什么
- 说法一:you sb,你是沙雕
- 说法二:美国USA的弟弟USB
- 说法三:通用串行总线(universal serial bus)
USB解决什么问题
简化PC与外围设备的连接,增加易用性
因为外围设备是各种各样的,所以的PC有很多种接口,比如早期键盘鼠标的PS/2,9针串口,23针并口,DVI,VGA,RJ45,RJ11,HDMI,SATA,PCIE等等,很多接口还是不支持热拔插的
在比较老的PC中,连接外围设备时,要断电,甚至要打开机箱,而且因为接口的不同,想要支持这些外围设备,主板就得做各种接口出来,非常的麻烦
如果能够实现一种统一的接口,主板上不需要做N种接口就能接入任何外围设备,而且支持热拔插,传输速度也很快,那无疑是帮大忙了
USB是基于此而实现,支持即插即用(plug and play),并且支持热拔插(hot plug)
USB-OTG
由于USB是主从模式,只能由主机发起通信,从机响应,因而两个主机或者两个从机是无法通信的,因此提出了OTG(on to go),同一个设备,在不同场合下,可以在主从之间切换
USB的特点
- USB1.0和USB1.1版本中,支持低速(1.5Mbps)和全速(12Mbps)
- USB2.0加入高速模式(480Mbps),高速模式是可选的,不一定所有USB芯片都支持
- USB3.0(5.0Gbps)
注:bps是每秒多少位
USB的拓扑结构
USB是主从机构,主机叫host,从机叫device
一个主机具有一个或者多个USB主控制器(host controller)和根集线器(root hub)
主控制器负责数据处理,根集线器提供一个连接主控制器与设备的接口和通路
USB集线器(usb hub)对原有的USB口在数量上扩展,但是并不增加带宽,每一个usb集线器下,又可以接入新的USB集线器,因此可以层层拓展,但是总数是有限制的
通常情况下,一个PC具有多个主控制器,每个主控制器下面有一个根集线器,根集线器下通常具有1-N个USB口,如果希望插入的几个USB设备具有较大的传输速度,可以考虑连接到不同的USB主控上
USB的电气特性
标准USB是四线:5V电源VCC,地GND,差分数据线正D+,差分数据线D-
OTG中多一根线(ID),用于身份识别,判断是主还是从
USB2.0的三种传输速度:低速(1.5Mpbs)、全速(12Mpbs)、高速(480Mpbs)
USB数据的编码:NRZI,数据为0时,电平翻转;数据为1时,电平不翻转
位填充:根据上述,可能存在长时间电平不变化的情况,因此数据出现连续6个1时,强制插入一个0后编码发送,在接收端,需要检测并去掉这个0,才能恢复数据
USB的插入检测机制
主机端:D+和D-分别接15K电阻下地,当悬空时保持为低电平
从机端:D+或D-接1.5K电阻上拉,具体接到D+还是D-,由速度决定
全速&高速:D+
低速:D-
因此从机接入到主机后,主机端的集线器能检测到D+或D-的电平出现变化,随后报告给USB主控制器
USB描述符
USB主机如何知道一个设备的功能、行为呢,需要通过描述符实现,描述符中记录了设备的类型、厂商ID、产品ID、端点情况、版本号等众多信息
qualifier descriptor 和 other speed configuration descriptor 以及一些特殊的描述符不做介绍
如果有特殊描述符,它跟在相应接口描述符之后
-
设备描述符:Device descriptor
一个USB设备只有一个设备描述符,设备描述符里决定了该设备有多少在种配置,每种配置都对应一个配置描述符
设备描述符主要记录信息:USB协议版本号、设备类型、端点0的最大包大小、厂商ID、产品ID、设备版本号