docs: update rst

Signed-off-by: sakumisu <1203593632@qq.com>
This commit is contained in:
sakumisu
2025-11-25 20:31:23 +08:00
parent 73f5b843dc
commit 11cb54f735
13 changed files with 90 additions and 45 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

View File

@@ -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 供电。

View File

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

View File

@@ -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 不受此限制

View File

@@ -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

View File

@@ -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 支持)
-----------------------------------

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -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 口,
然后不同使能的配置也不一样,因此不做支持。

View File

@@ -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