USB 2.0 Speed Identification
Non-Return-to-Zero Inverted (NRZI)
(PDF) Packet and Transaction Types
Packet Types and Packet Fields
USB is Host Driver Demonstration
Endpoint Types (Transfer Types)
NO CODE GENERATION IN STM32CubeMX
My Method to Explain Clocking
Creating Temporary STM32CubeMX Project
USB Module Requires 48 MHz Signal
Understanding Clock Frequency Requirements
Understanding PLL Prescalers SYSCLK and HCLK
Understanding MCO Divider
Initial Steps to Configure the Clock
Configuring Flash Latency
CMSIS Fld2Val and Val2Fld Macros
Enabling and Configuring PLL
Configuring APB-Prescaler
Correction of PLL Configuration Trap
Testing Clock Configuration
Verifying the Clock Frequency Using Oscilloscope
Reconfiguring SWO Clock Frequency
Firmware Architecture We Will Be Using
Creating Driver Source and Header Files and Accessing USB Regions
Configuring GPIOs as USB Pins
Tips to Get the Most Benefits
Skimming Core and Device Configuration
Initializing USB Core Interrupts
Connecting the USB Device to the Bus (Using Firmware)
Testing Connecting the USB Device to the Host
USB Core Global Interrupts
USB Global Interrupt Handler
Steps of Handling USB Reset Signal
NOTICE about "Deconfiguring Endpoint" lecture
NOTE: Parameters Validation and Code Documentation
Understanding FIFO Dedicated Memory
Configuring FIFOs While Configuring Endpoints
Transfer Completed Interrupts
USB Speed Enumeration Done Handler
Implementing RxFIFO Not Empty Interrupt Handler
SETUP and OUT Transfer Completed Status Data
Popping Data from the RxFIFO (From an OUT endpoint)
Pushing Data into a TxFIFO (To an IN endpoint)
Fixing Compilaiton Error (Reorder Some Functions)
Polling on Interrupt Level
Defining USB Device States
Defining USB Control Transfer Stages
Defining USB Device Instance Structure
Starting to Configure the USB Device Instance
Implementing USB Reset Handler
[DRIVER] Implementing USB Set Address
Triggering USB Reset Event (Calling the Handler)
Reading the Received Requests
Understanding USB Request Structure
Understanding USB Standard Device Requests
Defining the Structure of USB Requests
Starting Processing the Requests
Investigating the First Request
Defining Descriptor Structure
Writing the Device Descriptor
Defining the Standard Request Macros (wValue)
Defining a Variable after a Switch Case Error
Write a Packet ONLY when the Endpoint is Empty
Starting Implementing Control Stage Processor
Handling GET DEVICE Descriptor Request
Handling IN and OUT Endpoint Interrupts
Handling IN and OUT Transfer Completed
Sending the Last Packet of Transactions
Processing OUT-STATUS Stage
Processing IN-DATA Zero Sub-Stage
Call the Implemented Functions Before Testing
Viewing the First Successful Communication in SysLog
Viewing the First Successful Communication in Wireshark
Processing SET ADDRESS Request
Setting Device Address after transaction completion
Processing IN-STATUS Stage
Viewing no SET ADDRESS Error in SysLog
Viewing SET ADDRESS Request and Response in Wireshark
Viewing full GET DEVICE DESCRIPTOR response in Wireshark
Viewing GET CONFIGURATION request in Wireshark
Understanding the idea of combining descriptors
Defining CONFIGURATION descriptor placeholder
Merging the CONFIG-Combination into one definition
Handling GET CONFIGURATION DESCRIPTOR request
Understanding the size of CONFIG-Combination
Processing SET CONFIGURATION request
Defining use-case-specific configuration function
Simple USB Mouse specifications
Writing CONFIGURATION descriptor
Writing INTERFACE descriptor
Writing ENDPOINT descriptor
Introducing HID Report descriptor / HID report structure
Compacting HID report descriptor
Packing data encapsulations (no word alignment)
Introducing Set Idle and Get HID Report descriptor requests
Handling SET IDLE request
Handling GET HID REPORT descriptor request
Responding to INTERRUPT IN tokens
Testing the USB HID Mouse
Changing descriptors order (Windows compatibility)