From 8d5bbd34aae075b997c0052910d42f0130982de4 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Sat, 26 Mar 2022 21:36:56 +0800 Subject: [PATCH] update quick start doc --- docs/source/index.rst | 4 +- docs/source/quick_start/bl702.rst | 4 +- docs/source/quick_start/ch32v307.rst | 2 - docs/source/quick_start/es32f369.rst | 78 +++++++++++++++++++++++++++ docs/source/quick_start/img/1.png | Bin 0 -> 19690 bytes docs/source/quick_start/img/2.png | Bin 0 -> 3458 bytes docs/source/quick_start/img/3.png | Bin 0 -> 6704 bytes docs/source/quick_start/img/4.png | Bin 0 -> 6754 bytes docs/source/quick_start/img/5.png | Bin 0 -> 6557 bytes 9 files changed, 82 insertions(+), 6 deletions(-) delete mode 100644 docs/source/quick_start/ch32v307.rst create mode 100644 docs/source/quick_start/es32f369.rst create mode 100644 docs/source/quick_start/img/1.png create mode 100644 docs/source/quick_start/img/2.png create mode 100644 docs/source/quick_start/img/3.png create mode 100644 docs/source/quick_start/img/4.png create mode 100644 docs/source/quick_start/img/5.png diff --git a/docs/source/index.rst b/docs/source/index.rst index 36890796..d0e41e77 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -10,11 +10,11 @@ CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的 .. toctree:: :maxdepth: 3 - :caption: 快速入门 + :caption: 快速上手 quick_start/bl702 quick_start/stm32f429 - quick_start/ch32v307 + quick_start/es32f369 quick_start/rt-thread/rt-thread_zh .. toctree:: diff --git a/docs/source/quick_start/bl702.rst b/docs/source/quick_start/bl702.rst index 8d83e55a..c7f11bbc 100644 --- a/docs/source/quick_start/bl702.rst +++ b/docs/source/quick_start/bl702.rst @@ -1,6 +1,6 @@ -基于 BL702 开发指南 +基于 BL 系列开发指南 ========================= -BL702 USB 的开发主要使用 bl_mcu_sdk,关于 bl_mcu_sdk 的环境搭建,参考 `bl_mcu_sdk 环境搭建 `_。 +BL 系列 USB 的开发主要使用 bl_mcu_sdk,关于 bl_mcu_sdk 的环境搭建,参考 `bl_mcu_sdk 环境搭建 `_。 USB 的相关应用位于 `examples/usb` 目录下,环境搭建完成后,即可编译使用。 \ No newline at end of file diff --git a/docs/source/quick_start/ch32v307.rst b/docs/source/quick_start/ch32v307.rst deleted file mode 100644 index 3df76b1e..00000000 --- a/docs/source/quick_start/ch32v307.rst +++ /dev/null @@ -1,2 +0,0 @@ -基于 CH32V307 开发指南 -========================= diff --git a/docs/source/quick_start/es32f369.rst b/docs/source/quick_start/es32f369.rst new file mode 100644 index 00000000..fdf68525 --- /dev/null +++ b/docs/source/quick_start/es32f369.rst @@ -0,0 +1,78 @@ +基于 ES32F369 开发指南 +========================= + +ES32F3xx 系列单片机中 USB 外设使用标准的 musb ip,并且拥有 usb device 和 usb host 功能。本章主要介绍如何在东软载波的 ES32F369x 开发板中使用 CherryUSB。 + +首先需要从 essemi 官网下载 `keil 芯片支持包 `_ 并安装,下载 `ES32 SDK `_ ,并进入 ES32 SDK 中,复制 `Drivers` 到 如图所示目录下: + +.. figure:: img/1.png + +进入 MDK-ARM 目录下,双击 `example.uvprojx` 打开工程,选择好调试器后,编译烧录即可。 +如果是从机,默认提供的是 cdc acm 的示例,代码烧录以后,将 usb 线插到 板子的丝印为 USB-OTG 口,并接上电脑,按下复位键,电脑便会枚举出一个串口。打开串口,勾选 DTR 可以接收数据,在发送缓冲区填入数据并发送,调试器的串口便可以打印出接收的长度和数据。 +如果是主机,则需要一个 usb 母口转接线,并接入相关 usb 设备,就可以进行测试了。比如接上 鼠标、U盘、4G 网卡等等。 + +USB Device 移植要点 +----------------------- + +针对自定义的工程移植,需要以下步骤: + +- 准备好可以进行调试打印的工程,并且实现 `printf`。 +- 拷贝 CherryUSB 源码到工程里 +- 添加 CherryUSB 源码和头文件路径,其中 `usbd_core.c` 和 `usb_dc_musb.c` 为必须添加项。 + +.. figure:: img/2.png +.. figure:: img/3.png + +- 实现 `usb_dc_low_level_init` 函数,该函数主要负责 USB 时钟、引脚、中断的初始化。例如 + +.. code-block:: C + + void usb_dc_low_level_init(void) + { + ald_pmu_perh_power_config(PMU_POWER_USB, ENABLE); + ald_cmu_perh_clock_config(CMU_PERH_USB, ENABLE); + ald_cmu_perh_clock_config(CMU_PERH_GPIO, ENABLE); + ald_cmu_usb_clock_config(CMU_USB_CLOCK_SEL_HOSC, CMU_USB_DIV_1); + ald_rmu_reset_periperal(RMU_PERH_USB); + ald_mcu_irq_config(USB_INT_IRQn, 2, 2, ENABLE); + ald_mcu_irq_config(USB_DMA_IRQn, 2, 2, ENABLE); + usb_pin_init(); + } + +- 描述符的注册、class的注册、接口的注册、端点中断的注册。不会的参考 demo 下的 template 。 +- 调用 `usbd_initialize` 初始化 usb 硬件。 +- 正常使用。 + + +USB Host 移植要点 +----------------------- + +针对自定义的工程移植,需要以下步骤: + +- 准备好可以进行调试打印的带 FreeRTOS 或者 RT-Thread 的工程,并且实现 `printf`、 `malloc` 、 `free` 函数(也可以直接勾选 Use microlib 来使用)。 +- 拷贝 CherryUSB 源码到工程里 +- 添加 CherryUSB 源码和头文件路径,其中 `usbh_core.c` 和 `usb_hc_musb.c` 、 osal 下的文件为必须添加项。 + +.. figure:: img/4.png +.. figure:: img/5.png + +- 由于是作为主机,推荐添加所有的 class,功能全面。当然如果只用一个 class ,就添加一个。 +- 实现 `usb_hc_low_level_init` 函数,该函数主要负责 USB 时钟、引脚、中断的初始化。例如 + +.. code-block:: C + + void usb_hc_low_level_init(void) + { + ald_pmu_perh_power_config(PMU_POWER_USB, ENABLE); + ald_cmu_perh_clock_config(CMU_PERH_USB, ENABLE); + ald_cmu_perh_clock_config(CMU_PERH_GPIO, ENABLE); + ald_cmu_usb_clock_config(CMU_USB_CLOCK_SEL_HOSC, CMU_USB_DIV_1); + ald_rmu_reset_periperal(RMU_PERH_USB); + ald_mcu_irq_config(USB_INT_IRQn, 2, 2, ENABLE); + ald_mcu_irq_config(USB_DMA_IRQn, 2, 2, ENABLE); + usb_pin_init(); + } + +- 调用 `usbh_initialize` 初始化 usb 硬件。 +- 此时编译会报错,因为协议栈中为每个 class 都添加了测试 demo,文件在 `usb_host.c` 中,如果不想要,可以直接删除。 +- 正常使用。 \ No newline at end of file diff --git a/docs/source/quick_start/img/1.png b/docs/source/quick_start/img/1.png new file mode 100644 index 0000000000000000000000000000000000000000..ce010843af70d3b7fa184a6586c4ce4b2325f22e GIT binary patch literal 19690 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 DGxw%R literal 0 HcmV?d00001 diff --git a/docs/source/quick_start/img/3.png b/docs/source/quick_start/img/3.png new file mode 100644 index 0000000000000000000000000000000000000000..2712dc503154fc0bf693d5682c294f07b083c2db GIT binary patch literal 6704 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 literal 0 HcmV?d00001 diff --git a/docs/source/quick_start/img/4.png b/docs/source/quick_start/img/4.png new file mode 100644 index 0000000000000000000000000000000000000000..59cfcaeca107172199c0be382a07fa267c7ca7d1 GIT binary patch literal 6754 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