Ver Fonte

docs: update rst

Signed-off-by: sakumisu <1203593632@qq.com>
sakumisu há 1 mês atrás
pai
commit
11cb54f735

BIN
docs/source/demo/img/otg.png


+ 15 - 0
docs/source/demo/usb_otg.rst

@@ -0,0 +1,15 @@
+OTG 功能的使用
+=========================
+
+如果需要使用 OTG 功能,首先使用的芯片需要支持 ID 检测功能,然后使能 ``CONFIG_USB_OTG_ENABLE`` 宏,将之前的例程中 ``usbh_initialize`` 或者 ``usbh_initialize``
+替换成 ``usbotg_initialize`` 即可。
+
+ID 检测电路根据不同的 USB 接口类型有所不同,常见的有 micro-USB 和 USB-C 两种接口类型。
+
+- 如果是 micro-USB 接口,则将 ID 线连接到芯片的 ID 引脚,并使能 ID 功能即可。
+- 如果是 USB-C 接口,由于没有 ID 引脚,则需要借助 CC 电路转换成 ID 然后连接到芯片的 ID 引脚,常见电路图如下所示(DNP 表示不焊接):
+
+.. figure:: img/otg.png
+
+
+.. note:: 除 ID 引脚以外,还需要增加 VBUS 输出开关控制,当工作在 host 时,开启 VBUS 供电,当工作在 device 时,关闭 VBUS 供电。

+ 3 - 1
docs/source/demo/usbd_audiov1.rst

@@ -1,5 +1,7 @@
 usbd_audiov1
 ===============
 
-.. note:: 在使用windows 时,当修改描述符任意参数时,必须同步修改字符串描述符,并且卸载驱动,否则windows会认为设备未更改,继续使用旧的驱动,导致无法识别设备。Linux 不受此限制。
+在使用 UAC1.0 时,需要注意以下几点:
 
+- 在使用windows 时,当修改描述符任意参数时,必须同步修改字符串描述符,并且卸载驱动,否则windows会认为设备未更改,继续使用旧的驱动,导致无法识别设备。Linux 不受此限制。
+- QQ 群文件中下载 RemoveGhostDev64.exe 可以自动删除所有 USB 注册的驱动信息,无需第一步

+ 5 - 2
docs/source/demo/usbd_audiov2.rst

@@ -1,6 +1,9 @@
 usbd_audiov2
 ===============
 
-.. note:: 在使用windows 时,当修改描述符任意参数时,必须同步修改字符串描述符,并且卸载驱动,否则windows会认为设备未更改,继续使用旧的驱动,导致无法识别设备。Linux 不受此限制。
+在使用 UAC2.0 时,需要注意以下几点:
 
-.. note:: windows 10 uac2.0 功能不完善,请使用 windows 11 测试uac2.0 功能。Linux 不受此限制。
+- 在使用windows 时,当修改描述符任意参数时,必须同步修改字符串描述符,并且卸载驱动,否则windows会认为设备未更改,继续使用旧的驱动,导致无法识别设备。Linux 不受此限制。
+- QQ 群文件中下载 RemoveGhostDev64.exe 可以自动删除所有 USB 注册的驱动信息,无需第一步
+- windows 10 uac2.0 功能不完善,请使用 windows 11 测试uac2.0 功能。Linux 不受此限制
+- windows 中设置的采样率表范围在多通道时(通道数大于2)计算有误,比如设置 8K~96K,那么实际是大于等于8K 小于96K,而非小于等于96K。Linux 不受此限制

+ 7 - 8
docs/source/index.rst

@@ -44,10 +44,9 @@ CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的
 
 **其他相关链接**
 
-- **CherryUSB 大纲** https://www.bilibili.com/video/BV1st4y1H7K2
-- **CherryUSB 从机协议栈视频教程** https://www.bilibili.com/video/BV1Ef4y1t73d
-- **CherryUSB 腾讯会议** https://www.bilibili.com/video/BV16x421y7mM
-- **github** https://github.com/sakumisu/CherryUSB
+- **视频教程**:  https://www.bilibili.com/cheese/play/ss707687201
+- **github** : https://github.com/sakumisu/CherryUSB
+- **CherryUSB原理性分析和应用实践-汉斯期刊**: https://www.hanspub.org/journal/paperinformation?paperid=126903
 
 .. toctree::
    :maxdepth: 1
