|
|
@@ -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` 函数。
|