sakumisu před 2 roky
rodič
revize
9cd88c0ca3
2 změnil soubory, kde provedl 26 přidání a 10 odebrání
  1. 20 4
      docs/source/porting_usbip.rst
  2. 6 6
      docs/source/quick_start/index.rst

+ 20 - 4
docs/source/porting_usbip.rst

@@ -48,6 +48,22 @@ FSDEV 仅支持从机。这个 ip 不同厂家基本都是基于标准的 usb 
       - 同上
       - 1
 
+fsdev 需要外置 dp 上拉才能使用,有些芯片可能是接上拉电阻,有些芯片可能是设置寄存器,举例如下:
+
+.. code-block:: C
+
+    USB->BCDR |= (uint16_t)USB_BCDR_DPPU;
+
+如果不存在 BCDR 寄存器,则一般是配置如下,并且该设置需要配置到 `usb_dc_low_level_init` 中或者 `usb_dc_init` 最后都行:
+
+.. code-block:: C
+
+  /* Pull up controller register */
+  #define DP_CTRL ((__IO unsigned*)(0x40001820))
+
+  #define _EnPortPullup() (*DP_CTRL = (*DP_CTRL) | 0x10000000);
+  #define _DisPortPullup() (*DP_CTRL = (*DP_CTRL) & 0xEFFFFFFF);
+
 MUSB
 --------------------------
 
@@ -153,11 +169,11 @@ MUSB IP 支持主从,并且由 **mentor** 定义了一套标准的寄存器偏
 DWC2
 --------------------------
 
-DWC2 IP 支持主从,并且由 **synopsys** 定义了一套标准的寄存器偏移。大部分厂家都使用标准的寄存器偏移,所以如果是从机仅需要修改 `USBD_IRQHandler` 、 `USB_BASE` 、 `USB_NUM_BIDIR_ENDPOINTS` ,主机仅需要修改 `USBH_IRQHandler` 、 `USB_BASE`  即可。
+DWC2 IP 支持主从,并且由 **synopsys** 定义了一套标准的寄存器偏移。大部分厂家都使用标准的寄存器偏移(除了 GCCFG(GGPIO)寄存器),所以如果是从机仅需要修改 `USBD_IRQHandler` 、 `USB_BASE` 、 `USB_NUM_BIDIR_ENDPOINTS` ,主机仅需要修改 `USBH_IRQHandler` 、 `USB_BASE`  即可。
 
-其次还有需要注意 VBUS SENSING 这个项,也会影响 USB 的正常枚举,如何修改参考 `GD32 dwc2驱动的GCCFG_NOVBUSSENS寄存器兼容性和stm32存在区别 <https://github.com/sakumisu/CherryUSB/issues/64>`_。
+.. note:: GCCFG(GGPIO) 根据不同的厂家设置不同,会影响 usb 枚举,需要根据厂家提供的手册进行配置,并实现 usbd_get_dwc2_gccfg_conf 和 usbh_get_dwc2_gccfg_conf 函数,填充相应需要使能的bit
 
-.. caution:: 主机 port 仅支持有高速功能的 dwc2 ip, 因为他支持 dma 模式,如果厂家买的 ip 不支持 dma 模式,则无法使用。
+.. caution:: 主机 port 仅支持有 dma 功能的 dwc2 ip(代码中会判断当前 ip 是否支持), 如果不支持 dma 模式,则无法使用。
 
 下表为具体芯片从机相关宏的修改值:
 
@@ -213,4 +229,4 @@ EHCI 是 intel 制定的标准主机控制器接口,任何厂家都必须实
   //是否使能 port power bit
   #define CONFIG_USB_EHCI_PORT_POWER
 
-同时由于 EHCI 只是主机控制器,一般配合一个 device 控制器+ otg 控制器,而速度的获取一般是在 otg 寄存器中,所以需要用户实现 `usbh_get_port_speed` 函数。
+同时由于 EHCI 只是主机控制器并且只支持高速,一般配合一个 otg 控制器和一个低速全速兼容控制单元,而速度的获取一般是在 otg 寄存器中,所以需要用户实现 `usbh_get_port_speed` 函数。

+ 6 - 6
docs/source/quick_start/index.rst

@@ -23,8 +23,8 @@
 默认提供以下 demo 工程:
 
 - F103 使用 fsdev ip
-- F429 主从使用 hs port,并且均用 dma 模式
-- H7 设备使用 fs port,主机使用 hs port,并且主机带 cache 支持
+- F429 主从使用 hs port(引脚 pb14/pb15),并且均用 dma 模式
+- H7 设备使用 fs port(引脚 pa11/pa12),主机使用 hs port(引脚 pb14/pb15),并且需要做 nocache 处理
 
 默认删除 Drivers ,所以需要使用 stm32cubemx 生成一下 Drivers 目录下的文件,demo 底下提供了 **stm32xxx.ioc** 文件,双击打开,点击 **Generate Code** 即可。
 
@@ -34,7 +34,8 @@
 
 - usb ip 区别:F1使用 fsdev,F4/H7使用 dwc2
 - dwc2 ip 区别: fs port(引脚是 PA11/PA12) 和 hs port(引脚是 PB14/PB15), 其中 hs port 默认全速,可以接外部PHY 形成高速主机,并且带 dma 功能
-- F4 与 H7 cache 区别、USB BASE 区别
+- F4 无cache,H7 有 cache
+- H7 的 USB_BASE 与其他系列有区别,需要在 usb_config.h 中配置
 
 如果是 STM32F7/STM32H7 这种带 cache 功能,需要将 usb 使用到的 ram 定位到 no cache ram 区域。举例如下
 
@@ -61,9 +62,6 @@
     }
     }
 
-
-.. caution :: 如果使用 STM32F7 或者 STM32H7, 请在 CFLAG 中添加 STM32F7 或者 STM32H7 宏定义,否则无法枚举
-
 .. figure:: img/keil.png
 
 USB Device 移植要点
@@ -79,6 +77,8 @@ USB Device 移植要点
 .. figure:: img/stm32_3_1.png
 .. figure:: img/stm32_3.png
 
+.. caution :: 如果使用 STM32H7 FS PORT, 请修改 USB_BASE 为 0x40080000UL
+
 - 配置 usb clock 为 48M
 
 .. figure:: img/stm32_4_1.png