summaryrefslogtreecommitdiff
path: root/docs/source
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2023-12-25 22:06:35 +0800
committersakumisu <[email protected]>2023-12-25 22:06:35 +0800
commit56c2b3413151a638ade84df3068992511e70de3c (patch)
treef8215eac3eef8cc792870e790b14589888defc3a /docs/source
parentf68a86ea89c6c9bbc3bc662b0f593dd7c850a450 (diff)
update stm32 demo rst
Diffstat (limited to 'docs/source')
-rw-r--r--docs/source/quick_start/index.rst27
1 files changed, 22 insertions, 5 deletions
diff --git a/docs/source/quick_start/index.rst b/docs/source/quick_start/index.rst
index 1090631b..fe4e1a79 100644
--- a/docs/source/quick_start/index.rst
+++ b/docs/source/quick_start/index.rst
@@ -23,8 +23,8 @@
默认提供以下 demo 工程:
- F103 使用 fsdev ip
-- F429 主从使用 hs port(引脚 pb14/pb15),并且均用 dma 模式
-- H7 设备使用 fs port(引脚 pa11/pa12),主机使用 hs port(引脚 pb14/pb15),并且需要做 nocache 处理
+- F429 主从使用 USB_OTG_HS, 引脚 pb14/pb15, 并且都使用 dma 模式
+- H7 设备使用 USB_OTG_FS, 引脚 pa11/pa12,主机使用 USB_OTG_HS ,引脚 pb14/pb15,并且需要做 nocache 处理
默认删除 Drivers ,所以需要使用 stm32cubemx 生成一下 Drivers 目录下的文件,demo 底下提供了 **stm32xxx.ioc** 文件,双击打开,点击 **Generate Code** 即可。
@@ -33,7 +33,7 @@
涵盖 F1/F4/H7,其余芯片基本类似,不再赘述,具体区别有:
- usb ip 区别:F1使用 fsdev,F4/H7使用 dwc2
-- dwc2 ip 区别: fs port(引脚是 PA11/PA12) 和 hs port(引脚是 PB14/PB15), 其中 hs port 默认全速,可以接外部PHY 形成高速主机,并且带 dma 功能
+- dwc2 ip 区别: USB_OTG_FS (引脚是 PA11/PA12) 和 USB_OTG_HS (引脚是 PB14/PB15), 其中 USB_OTG_HS 默认全速,可以接外部PHY 形成高速主机,并且带 dma 功能
- F4 无cache,H7 有 cache
如果是 STM32F7/STM32H7 这种带 cache 功能,需要将 usb 使用到的 ram 定位到 no cache ram 区域。举例如下
@@ -97,7 +97,14 @@ USB Device 移植要点
.. figure:: img/stm32_8.png
-- 如果使用 dwc2 ip,编译选项中需要添加 `CONFIG_USB_DWC2_PORT=xxx`,使用 PA11/PA12 则 **xxx=FS_PORT**,使用 PB14/PB15 则 **xxx=HS_PORT**
+- 如果使用 dwc2 ip,需要增加 **usb_glue_st.c** 文件,并在 `usb_config.h` 中实现以下宏:
+
+.. code-block:: C
+ // 以下细节如有出入,请对照 stm32xxx.h 文件修改
+ #define USBD_IRQHandler OTG_HS_IRQHandler // pa11/pa12 引脚使用 OTG_FS_IRQHandler
+ #define USBD_BASE (0x40040000UL) // pa11/pa12 引脚一般使用 50000000UL,STM32F7/H7 使用 0x40080000UL
+ #define CONFIG_USBDEV_EP_NUM 6 // pa11/pa12 引脚使用 4
+ #define CONFIG_USB_DWC2_RAM_SIZE 4096 // pa11/pa12 引脚使用 1280
.. figure:: img/stm32_9.png
@@ -119,7 +126,7 @@ USB Device 移植要点
USB Host 移植要点
^^^^^^^^^^^^^^^^^^^^^^
-前面 7 步与 Device 一样。需要注意,host 驱动只支持带 dma 的 hs port (引脚是 PB14/PB15),所以 fs port (引脚是 PA11/PA12)不做支持(没有 dma 你玩什么主机)。
+前面 6 步与 Device 一样。需要注意,host 驱动只支持带 dma 的 hs port (引脚是 PB14/PB15),所以 fs port (引脚是 PA11/PA12)不做支持(没有 dma 你玩什么主机)。
- 添加 CherryUSB 必须要的源码( **usbh_core.c** 、 **usbh_hub.c** 、 **usb_hc_dwc2.c** 、以及 **osal** 目录下的适配层文件),以及想要使用的 class 驱动,并且可以将对应的 **usb host.c** 添加方便测试。
@@ -136,6 +143,16 @@ USB Host 移植要点
.. figure:: img/stm32_13.png
.. figure:: img/stm32_19.png
+- 复制一份 **cherryusb_config_template.h**,放到 `Core/Inc` 目录下,并命名为 `usb_config.h`
+
+- 增加 **usb_glue_st.c** 文件,并在 `usb_config.h` 中实现以下宏:
+
+.. code-block:: C
+ // 以下细节如有出入,请对照 stm32xxx.h 文件修改
+ #define USBH_BASE (0x40040000UL)
+ #define USBH_IRQHandler OTG_HS_IRQHandler
+ #define CONFIG_USBHOST_PIPE_NUM 12
+
- 调用 **usbh_initialize** 以及 os 需要的启动线程的函数即可使用
.. figure:: img/stm32_20.png