@@ -57,10 +56,9 @@ CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的
    quick_start/demo
    quick_start/transplant
    quick_start/rtthread
-   quick_start/esp
-   q&a
-   opensource
-   share
+   quick_start/q&a
+   quick_start/share
+   quick_start/opensource
 
 .. toctree::
    :maxdepth: 1
@@ -116,6 +114,7 @@ CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的
    demo/usbh_wifi
    demo/usbd_vendor
    demo/usbh_vendor
+   demo/usb_otg
 
 .. toctree::
    :maxdepth: 1

+ 15 - 0
docs/source/quick_start/demo.rst

@@ -29,6 +29,21 @@
 - esp32p4:一个 USB2.0 内置全速 PHY 芯片,一个 USB2.0 内置高速 PHY 芯片,支持主从机。
 - 默认 demo 采用组件库安装的形式,在 https://components.espressif.com/ 中搜索 cherryusb 即可
 
+ESP-Registry 可以参考官方文档,推荐使用 vscode + esp-idf 的开发环境。
+
+- ctrl + shift + p 选择 ESP-IDF 欢迎界面,然后选择 Component mananger
+
+.. figure:: img/esp1.png
+
+- 找到 cherryusb 并安装
+
+.. figure:: img/esp2.png
+
+- 打开 menuconfig,并打开 cherryusb 的配置,根据实际情况选择主机或者从机模式
+
+.. figure:: img/esp3.png
+.. figure:: img/esp4.png
+
 基于飞腾派系列芯片(官方 SDK 支持)
 -----------------------------------
 

+ 0 - 17
docs/source/quick_start/esp.rst

@@ -1,17 +0,0 @@
-基于 ESP-Registry 开发指南
-===========================
-
-ESP-Registry 可以参考官方文档,推荐使用 vscode + esp-idf 的开发环境。
-
-- ctrl + shift + p 选择 ESP-IDF 欢迎界面,然后选择 Component mananger
-
-.. figure:: img/esp1.png
-
-- 找到 cherryusb 并安装
-
-.. figure:: img/esp2.png
-
-- 打开 menuconfig,并打开 cherryusb 的配置,根据实际情况选择主机或者从机模式
-
-.. figure:: img/esp3.png
-.. figure:: img/esp4.png

BIN
docs/source/quick_start/img/question1.png


BIN
docs/source/quick_start/img/question2.png


+ 0 - 0
docs/source/opensource.rst → docs/source/quick_start/opensource.rst


+ 40 - 14
docs/source/q&a.rst → docs/source/quick_start/q&a.rst

