Consultancy and Total Solutions Training Provider for Embedded Systems, Electronics and Electrical Engineering, Programming, Computing, Operations, ISO9000, ISO14000 and Management.

Bridging the Gap

Training Courses

USB Interfacing for Bare-metal Embedded Systems

Course id: 0055


The Universal Serial Bus (USB) is ubiquitous amongst computing devices as it provides a compact data and power connection for external devices to a computing system. Initially developed for the PC environment, USB is now even available on the humble 8-bit microcontrollers.

The ubiquity of USB however, does not hide the fact that it is a complex bus that requires proper hardware and software support. This course concentrates on the detailed understanding of USB and developing code to support bare-metal programs requiring USB connectivity. It also covers the important aspect of using Windows and/or Linux drivers to achieve PC-embedded systems connectivity.

Course highlight
Participants would be programming the STM32F103ZE ARM Cortex-M3 microcontroller with the Keil MDK-ARM compiler.

What you will learn

This course concentrates on the theoretical and practical knowledge to allow participants to achieve the following learning outcomes. Upon completing the course, participants would be able to:
  • Know how USB works, such as packet types, endpoints and transfers
  • Implement HID and CDC class device
  • Use Windows/Linux USB drivers within host applications

Who should attend

This course is suitable for engineers who are involved with USB connectivity with bare-metal embedded systems.


Participants are required to know how to program in C, and have a basic understanding of programming embedded systems.

Course methodology

This course is presented in a workshop style with example-led lectures interlaced with demonstrations and hands-on practical for maximum understanding.

Course duration

3 days.

Course structure

  • Introduction
    • History and background
    • Terminology
    • USB standards
    • Hardware aspects
  • Protocol
    • USBPcap and Wireshark
    • Hands-on practical: Introduction to USBPcap and Wireshark
    • Endpoints
    • Transfer types
    • Transactions
    • Scheduling
    • Error Detection and Recovery
    • Hands-on practical: Analysing USB Packets
  • Device configuration
    • VID and PID
    • Enumeration
    • Endpoint setup
    • Hands-on practical: Configuring the USB Interface
    • Device classes
    • Hands-on practical: CDC Device Class
  • Host programming
    • Standard Windows/Linux USB drivers
    • Integrating drivers with program code
    • Hands-on practical: Using Host Drivers
  • Power control
    • Power request
    • Operating states
    • Hands-on practical: USB Power Control

Course Schedule





News on ProvenPac

  ProvenPac Sdn. Bhd.
  C-4-3 Gembira Park,
  Jalan Riang, 58200
  Kuala Lumpur, Malaysia

  Tel: +603 03 5889 5889

No public course
currently scheduled.


Please inform me when
this course is scheduled.


Please contact me to
arrange in-house training.