sakumisu преди 3 години
родител
ревизия
64ee6877e5
променени са 5 файла, в които са добавени 28 реда и са изтрити 2 реда
  1. BIN
      docs/source/usb/img/usb_enum.png
  2. BIN
      docs/source/usb/img/usb_request.png
  3. 2 0
      docs/source/usb/usb_desc.rst
  4. 21 1
      docs/source/usb/usb_enum.rst
  5. 5 1
      docs/source/usb/usb_request.rst

BIN
docs/source/usb/img/usb_enum.png


BIN
docs/source/usb/img/usb_request.png


+ 2 - 0
docs/source/usb/usb_desc.rst

@@ -1,6 +1,8 @@
 USB 描述符
 ===========================
 
+本节参考官方 usb2.0 pdf 9.5 节即可。
+
 设备描述符
 ---------------------
 

+ 21 - 1
docs/source/usb/usb_enum.rst

@@ -1,2 +1,22 @@
 USB 枚举
-===========================
+===========================
+
+当我们了解了 usb 设备请求以后,就可以来学习下 USB 设备的整个枚举过程了,看看是如何枚举出一个串口、鼠标、u盘等设备了。枚举过程中主机会发送设备请求来获取相关信息(也就是描述符),具体发送哪些,参考下图。
+
+.. figure:: img/usb_enum.png
+
+- 首先设备接上 USB 线,然后插上电脑
+- 设备插上以后上电,处于供电状态
+- 主机通过 D+/D- 识别到设备插入
+- 对设备进行复位
+- 主机发送 **获取设备描述符请求**
+- 可选的复位操作
+- 主机发送 **设置设备地址请求**
+- 主机发送 **获取配置描述符请求**,可能会获取多次,无所谓
+- 主机发送 **获取字符串描述符请求**,正常会获取3个字符串,如果后面的描述符中指定了字符串,则继续获取指定的字符串
+- 主机发送 **获取设备限定描述符请求**,用来获取在设备工作在其他速度上的请求,如果设备只能工作在全速模式,则必须回复 stall,并且协议栈中一定会打印该请求告诉你此命令设备不支持。
+- 主机发送 **设置配置请求**,对设备的端点进行配置,通常是根据端点描述符中的配置进行设置。
+- 到此标准的设备请求结束
+- 主机根据接口描述符加载对应支持的 class 驱动,如果主机不支持,则会提示该设备找不到驱动
+- 加载完成以后,开始执行该 class 相关的请求
+- 最终进行 class 的数据流传输

+ 5 - 1
docs/source/usb/usb_request.rst

@@ -1,2 +1,6 @@
 USB 设备请求
-===========================
+===========================
+
+本节参考官方 usb2.0 pdf 9.3、9.4 节即可。
+
+.. figure:: img/usb_request.png