 Hello and welcome to this presentation of the STM32F7 USB full-speed and high-speed interfaces. It covers all the features of these interfaces, which are widely used to connect either a PC or a USB device to the microcontroller. This figure shows the connections between an STM32F7 microcontroller and a USB connector. The STM32F7 features a USB full-speed communication interface, allowing the microcontroller to communicate typically with a PC or a USB storage device. The simplest implementation is a USB peripheral device, but the STM32F7 also supports the USB on-the-go functionality. Let's look at some of the key features of this USB full-speed interface, which is a USB specification 2.0 compliant interface that operates at a 12 megabit per second rate. In the simplest form, a USB FS device can be implemented. Built-in support for link power management adds enhanced power modes on top of the USB 2.0 specification. In addition, the on-the-go or OTG functionality enables implementation of an OTG product or an embedded host, both of which have the capacity to behave as a targeted host. The battery charger detection function allows for increased current to be drawn from BC 1.2 compliant chargers up to 1.5 amps. USB 2.0 high speed is also available via the ULPI interface. The same modes of operation are possible when coupling with an external ULPI transceiver. In this block diagram, the USB OTG full-speed controller core is shown in the center with its data FIFOs below. The physical layer or FIFO on its right side handles the analog signal levels, including many specific level detections relating to on-the-go and battery charger detection functions. The USB interrupt goes to the Cortex processor to signal various USB events. The AHB peripheral bus enables read and write access of the controller registers and the power and clock control block. Depending on the use case, whether device only or OTG device, a low or high-speed crystal oscillator is necessary to provide an accurate timing reference for the USB block. In this block diagram, the USB OTG high-speed controller core is shown in the center with its data FIFOs below. The FIFO on its right side handles the analog signal levels, including many specific level detections relating to on-the-go and battery charger detection functions. The USB interrupt goes to the Cortex processor to signal various USB events. The AHB slave interface enables read and write access of the controller registers and the power and clock control block. Transfers to and from memory are handled by a DMA engine inside the controller via the AHB master interface. At any given time, one of the two operating modes will be functional. Peripheral mode, which will be used for a regular device or an OTG device when operating in peripheral mode. Or targeted host mode, which will be used for an embedded host or an OTG device when operating in host mode. Interrupts from this USB block can be triggered by a large number of events or state changes. This slide and the following three slides show all the events that can trigger an interrupt. As can be seen, these interrupt sources are diverse. They range from events related to low power management and OTG to events related to normal host behavior and regular USB reset and disconnect events. In this second slide showing interrupts, another diverse set of sources is described. In this third slide describing interrupt sources, many suspend OTG functions and FIFO status events are listed, as well as a general register access error. Now let's take a brief look at the various low power modes of the PHY and the controller. For the PHY, power down mode can be used, for example, when there is no VBUS present and the session is identified to be not OTG. It is also possible to disable the VBUS sensing related to OTG, A and B sessions, if the OTG function is not used. During suspend mode, there is no dynamic signaling occurring over the USB interface. So three different controls are offered to lower the power consumption as desired by the application. Low power modes for the high speed core are similar to the full speed, but the modes concerning the PHY are not listed, as in this case the PHY or transceiver is an external component. The USB peripheral is active in run and sleep modes. In stop mode, the USB is not available, but the contents of its registers are kept. In standby mode, the USB peripheral is powered down and must be re-initialized when returning to a higher power state. Within the USB module, certain dedicated bits are implemented to allow debug functionality in a USB application. They relate to FIFO status and contents and the scheduling of periodic cues in host mode. Additional details of these debug bits are listed in this table. Here is an application example of a low power device. Power is drawn directly from the USB VBUS signal. A single crystal oscillator starting from 4 MHz is needed outside. For complete USB specification documents, please refer to usb.org. The USB 2.0 document home page has a zip file containing the USB 2.0 and OTG 2.0 specifications and an ECN for LPM. The USB device class documents page has the battery charger specification.