本文适合usb入门级选手,我会和大家讲usb的基本数据流,在讲usb前我希望大家带着一个问题来阅读,那就是当我插上usb的时候你电脑怎么知道我插进去的是鼠标,还是键盘,还是20个G学习资料的U盘?识别之后电脑和usb接口又该如何信息传递。
usb的组成结构
+------设备
+----------配置
+----------接口
+----------端点
+----------端点
+....
+----------接口
+----------端点
+....
+....
+----------配置
+----------接口
+----------端点
+----------端点
+....
- 上图部分就是usb的结构,也就是在一个设备下将有多个配置,配置可以看成功能,如你鼠标上有3个键,平常除了一个左键右键,那就是滚轮,但是现在我们为了逼格在鼠标中加了闪光灯,那我们是不是需要另一种配置来让这三个建去改变灯的颜色的亮度?让usb接口从多个配置中切换,则可以让设备在多个不同的功能下改变
配置之下可以有多个接口,一个接口下可以有多个端点。这个端点则是与上位机通信的直接渠道。
开始
- 当电脑识别到usb插入后,电脑会给设备一个临时地址0来进行通讯,这时设备将会从地址0的端口0向电脑发送一个设备描述符,这个描述符包括设备的厂家,设备id,类id等等,厂家和设备的id可以让电脑找到指定的驱动,而找到了驱动后信息交互就好办了,之后电脑将分配出一个合适的地址,然后将地址发给设备,设备将地址保存后电脑将向设备发出一个配置描述符