Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Mastering USB Host Bare-Metal Development: From Low-Level Drivers to Real-World Applications
Welcome
Course Intro (Same as Promo) (3:09)
Course Requirements
USB History and Standards
Getting the best out of this course (1:32)
Benefits for Developers and Users (3:53)
The History of USB Standards (7:32)
Overview of USB Type-C (1:28)
The Most Recent Standards (4:45)
Understanding USB OTG (3:37)
The USB Pinout and Signals (2:57)
Understanding USB Connector Types (5:37)
USB Naming Schemes (5:14)
Summary of USB Standards (4:24)
Why Universal Serial Bus? (4:12)
The USB Architecture
USB Device Descriptors (5:39)
Understanding the USB Descriptor Hierarchy (3:29)
Endpoints and Pipes (4:12)
Transfer Types (4:17)
The USB Topology (4:59)
Responsibilities of the Host (5:14)
Hosts, Devices and Hubs (4:02)
A closer look at USB Device Classes (7:17)
USB-OTG vs. Host (2:34)
The Enumeration Process
Understanding USB Descriptors (5:14)
Understanding the Enumeration Process (3:01)
Detecting the Device and the Speed of the Device (4:59)
Determining What Device is Attached (2:40)
Completing the Enumeration Process (4:06)
USB Data Transfers
A Closer Look at Endpoints (5:49)
Factors for Selecting Transfer Types (5:33)
Control, Interrupt, Isochronous and Bulk Transfers (8:34)
Priority Access of Bandwidth for Transfer Types (2:49)
Priority Access Case Study (1:31)
The USB Ptotocol
Understanding USB Endpoints (4:35)
The USB Transaction Types (4:11)
Understanding USB Pipes (1:44)
The USB Packet Types (3:16)
The 3 Phases of the Transaction Workflow (4:57)
The Packet IDs and their Names (1:41)
The Interrupt Transcation Flow (7:13)
The Bulk Transcation Flow (3:47)
The Isochronous Transcation Flow (2:42)
The STM32 USB OTG_FS Subsystem
USB Integration accross the STM32 Family (7:37)
Introduction to the STM32_USB_OTG_FS (4:10)
Overview of the OTG_FS Capabilities (3:07)
The USB OTG_FS Block Diagram (5:35)
The Clock Source and CPU Interaction of the USB Core (3:00)
Data Transmission and Reception (1:35)
The Peripheral Endpoints (5:50)
The Endpoint Control Features (1:03)
Endpoint and Peripheral Core Interrupts (1:41)
The Host Enumeration Process and Registers for Management (4:18)
The USB Data FIFOs (3:38)
The USB Host Data FIFOs (3:43)
The STM32 USB Configuration and Management Registers
The USB Core Global Registers (4:42)
The Host Mode Registers (6:25)
The Device Mode Registers (2:38)
The Data FIFO Access Registers (1:32)
Classification of the USB Registers (2:50)
The USB Software Stack
Overview of the USB Stack (1:17)
The USB Device States (1:25)
The USB Data Transfer Flow (3:41)
Initializing and Starting the USB Device (1:51)
Adding Custom Endpoints (2:39)
Analyzing the various Layers of the USB Stack (7:10)
Overview of Key Files and Functions
Overview of Some Key Files and Functions of the USB Stack (7:48)
Overview of the HID Class Driver Functions (1:43)
Some Parameters for Configuring the USB Device Driver (3:25)
Developing the Low Level Driver Files
Programming: Creating the Workspace (3:20)
Programming: Getting the Required Documentation for the Microcontroller (3:26)
Programming: Integrating the Right Packages (10:21)
Programming: Implementing the Correct Folder Structure (6:05)
Programming: Setting Up the Project Paths (11:39)
Programming: Definining the Main Enumerator Types (8:09)
Programming: Definining the USB Configuration Structure (3:26)
Programming: Definining the USB Endpoint Type Structure (4:02)
Programming: Definining the USB Host Channel Type Structure (4:04)
Programming: Defining Some Macros for Holding Mode and Speed Values (3:31)
Programming: Defining Macros for the Frame Interval, Frequency and MPS (7:44)
Programming: Defining Macros for the Endpoint Configuration (3:01)
Programming: Defining Macros for the Status Codes (2:09)
Programming: Defining Macros for Host Channel and Test Modes (3:52)
Programming: Defining Macros for Some Key USB Registers (6:36)
Programming: Defining Macros for Dealing with Interrupts (3:19)
Programming: Implementing the Device Definitions File (5:51)
Programming: Implementing the USB Core Initialization Function (10:32)
Programming: Implementing the USB Core Reset Function (6:34)
Programming: Implementing the Function for Setting the Turnaround Time (7:44)
Programming: Implementing the Functions for Enabling and Disabling Global Interrupts (0:49)
Programming: Creating the Timebase Files (3:55)
Programming: Analyzing the System Clock Tree (6:15)
Programming: Configuring the System Clock Tree (5:49)
Programming: Analyzing the Documentation for Systick (4:31)
Programming: Implementing the Timebase Initialization Function (10:27)
Programming: Implementing the Delay Function (3:11)
Programming: Implementing the Function for Setting the Current Mode (4:24)
Programming: Implementing the get_mode() Function (2:03)
Programming: Implementing the Device Initialization Function(Pt.1) (6:42)
Programming: Implementing the Device Initialization Function(Pt.2) (3:16)
Programming: Implementing the Device Initialization Function(Pt.3) (11:22)
Programming: Implementing the set_device_speed( ) Function (2:10)
Programming: Implementing the get_device_speed( ) Function (2:23)
Programming: Implementing the TX and RX FIFO Flush Functions (7:09)
Programming: Implement the usb_activate_endpoint( ) Function (9:10)
Programming: Implement the usb_deactivate_endpoint( ) Function (4:31)
Programming: Implement the endpoint_start_transfer( ) Function(Pt.1) (8:07)
Programming: Implement the endpoint_start_transfer( ) Function(Pt.2) (5:37)
Programming: Implement the endpoint_start_transfer( ) Function(Pt.3) (2:51)
Programming: Implement the endpoint_start_transfer( ) Function for the Control Endpoint (4:46)
Teach online with
The History of USB Standards
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock