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