@@ -46,16 +46,52 @@ GD IP 采用 DWC2,但是读取的硬件参数都是 0(我也不懂为什么
     USB_OTG_INEP(i)->DIEPCTL = (USB_OTG_DIEPCTL_EPDIS | USB_OTG_DIEPCTL_SNAK);
     USB_OTG_OUTEP(i)->DOEPCTL = (USB_OTG_DOEPCTL_EPDIS | USB_OTG_DOEPCTL_SNAK);
 
+除此之外可能存在其他未知 BUG,请自行测试。
+
+开启 USB_LOG_DBG 后无法枚举
+----------------------------------------------------------------
+
+有且仅有商业性 IP 开启后可以枚举,其余 IP 禁止开启,否则无法枚举。懂得都懂。
+
+USB3 CV测试用哪个版本
+------------------------------
+
+1.4.3 版本及以上
+
+Ep addr XXX fifo overflow
+------------------------------
+
+.. figure:: img/question1.png
+
+该错误表示该端点默认设置的 fifo 空间不够用,需要增大 fifo 空间,通常见于 DWC2/MUSB IP。FIFO 设置参考相关的 glue 文件。
+
 Ep addr XXX overflow
 ------------------------------
 
-该 IP 硬件上没有这么多端点, 请更换 IP or 减少端点使用。并且默认 demo 不做双向功能,考虑到不是所有的 IP 都支持,因此默认是 81 02 这样的而不是 81 01,
-如果支持,自行修改。某些 IP 双向端点可能会占用相同的硬件信息,不一定能同时使用,自行检查。
+.. figure:: img/question2.png
+
+该错误表示该 IP 硬件上没有这么多端点, 请更换 IP or 减少端点使用。
+当然也可以修改为双向端点,考虑到不是所有的 IP 都支持双向端点,因此默认 demo 不做双向功能,举例默认是 81 02 这样的而不是 81 01,如果支持,自行修改。某些 IP 双向端点可能会占用相同的硬件信息,不一定能同时使用,自行检查。
 
 This dwc2 version does not support dma mode, so stop working
 ----------------------------------------------------------------
 
-该 DWC2 版本不支持 dma 模式,禁止使用。
+该 DWC2 版本不支持 dma 模式,禁止使用。不使用 DMA 模式会频繁触发 NAK 中断(大概几十us一次),CPU 占用率过高。
+
+OTG 有哪些芯片支持
+------------------------------
+
+当前主线仅 HPM 芯片支持 OTG 功能,通过 ID 引脚自动切换主从模式,其他芯片请使用手动切换模式 OR 自行实现添加 ID 识别的驱动。
+
+PC 识别的 COM 口如何更改名称
+----------------------------------------------------------------
+
+这是微软对 CDC ACM 的驱动问题,无法修改,如需修改,请联系微软并缴纳费用+编写驱动后即可更改。
+
+connect 和 disconnect event 不触发
+----------------------------------------------------------------
+
+当前仅 hpm 芯片支持 connect 和 disconnect 事件,其他芯片请使用 USB 检测 vbus 电路。DWC2 IP 支持,但是由于需要占用引脚,并且大多是log 口,然后不同使能的配置也不一样,因此不做支持。
 
 __has_include 报错
 ------------------------------------------------------------------
@@ -78,6 +114,7 @@ Failed to enable port
 
 USB_ERR_NAK 说明
 ----------------------------------------------------------------
+
 USB_ERR_NAK 只存在于 DWC2 buffer dma 模式,DWC2 在 buffer dma模式下对于中断传输不支持硬件处理 NAK 中断,因此需要软件处理,导致 NAK 中断非常多,建议搭配定时器使用。
 DWC2 scatter/gather dma 模式下全部由硬件处理,但是不支持 split 传输。总结, **半斤 IP**。
 
@@ -85,14 +122,3 @@ USB host 连接 USB 网卡问题
 ----------------------------------------------------------------
 
 表现为能识别网卡并且分配到 IP 地址,但是无法 ping 通,这是因为网卡自身需要开启自动拨号,通常需要使用 AT 口设置。具体为 EC20/ML307 等模块。
-
-PC 识别的 COM 口如何更改名称
-----------------------------------------------------------------
-
-这是微软对 CDC ACM 的驱动问题,无法修改,如需修改,请联系微软并缴纳费用即可更改。
-
-connect 和 disconnect event 不触发
-----------------------------------------------------------------
-
-当前仅 hpm 芯片支持 connect 和 disconnect 事件,其他芯片请使用 USB 检测 vbus 电路。DWC2 IP 支持,但是由于需要占用引脚,并且大多是log 口,
-然后不同使能的配置也不一样,因此不做支持。

+ 0 - 0
docs/source/share.rst → docs/source/quick_start/share.rst


+ 5 - 3
docs/source/usb/usb_ext.rst

@@ -29,9 +29,11 @@ ZLP,顾名思义,零长度数据包,也就是数据长度为0 的短包。
 --------------------
 
 从机接收:接收的长度与设置的长度相等;接收的最后一个包为短包。
-从机发送:发送的长度与设置的长度相等,如果发送的长度是 EP MPS 的整数倍,需要再发送一个 ZLP(仅限 control 和 bulk 传输)。
+从机发送:发送的长度与设置的长度相等,如果发送的长度是 EP MPS 的整数倍, **通常** 需要再发送一个 ZLP(仅限 control 和 bulk 传输)。
+
+.. note:: 对于从机接收,并且是 bulk 传输,接收长度通常设计为 EP MPS,以下三种情况可以修改为多个 EP MPS: 固定长度;自定义协议并携带长度(例如 MSC); 主机手动发送 ZLP 或者短包(例如 RNDIS)
+
+.. note:: 对于从机发送,并且是 bulk 传输,发送长度没有限制,但是如果是 EP MPS 整数倍,通常需要发送 ZLP。自定义协议则不需要发送 ZLP,例如 MSC。
 
 主机接收:同从机接收
 主机发送:发送的长度与设置的长度相等
-
-.. note:: 对于从机接收,并且是 bulk 传输,接收长度通常设计为 EP MPS,以下三种情况可以修改为多个 EP MPS: 固定长度;自定义协议并携带长度(例如 MSC); 主机手动发送 ZLP 或者短包(例如 RNDIS)