From 46cbbdd48c0c6f91e2f80c3e3ddc1c54676eab29 Mon Sep 17 00:00:00 2001 From: Roman Leonov Date: Thu, 19 Oct 2023 09:58:52 +0200 Subject: [PATCH] feat(docs): added USB Host Stack Configuration description --- docs/_static/usb_host/poweron-timings.png | Bin 0 -> 39711 bytes .../en/api-reference/peripherals/usb_host.rst | 41 ++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 docs/_static/usb_host/poweron-timings.png diff --git a/docs/_static/usb_host/poweron-timings.png b/docs/_static/usb_host/poweron-timings.png new file mode 100644 index 0000000000000000000000000000000000000000..867253da18d734fef4d86af9f0628431169986df GIT binary patch literal 39711 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

hoK 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 literal 0 HcmV?d00001 diff --git a/docs/en/api-reference/peripherals/usb_host.rst b/docs/en/api-reference/peripherals/usb_host.rst index 2f0756b43f..5007bea0e3 100644 --- a/docs/en/api-reference/peripherals/usb_host.rst +++ b/docs/en/api-reference/peripherals/usb_host.rst @@ -390,6 +390,47 @@ UVC * A host class driver for the USB Video Device Class is distributed as a managed component via the `ESP-IDF Component Registry `__. * The :example:`peripherals/usb/host/uvc` example demonstrates the usage of the UVC host driver to receive a video stream from a USB camera and optionally forward that stream over Wi-Fi. +.. ---------------------------------------------- USB Host Menuconfig -------------------------------------------------- + +Host Stack Configuration +------------------------ + +Non-Compliant Device Support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To support USB devices that are non-compliant in various scenarios or exhibit specific behaviors it is possible to configure the USB Host stack. + +As a USB device may be hot-plugged, it is essential to have the configurable delays between power switching and device attachment, and when the device's internal power has stabilized. + +Enumeration Configuration +""""""""""""""""""""""""" + +During the process of enumerating connected USB devices, several timeout values ensure the proper functioning of the device. + +.. figure:: ../../../_static/usb_host/poweron-timings.png + :align: center + :alt: USB Root Hub Power-on and Connection Events Timing + :figclass: align-center + + USB Root Hub Power-on and Connection Events Timing + +The figure above shows all the timeouts associated with both turning on port power with a device connected and hot-plugging a device. + +* After a port is reset or resumed, the USB System Software is expected to provide a “recovery” interval of 10 ms before the device attached to the port is expected to respond to data transfers. +* After the reset/resume recovery interval, if a device receives a SetAddress() request, the device must be able to complete processing of the request and be able to successfully complete the Status stage of the request within 50 ms. +* After successful completion of the Status stage, the device is allowed a SetAddress() recovery interval of 2 ms. + +.. note:: + + For more details regarding connection event timings, please refer to the Universal Serial Bus 2.0 specification, chapter 7.1.7.3 "Connect and Disconnect Signaling". + +Configurable parameters of the USB host stack can be configured with multiple options via Menuconfig. + +* For Debounce delay refer to :ref:`CONFIG_USB_HOST_DEBOUNCE_DELAY_MS` +* For Reset hold interval refer to :ref:`CONFIG_USB_HOST_RESET_HOLD_MS` +* For Reset recovery interval refer to :ref:`CONFIG_USB_HOST_RESET_RECOVERY_MS` +* Fer SetAddress() recovery interval refer to: :ref:`CONFIG_USB_HOST_SET_ADDR_RECOVERY_MS` + .. -------------------------------------------------- API Reference ---------------------------------------------------- API Reference