Deploying to gh-pages from @ cherry-embedded/CherryUSB@68b28a43f3 🚀
This commit is contained in:
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
BIN
_images/usbhost_uvc1.gif
Normal file
BIN
_images/usbhost_uvc1.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.2 MiB |
@@ -56,3 +56,7 @@ Klipper is a 3d-printer firmware.
|
||||
适配链接:待开放
|
||||
|
||||
|
||||
MAKCU/KMBOX
|
||||
--------------
|
||||
|
||||
懂的都懂,不开放
|
||||
@@ -11,11 +11,11 @@ Q & A
|
||||
提问中请包含以下信息:
|
||||
|
||||
- 使用的板子,引脚,USB IP
|
||||
- USB 中断,时钟,引脚,寄存器地址是否正确,截图
|
||||
- 是否配置 USB 中断,USB 时钟,USB 引脚,USB phy 配置,以及 USB 寄存器地址是否正确,截图
|
||||
- 是否能进 USB 中断
|
||||
- 芯片是否带有 cache功能,是否做了 no cache 处理,截图
|
||||
- 硬件是否正常,是否使用杜邦线连接,如果正常,请说明正常原因
|
||||
- 配置 **#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG** 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举
|
||||
- 如果能进中断,配置 **#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG** 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举
|
||||
- 是否流片并销售
|
||||
|
||||
其余问题提问模板
|
||||
|
||||
@@ -116,12 +116,12 @@ USB Device 移植要点
|
||||
- 如果使用 fsdev ip,勾选 **USB** 。如果使用 dwc2 ip,勾选 **USB_OTG_FS** 或者勾选 **USB_OTG_HS**。开启 USB 中断,其他配置对我们没用,代码中不会使用任何 st 的 usb 库。
|
||||
|
||||
.. figure:: img/stm32_3_1.png
|
||||
.. figure:: img/stm32_3.png
|
||||
.. figure:: img/stm32_3_2.png
|
||||
|
||||
- 配置 usb clock 为 48M
|
||||
|
||||
.. figure:: img/stm32_4_1.png
|
||||
.. figure:: img/stm32_4.png
|
||||
.. figure:: img/stm32_4_2.png
|
||||
|
||||
- 选择好工程,这里我们选择 keil,设置好 stack 和 heap,如果使用 msc 可以推荐设置大点,然后点击 **Generate Code**。
|
||||
|
||||
@@ -214,10 +214,12 @@ USB Host 移植要点
|
||||
|
||||
- 拷贝 **xxx_msp.c** 中的 `HAL_HCD_MspInit` 函数中的内容到 `usb_hc_low_level_init` 函数中,屏蔽 st 生成的 usb 初始化
|
||||
- 在中断函数中调用 `USBH_IRQHandler`,并传入 `busid`
|
||||
|
||||
.. figure:: img/stm32_19.png
|
||||
|
||||
- 链接脚本修改参考 :ref:`usbh_link_script` 章节
|
||||
- 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
|
||||
- 调用 `usbh_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS`
|
||||
- 启动线程
|
||||
|
||||
.. figure:: img/stm32_18.png
|
||||
.. figure:: img/stm32_19.png
|
||||
|
||||
@@ -6,26 +6,24 @@
|
||||
USB Device 移植要点
|
||||
-----------------------
|
||||
|
||||
- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 `usbd_core.c` 和 `usb_dc_xxx.c` 为必须添加项。而 `usb_dc_xxx.c` 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
|
||||
- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 `usbd_core.c` 和 `usb_dc_xxx.c` 为必须添加项。而 `usb_dc_xxx.c` 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
|
||||
- 拷贝 `cherryusb_config_template.h` 文件到自己工程目录下,命名为 `usb_config.h`,并添加相应的目录头文件路径
|
||||
- 实现 `usb_dc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
|
||||
- 描述符的注册、class的注册、接口的注册、端点中断的注册。不会的参考 demo 下的 template
|
||||
- 调用 `usbd_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBDEV_MAX_BUS`
|
||||
- 在中断函数中调用 `USBD_IRQHandler`,并传入 `busid`, 如果你的 SDK 中中断入口已经存在 `USBD_IRQHandler` ,请更改 USB 协议栈中的名称
|
||||
- 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
|
||||
- 编译使用。各个 class 如何使用,参考 demo 下的 template
|
||||
- 注册描述符并调用 `usbd_initialize`,填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBDEV_MAX_BUS`,可以直接使用 demo 下的 template
|
||||
|
||||
USB Host 移植要点
|
||||
-----------------------
|
||||
|
||||
- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 `usbh_core.c` 、 `usb_hc_xxx.c` 以及 **osal** 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 `usb_hc_xxx.c` 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
|
||||
- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 `usbh_core.c` 、 `usb_hc_xxx.c` 以及 **osal** 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 `usb_hc_xxx.c` 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
|
||||
- 拷贝 `cherryusb_config_template.h` 文件到自己工程目录下,命名为 `usb_config.h`,并添加相应的目录头文件路径
|
||||
- 实现 `usb_hc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
|
||||
- 调用 `usbh_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS`
|
||||
- 在中断函数中调用 `USBH_IRQHandler`,并传入 `busid`, 如果你的 SDK 中中断入口已经存在 `USBH_IRQHandler` ,请更改 USB 协议栈中的名称
|
||||
- 链接脚本修改参考 :ref:`usbh_link_script` 章节
|
||||
- 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
|
||||
- 编译使用。基础的 cdc + hid + msc 参考 `usb_host.c` 文件,其余参考 **platform** 目录下适配
|
||||
- 调用 `usbh_initialize` ,填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS` 。基础的 cdc + hid + msc 参考 `usb_host.c` 文件,其余参考 **platform** 目录下适配
|
||||
|
||||
.. _usbh_link_script:
|
||||
|
||||
|
||||
@@ -7,19 +7,23 @@
|
||||
|
||||
.. figure:: img/ohci.png
|
||||
|
||||
- 主机 UVC & UAC 类 EHCI IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包
|
||||
- EHCI IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头
|
||||
|
||||
.. figure:: img/ehci_hostuvc1.png
|
||||
.. figure:: img/ehci_hostuvc2.png
|
||||
|
||||
- 主机 UVC & UAC 类 DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包
|
||||
演示 USB Host UVC 驱动 648 * 480 YUV 摄像头。FPS 30。
|
||||
|
||||
.. figure:: img/usbhost_uvc.gif
|
||||
|
||||
- DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头
|
||||
|
||||
.. figure:: img/dwc2_hostuvc1.png
|
||||
.. figure:: img/dwc2_hostuvc2.png
|
||||
.. figure:: img/dwc2_hostuvc3.png
|
||||
.. figure:: img/dwc2_hostuac.png
|
||||
|
||||
- 主机 UVC & UAC 类 MUSB IP 中 ISO 驱动和 UAC/UVC 框架, MUSB 需要为 mentor 公司制定的标准 IP
|
||||
- MUSB IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。MUSB 需要为 mentor 公司制定的标准 IP
|
||||
|
||||
- 从机 MTP 类驱动, 支持多文件和多文件夹,支持 MCU 端增删文件并与 PC 同步
|
||||
|
||||
@@ -35,5 +39,5 @@
|
||||
.. figure:: img/rndistx.png
|
||||
.. figure:: img/rndisrx.png
|
||||
|
||||
- 定制化 class 驱动或者 IP 驱动
|
||||
- 定制化 class 驱动或者 IP 驱动适配
|
||||
- 技术支持相关
|
||||
@@ -60,6 +60,7 @@
|
||||
<li class="toctree-l2"><a class="reference internal" href="#lvgl">LVGL</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#qmk">QMK</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#klipper">Klipper</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#makcu-kmbox">MAKCU/KMBOX</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="share.html">开发者经验/开源项目分享</a></li>
|
||||
@@ -211,6 +212,10 @@
|
||||
<p>Klipper is a 3d-printer firmware.</p>
|
||||
<p>适配链接:待开放</p>
|
||||
</section>
|
||||
<section id="makcu-kmbox">
|
||||
<h2>MAKCU/KMBOX<a class="headerlink" href="#makcu-kmbox" title="Link to this heading"></a></h2>
|
||||
<p>懂的都懂,不开放</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
4
q&a.html
4
q&a.html
@@ -181,11 +181,11 @@
|
||||
<p>提问中请包含以下信息:</p>
|
||||
<ul class="simple">
|
||||
<li><p>使用的板子,引脚,USB IP</p></li>
|
||||
<li><p>USB 中断,时钟,引脚,寄存器地址是否正确,截图</p></li>
|
||||
<li><p>是否配置 USB 中断,USB 时钟,USB 引脚,USB phy 配置,以及 USB 寄存器地址是否正确,截图</p></li>
|
||||
<li><p>是否能进 USB 中断</p></li>
|
||||
<li><p>芯片是否带有 cache功能,是否做了 no cache 处理,截图</p></li>
|
||||
<li><p>硬件是否正常,是否使用杜邦线连接,如果正常,请说明正常原因</p></li>
|
||||
<li><p>配置 <strong>#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG</strong> 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举</p></li>
|
||||
<li><p>如果能进中断,配置 <strong>#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG</strong> 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举</p></li>
|
||||
<li><p>是否流片并销售</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
<img alt="../_images/stm32_3_1.png" src="../_images/stm32_3_1.png" />
|
||||
</figure>
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/stm32_3.png" src="../_images/stm32_3.png" />
|
||||
<img alt="../_images/stm32_3_2.png" src="../_images/stm32_3_2.png" />
|
||||
</figure>
|
||||
<ul class="simple">
|
||||
<li><p>配置 usb clock 为 48M</p></li>
|
||||
@@ -297,7 +297,7 @@
|
||||
<img alt="../_images/stm32_4_1.png" src="../_images/stm32_4_1.png" />
|
||||
</figure>
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/stm32_4.png" src="../_images/stm32_4.png" />
|
||||
<img alt="../_images/stm32_4_2.png" src="../_images/stm32_4_2.png" />
|
||||
</figure>
|
||||
<ul class="simple">
|
||||
<li><p>选择好工程,这里我们选择 keil,设置好 stack 和 heap,如果使用 msc 可以推荐设置大点,然后点击 <strong>Generate Code</strong>。</p></li>
|
||||
@@ -418,6 +418,11 @@
|
||||
<ul class="simple">
|
||||
<li><p>拷贝 <strong>xxx_msp.c</strong> 中的 <cite>HAL_HCD_MspInit</cite> 函数中的内容到 <cite>usb_hc_low_level_init</cite> 函数中,屏蔽 st 生成的 usb 初始化</p></li>
|
||||
<li><p>在中断函数中调用 <cite>USBH_IRQHandler</cite>,并传入 <cite>busid</cite></p></li>
|
||||
</ul>
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/stm32_19.png" src="../_images/stm32_19.png" />
|
||||
</figure>
|
||||
<ul class="simple">
|
||||
<li><p>链接脚本修改参考 <a class="reference internal" href="transplant.html#usbh-link-script"><span class="std std-ref">主机链接脚本修改</span></a> 章节</p></li>
|
||||
<li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="transplant.html#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
|
||||
<li><p>调用 <cite>usbh_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite></p></li>
|
||||
@@ -426,9 +431,6 @@
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/stm32_18.png" src="../_images/stm32_18.png" />
|
||||
</figure>
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/stm32_19.png" src="../_images/stm32_19.png" />
|
||||
</figure>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
@@ -169,27 +169,25 @@
|
||||
<section id="usb-device">
|
||||
<h2>USB Device 移植要点<a class="headerlink" href="#usb-device" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 <cite>usbd_core.c</cite> 和 <cite>usb_dc_xxx.c</cite> 为必须添加项。而 <cite>usb_dc_xxx.c</cite> 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
|
||||
<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 <cite>usbd_core.c</cite> 和 <cite>usb_dc_xxx.c</cite> 为必须添加项。而 <cite>usb_dc_xxx.c</cite> 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
|
||||
<li><p>拷贝 <cite>cherryusb_config_template.h</cite> 文件到自己工程目录下,命名为 <cite>usb_config.h</cite>,并添加相应的目录头文件路径</p></li>
|
||||
<li><p>实现 <cite>usb_dc_low_level_init</cite> 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。</p></li>
|
||||
<li><p>描述符的注册、class的注册、接口的注册、端点中断的注册。不会的参考 demo 下的 template</p></li>
|
||||
<li><p>调用 <cite>usbd_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBDEV_MAX_BUS</cite></p></li>
|
||||
<li><p>在中断函数中调用 <cite>USBD_IRQHandler</cite>,并传入 <cite>busid</cite>, 如果你的 SDK 中中断入口已经存在 <cite>USBD_IRQHandler</cite> ,请更改 USB 协议栈中的名称</p></li>
|
||||
<li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
|
||||
<li><p>编译使用。各个 class 如何使用,参考 demo 下的 template</p></li>
|
||||
<li><p>注册描述符并调用 <cite>usbd_initialize</cite>,填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBDEV_MAX_BUS</cite>,可以直接使用 demo 下的 template</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="usb-host">
|
||||
<h2>USB Host 移植要点<a class="headerlink" href="#usb-host" title="Link to this heading"></a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 <cite>usbh_core.c</cite> 、 <cite>usb_hc_xxx.c</cite> 以及 <strong>osal</strong> 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 <cite>usb_hc_xxx.c</cite> 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
|
||||
<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 <cite>usbh_core.c</cite> 、 <cite>usb_hc_xxx.c</cite> 以及 <strong>osal</strong> 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 <cite>usb_hc_xxx.c</cite> 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
|
||||
<li><p>拷贝 <cite>cherryusb_config_template.h</cite> 文件到自己工程目录下,命名为 <cite>usb_config.h</cite>,并添加相应的目录头文件路径</p></li>
|
||||
<li><p>实现 <cite>usb_hc_low_level_init</cite> 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。</p></li>
|
||||
<li><p>调用 <cite>usbh_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite></p></li>
|
||||
<li><p>在中断函数中调用 <cite>USBH_IRQHandler</cite>,并传入 <cite>busid</cite>, 如果你的 SDK 中中断入口已经存在 <cite>USBH_IRQHandler</cite> ,请更改 USB 协议栈中的名称</p></li>
|
||||
<li><p>链接脚本修改参考 <a class="reference internal" href="#usbh-link-script"><span class="std std-ref">主机链接脚本修改</span></a> 章节</p></li>
|
||||
<li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
|
||||
<li><p>编译使用。基础的 cdc + hid + msc 参考 <cite>usb_host.c</cite> 文件,其余参考 <strong>platform</strong> 目录下适配</p></li>
|
||||
<li><p>调用 <cite>usbh_initialize</cite> ,填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite> 。基础的 cdc + hid + msc 参考 <cite>usb_host.c</cite> 文件,其余参考 <strong>platform</strong> 目录下适配</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="usbh-link-script">
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -166,7 +166,7 @@
|
||||
<img alt="../_images/ohci.png" src="../_images/ohci.png" />
|
||||
</figure>
|
||||
<ul class="simple">
|
||||
<li><p>主机 UVC & UAC 类 EHCI IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包</p></li>
|
||||
<li><p>EHCI IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头</p></li>
|
||||
</ul>
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/ehci_hostuvc1.png" src="../_images/ehci_hostuvc1.png" />
|
||||
@@ -174,8 +174,12 @@
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/ehci_hostuvc2.png" src="../_images/ehci_hostuvc2.png" />
|
||||
</figure>
|
||||
<p>演示 USB Host UVC 驱动 648 * 480 YUV 摄像头。FPS 30。</p>
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/usbhost_uvc1.gif" src="../_images/usbhost_uvc1.gif" />
|
||||
</figure>
|
||||
<ul class="simple">
|
||||
<li><p>主机 UVC & UAC 类 DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包</p></li>
|
||||
<li><p>DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头</p></li>
|
||||
</ul>
|
||||
<figure class="align-default">
|
||||
<img alt="../_images/dwc2_hostuvc1.png" src="../_images/dwc2_hostuvc1.png" />
|
||||
@@ -190,7 +194,7 @@
|
||||
<img alt="../_images/dwc2_hostuac.png" src="../_images/dwc2_hostuac.png" />
|
||||
</figure>
|
||||
<ul class="simple">
|
||||
<li><p>主机 UVC & UAC 类 MUSB IP 中 ISO 驱动和 UAC/UVC 框架, MUSB 需要为 mentor 公司制定的标准 IP</p></li>
|
||||
<li><p>MUSB IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。MUSB 需要为 mentor 公司制定的标准 IP</p></li>
|
||||
<li><p>从机 MTP 类驱动, 支持多文件和多文件夹,支持 MCU 端增删文件并与 PC 同步</p></li>
|
||||
</ul>
|
||||
<figure class="align-default">
|
||||
@@ -215,7 +219,7 @@
|
||||
<img alt="../_images/rndisrx.png" src="../_images/rndisrx.png" />
|
||||
</figure>
|
||||
<ul class="simple">
|
||||
<li><p>定制化 class 驱动或者 IP 驱动</p></li>
|
||||
<li><p>定制化 class 驱动或者 IP 驱动适配</p></li>
|
||||
<li><p>技术支持相关</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user