USB系统分为两部分——USB主机、USB设备,当然还有他们之间的连接。结构如下图: 50e4f04d90c84a6ca6d57550371e6b59~noop.image?_iz=58558&from=article.jpg

USB总线拓扑结构示意图如下:
288d208c1bea491ebbb449359ed35564~noop.image?_iz=58558&from=article.jpg

USB2.0标准设备共分为两类:USB2.0全速设备(FULL SPEED)和USB2.0高速设备(HIGH SPEED),两者区别如下:
1.度:全速最高支持12Mbps、高速最高支持480Mbps;
2.上拉电阻:USB2.0标准为区分全速和高速设备,协议规定分别在D+和D-上接一个1.5K的上拉电阻。其中,全速设备上拉电阻位于D+、高速设备位于D-;
41db0195280746b8b9e14bdeaaee6fcc~noop.image?_iz=58558&from=article.jpg

3.USB主机与从机建立连接的过程(枚举)如下:
(1)设备插入(通过上拉电阻确定设备接入,且区分是全速设备还是高速设备)
(2)主机供电
(3)初始化设备
(4)获取设备描述符
(5)再复位
(6)分配地址(以下操作使用新的设备地址)
(7)再次获取设备描述符
(8)获取配置描述符
(9)获取字符串描述符
(10)根据上面获取的配置,配置设备
(11)配置完成即可开始通信
转换为以下更通俗易懂的过程:当设备连上后;
主机:你是啥设备啊?
设备:0x12 0x01 0x00 0x02……设备描述符。
主机:你都有些什么配置(功能)啊?
设备:0x09 0x02……配置描述符(包括接口描述符、端点描述符、功能描述符等)
(主机通过上一步所读取配置描述符,了解设备如上功能所使用的接口和端点)
主机:你有几个接口啊?
设备:0x09 0x04 0x00……接口描述符。
主机:每个接口都用哪些端点啊?
设备:0x07 0x05 0x82……端点描述符
主机:我知道啦,那我们开始传输数据吧。
设备:好的。
至此,整个连接过程建立完成,主机设备间可以开始通信。
注意:USB连接以及通信过程中,所有通信发起者都是USB主机,设备只能被动响应。
4.枚举过程中各种描述符
各种描述符之间的关系图:
7b73719dee4548c88f492e88b5c89c55~noop.image?_iz=58558&from=article.jpg

(1)设备描述符
13c40f390ce04408b44fd596a0148761~noop.image?_iz=58558&from=article.jpg

(2)配置描述符
3b8fc0da63284760acc08cfda9f03d06~noop.image?_iz=58558&from=article.jpg

(3)接口描述符
ce4b6b5bc63848b882591e4eba879b4e~noop.image?_iz=58558&from=article.jpg

(4)端点描述符
6593f10601264a2385273ea458caddcc~noop.image?_iz=58558&from=article.jpg

(5)字符串描述符
31d093aaaa624ad99141c59cfff71775~noop.image?_iz=58558&from=article.jpg

注:以上图片参考来自网络