Microchip Technology Inc
Menu

USB MCUs & dsPIC® DSCs

Universal Serial Bus has grown to become a common interface in many embedded industrial, medical, automotive, and consumer applications. Microchip provides designers with a scalable choice of integrated USB solutions across 8-, 16- and 32-bit microcontrollers ranging from space-saving 14-pin devices to feature-rich 288-pin Hi-Speed and Full Speed USB On-the-Go (OTG) products. This allows simple, compact designs to easily expand to offer more capabilities as requirements demand.

8-bit USB PIC MCUs


  • 8 KB-128 KB of Flash, 14-80 pins
  • Wide range of additional communication modules
  • Wide operating voltage ranges
    1.8-5.5V
  • Available features include:
    • 12-bit ADC
    • CTMU
    • XLP

16-bit USB PIC MCUs and dsPIC DSCs


  • PIC24 and dsPIC33 Families with Device/Host/OTG Capability
  • Up to 70 MIPS operation
  • Small form factor packages
  • Wide range of memory: 32 KB - 1024 KB Flash, up to 96 KB of RAM
  • eXtreme Low Power (XLP) MCUs for power saving
  • High integration of peripherals together with USB:
    • Motor Control Peripherals
    • Dual CAN 2.0
    • Cryptographic Engine
    • Advanced Integrated Analog
    • Segmented LCD
    • VBAT Battery Back-Up
  • Operating temperature up to 125°C

32-bit USB MCUs


  • 32-bit PIC & SAM Families
  • Up to 300 MHz/600 DMIPs
  • Up to 2 MB Flash & 640 KB SRAM
  • Hi-Speed & Full Speed USB with Device/Host/OTG capabilities
  • Crystal-less USB options
  • Dual USB options
  • 14 – 288 pins
  • Packages as small as 1.9 x 2.4 mm
  • XLP & ULP low power options
  • USB with other features:
    • Dual CAN-FD & Ethernet
    • Motor Control  & Advanced Analog
    • MOST/MediaLB
    • TDM/I2S, SQI, EBI ,Crypto & more
Tabs / USB / Microcontrollers
Products
Documentation
Tools
Software
FAQs

Starter Kits & Xplained Kits


Microchip provides Starter Kits & Xplained Kits for the full range of 8-bit, 16-bit, and 32-bit MCUs and DSCs featuring USB peripherals. All contain integrated programmer/debuggers and pre-installed demo application software.

usb-pic32mm-curiosity-thumb-08142017

PIC32MM USB Curiosity Development Board


The PIC32MM USB Curiosity Development Board features the new eXtreme Low Power (XLP), PIC32MM “GPM” family (PIC32MM0256GPM064) of low cost microcontrollers. This board is a simple and easy to use platform that facilitates quick PIC32MM GPM evaluation, experimentation and application prototyping.




usb-curiosity-pic32mx470-thumb-08142017

Curiosity PIC32MX470 Development Board


The Curiosity PIC32 MX470 Development Board features PIC32MX Series (PIC32MX470512H) with a 120MHz CPU, 512KB Flash, 128KB RAM , Full Speed USB and multiple expansion options. It is an excellent development board for Audio, USB and Bluetooth® Applications.




usb-curiosity-pic32mzef-thumb-08142017

Curiosity PIC32MZEF Development Board


The Curiosity PIC32 MZ EF Development Board is a fully integrated 32-bit development platform featuring the high performance PIC32MZ EF Series (PIC32MZ2048EFM) that has a 2MB Flash, 512KB RAM, integrated FPU, Hi-Speed USB, Crypto accelerator and excellent connectivity options.




PIC32MZ EF Starter Kit

PIC32MZ EF Starter Kit


The PIC32MZ Embedded Connectivity with Floating Point Unit (EF) Family Starter Kit (DM320007 for non-Crypto development or DM320007-C for Crypto development) provides a low-cost method for the development and testing of USB and Ethernet-based applications with PIC32MZ EF family devices.




PIC32MZ EF Starter Kit with Cypto Engine

PIC32MZ EF Starter Kit with Crypto Engine


The PIC32MZ Embedded Connectivity with Floating Point Unit (EF) Family Starter Kit (DM320007 for non-Crypto development or DM320007-C for Crypto development) provides a low-cost method for the development and testing of USB and Ethernet-based applications with PIC32MZ EF family devices.




PIC32MX1/2/5 Starter Kit

PIC32MX1/2/5 Starter Kit


The PIC32MX1/2/5 Starter Kit provides the user with an easy and cost effective option to experience the USB and CAN functionality of the new PIC32MX1/2/5 family of microcontrollers. The board features a 50MHz/83DMIPS PIC32MX570F512L MCU with 512 KB Flash, 64KB RAM, USB Device/Host/OTG, CAN 2.0B, 48 Channel ADC, Analog Comparators, SPI Ports and UARTs.




PIC32 Bluetooth Starter Kit

PIC32 Bluetooth Starter Kit


This Kit is a low-cost Bluetooth development platform featuring the PIC32MX270F256D MCU. It features a HCI-based Bluetooth radio, pushbuttons, Cree high-output multi-color LED, standard single-color LEDs, accelerometer, temperature sensor and GPIO for rapid development of Bluetooth Serial Port Profile (SPP), USB and General Purpose applications. The starter kit also features a plug-in interface for audio CODEC daughter card which is set to release at a later stage to support Bluetooth audio.




PIC18 Starter Kit

PIC32 USB Starter Kit III (DM320003-3)


The new PIC32 USB starter kit – III offers an easy and cost effective means to explore the USB, mTouch and SPI/I2S functionality of the new PIC32MX3/MX4 microcontrollers. The starter kit uses a PIC32MX450/470 microcontroller. The board comes equipped with everything that is needed including Microchip’s free USB software to develop USB embedded host/device/OTG applications. The PIC32 USB starter kit - III has the same form factor and expansion connector as the PIC32 starter kits enabling it to connect with other PIC32 expansion boards.




PIC18 Starter Kit

PIC18F Starter Kit (DM180021)


The PIC18 Starter Kit functions as a USB mouse, joystick or mass storage device all using the on-board capacitive touch sense pads. It includes a MicroSD™ memory card, potentiometer, acceleration sensor, and OLED display. This board features the PIC18F46J50 MCU with 64KB Flash, 4KB RAM, XLP low power, mTouch touch sensing and USB.




MPLAB<sup>®</sup> Starter Kit for PIC24F

PIC24F Starter Kit (DM240011)


The PIC24F Starter Kit contains everything needed to begin exploring the high performance and versatility of the PIC24F microcontroller family. This inexpensive kit includes USB device and host connectors, tri-color LED, capacitive touch pad and an OLED display. Menu driven demonstration software supports data logging, thumb drive, and graphics applications to test the PIC24F MCU.




PIC24E (DM240012) and dsPIC33E USB Starter Kits (DM330012)

PIC24E (DM240012) and dsPIC33E USB Starter Kits (DM330012)


These starter kits provide a low cost method for the development and testing of USB device, embedded host and On-The-Go applications using the PIC24E MCU and dsPIC33E DSC families. Included on each board are 3 user-programmable LEDs, 3 push button switches and an expansion header compatible with the Multimedia Expansion Board (DM320005) and I/O Expansion Board (DM320002). The starter kits come preloaded with basic Communication Device Class (CDC) demonstration software.




PIC32 USB Starter Kit II (DM320003-2)

PIC32 USB Starter Kit II (DM320003-2)


Develop USB device, embedded host, and On-The-Go applications on this starter kit with an expansion connector for use with boards such as the PIC32 I/O Expansion Board (DM320002) The starter kit uses a PIC32MX795F512L running at 80 MHz and with 128 KB of RAM, 512 KB of Flash program memory, a 4-channel DMA and a CAN peripheral. Includes example project files for HID class device mode, MSD class host mode and CDC class device mode.




usb-saml22-xpro-thumb-08142017

SAM L22 Xplained Pro Evaluation Kit


The SAM L22 Xplained Pro evaluation kit is the ideal platform for evaluating the ultra-low power SAM L22 ARM® Cortex®-M0+ microcontroller. The kit includes TSLCD1 Xplained Pro extension board for touch & segment LCD applications  and ECC508 Crypto Authentication device to enable advanced elliptic curve cryptography.




usb-saml21-xpro-thumb-08142017

SAM L21 Xplained Pro Evaluation Kit


The SAM L21 Xplained Pro evaluation kit is ideal for evaluating and prototyping with the ultra low power SAM L21 ARM® Cortex®-M0+ based microcontrollers. Xplained Pro extension kits that are compatible with SAM L21 Xplained Pro can be purchased individually.




usb-samg55-xpro-thumb-08142017

SAM G55 Xplained Pro Evaluation Kit


The SAM G55 Xplained Pro evaluation kit is ideal for evaluation and prototyping with the SAM G55 Cortex®-M4 processor-based microcontrollers. Extension boards to the SAM G55 Xplained Pro can be purchased individually. 




usb-samv71-xult-thumb-08142017

SAM V71 Xplained Ultra Evaluation Kit


The SAM V71 Xplained Ultra evaluation kit is ideal for evaluating and prototyping with the SAM V71, SAM V70, SAM S70 and SAM E70 ARM® Cortex®-M7 based microcontrollers. Xplained Pro Extension kits compatible with SAM V71 Xplained Ultra can be purchased individually.




usb-same70-xpld-thumb-08142017

SAM E70 Xplained Evaluation Kit


The SAM E70 Xplained evaluation kit is ideal for evaluating and prototyping with SAM S70 and SAM E70 ARM® Cortex®-M7 core- based microcontrollers. Extension boards for the SAM E70 Xplained can be purchased individually.




usb-samd21-xpro-thumb-08142017

SAM D21 Xplained Pro Evaluation Kit


The SAM D21 Xplained Pro evaluation kit is ideal for evaluating and prototyping with the SAM D21 ARM® Cortex®-M0+ based microcontrollers. Xplained Pro Extension kits compatible with SAM D21 Xplained Pro can be purchased individually.




usb-samd11-xpro-thumb-08142017

SAM D11 Xplained Pro Evaluation Kit


The SAM D11 Xplained Pro evaluation kit is ideal for evaluating and prototyping with the SAM D11 ARM® Cortex®-M0+ based microcontrollers. Extension boards to the SAM D11 Xplained Pro can be purchased individually.




usb-sam4e-xpro-thumb-08142017

SAM4E Xplained Pro Evaluation Kit


The SAM4E Xplained Pro evaluation kit is ideal for evaluation and prototyping with the SAM4E Cortex®-M4 processor-based microcontrollers. Xplained Pro extension boards that are compatible with SAM4E Xplained Pro can be purchased individually.




usb-sam4l8-xpro-thumb-08142017

SAM4L8 Xplained Pro Evaluation Kit


The SAM4L8 Xplained Pro evaluation kit is ideal for evaluation and prototyping with the SAM4L8 Cortex®-M4 processor-based microcontroller. Extension boards for this kit can also be individually purchased.




usb-sam4s-xpro-thumb-08142017

SAM4S Xplained Pro Evaluation Kit


The SAM4S Xplained Pro evaluation kit is ideal for evaluation and prototyping with the SAM4S Cortex®-M4 processor-based microcontroller. Extension boards for this kit can also be individually purchased.




usb-samda1-xpro-thumb-08142017

SAM DA1 Xplained Pro


The SAM DA1 Xplained Pro evaluation kit is ideal for evaluating and prototyping with the automotive qualified SAM DA1 ARM® Cortex®-M0+ based microcontrollers. Extension boards to the SAM DA1 Xplained Pro can be purchased individually. 




usb-same54-xpro-thumb-08142017

SAM E54 Xplained Pro


The SAM E54 Xplained Pro evaluation kit is a hardware platform for evaluating the ATSAME54P20A microcontroller (MCU). Supported by the Studio integrated development platform, the kit provides easy access to the features of the ATSAME54P20A and explains how to integrate the device into a custom design.




usb-pic32mz-externaldram-thumb-08142017

PIC32MZ Embedded Graphics with External DRAM (DA) Starter Kit


The PIC32MZ Embedded Graphics with External DRAM (DA) Starter Kit (DM320008 for non-Crypto development or DM320008-C for Crypto development) provides a low-cost method for the development and testing of Hi-Speed USB & graphics applications with PIC32MZ DA family devices.




usb-pic32mz-externaldram-crypto-thumb-08142017

PIC32MZ Embedded Graphics with External DRAM (DA) Starter Kit (Crypto)


The PIC32MZ Embedded Graphics with External DRAM (DA) Starter Kit (DM320008 for non-Crypto development or DM320008-C for Crypto development) provides a low-cost method for the development and testing of Hi-Speed USB & graphics applications with PIC32MZ DA family devices.




usb-pic32mz-stackeddram-thumb-08142017

PIC32MZ Embedded Graphics with Stacked DRAM (DA) Starter Kit


The PIC32MZ Embedded Graphics with Stacked DRAM (DA) Starter Kit (DM320010 for non-Crypto development or DM320010-C for Crypto development) provides a low-cost method for the development and testing of Hi-Speed USB & graphics applications with PIC32MZ DA family devices.




usb-pic32mz-stackeddram-crypto-thumb-08142017

PIC32MZ Embedded Graphics with Stacked DRAM (DA) Starter Kit (Crypto)


The PIC32MZ Embedded Graphics with Stacked DRAM (DA) Starter Kit (DM320010 for non-Crypto development or DM320010-C for Crypto development) provides a low-cost method for the development and testing of Hi-Speed USB & graphics applications with PIC32MZ DA family devices.




usb-pic32mx-xlp-starterkit-thumb-08142017

PIC32MX274 XLP Starter Kit


The PIC32MX XLP Starter Kit is a fully integrated 32-bit development platform featuring the high performance PIC32MX274 series MIPS MCU featuring 256KB Flash, 64K of RAM and Full Speed USB in a 72Mhz, eXtreme Low Power (XLP) device.




usb-pic32mkgp-devkit-thumb-08142017

PIC32MK GP Development Kit


The PIC32MK GP Development Kit - DM320106 - offers a low cost solution for developers looking to build projects with the PIC32MK series of devices, featuring a rich assortment of CAN, USB, ADC and GPIO type inputs.



USB PICtail Plus Daughter Board (AC164131)

USB PICtail Plus Daughter Board (AC164131)


This daughter board is used to facilitate rapid implementation and evaluation of USB applications that utilize Microchip’s line of 16- and 32-bit USB microcontrollers and digital signal controllers. It features example circuits for USB device, embedded host and On-The-Go (OTG) and both horizontal and vertical daughter board connection interfaces.




usb-explorer-1632-thumb-08142017

Explorer 16/32 Development Board


The Explorer 16/32 Development Board is a flexible and convenient development, demonstration and testing platform for 16-bit PIC24 MCUs, dsPIC® DSCs and 32-bit PIC32 MCUs from Microchip Technology.




External Controllers


MCP2200 USB to RS232 Demo Board

MCP2200 USB to RS232 Demo Board (MCP2200EV-VCP)


The MCP2200EV-VCP is a USB-to-RS232 development and evaluation board for the MCP2200 USB-to-UART device. The board allows for easy demonstration and evaluation of the MCP2200. The accompanying software allows the special device features to be configured and controlled. The board is powered from USB and has a test point associated with each GPIO pin. In addition, two of these pins are connected to LEDs which can be used to indicate USB-to-UART traffic when the associated pins are configured as TxLED and RxLED pins respectively.




MCP2210 Evaluation Kit

MCP2210 Evaluation Kit (ADM00421)


The MCP2210 Evaluation Kit is a development and evaluation platform for the MCP2210 device. The MCP2210 Motherboard is designed to work together with the MCP2210 Breakout Board. The motherboard provides the test points needed for measurements and it also contains the following SPI slave chips:

  • MCP23S08 – 8-bit I/O expander
  • MCP3204 – 4 channel, 12-bit ADC
  • 25LC02 – 2kbit EEPROM
  • TC77 – temperature sensor

All the mentioned chips are SPI slaves controlled by the MCP2210. The MCP2210 Eval Board Demo software can be used to demonstrate the MCP2210 as a USB-to-SPI (Master) device and allow I/O control. In addition, the MCP2210 Utility software allows custom device configuration. A DLL package is also available in order to allow development of custom software using the MCP2210.




usb-mebiiplus-thumb-08142017

Multimedia Expansion Board II DM320005-5


It is a highly integrated, compact and flexible development platform which works with PIC32MZ Starter Kit. The MEB-II kit features a 4.3” WQVGA maxTouch display daughter board. The kit also has an onboard 24-bit stereo audio codec, VGA camera, 802.11 b/g wireless module, Bluetooth HCI transceiver, temperature sensor, microSD slot and analog accelerometer.



Microchip USB Framework



Microchip Libraries for Applications (MLA)

For 8-bit and 16-bit MCUs and DSCs

The Microchip Libraries for Applications (MLA) enhances inter-operability for applications that need to use more than one library. Once you download the Microchip Libraries for Applications you can select the projects that you need for your application. In addition to the source code, this software package includes: drivers, demos, documentation, and utilities.

MPLAB® Harmony Integrated Software Framework

For PIC32 MCUs

MPLAB® Harmony is a flexible, abstracted, fully integrated firmware development platform for PIC32 microcontrollers. It takes key elements of modular and object oriented design, adds in the flexibility to use a Real-Time Operating System (RTOS) or work without one and provide a framework of software modules that are easy to use, configurable for your specific needs, and that work together in complete harmony.

Advanced Software Framework

The Advanced Software Framework (ASF) is a MCU software library providing a large collection of embedded software for Atmel flash MCUs: megaAVR, AVR XMEGA, AVR UC3 and SAM devices.
It simplifies the usage of microcontrollers, providing an abstraction to the hardware and high-value middlewares
ASF is designed to be used for evaluation, prototyping, design and production phases
ASF is integrated in the Atmel Studio IDE with a graphical user interface or available as standalone for GCC, IAR compilers
ASF can be downloaded for free.

Atmel START

Atmel® START is an innovative online tool for intuitive, graphical configuration of embedded software projects. It lets you select and configure software components, drivers and middleware, as well as complete example projects, specifically tailored to the needs of your application. The configuration stage lets you review dependencies between software components, conflicts and hardware constraints. In the case of a conflict, Atmel START will automatically suggest solutions that fit you specific setup.


USB Overview


What are the differences between USB 1.1 and USB 2.0?

Finalized in 2001, USB 2.0 is an external bus that supports data rates up to 480Mbps. USB 2.0 is an extension of USB 1.1. USB 2.0 is compatible with USB 1.1. USB 2.0 cables and connectors will work with USB 1.1 devices. Not all USB 1.1 cables may work with USB 2.0 devices.

Is there a difference between Hi-Speed USB and USB 2.0? Which is the correct nomenclature?

There is a difference between the terms Hi-Speed USB and USB 2.0. The difference is that USB 2.0 is the specification. "Hi-Speed USB" refers to just the 480 Mbps portion of the USB 2.0 specification. A device can still be USB 2.0 compliant and be full speed or low speed.

How fast an USB device can communicate with a computer using USB?

USB 2.0 supports 1.5Mb/S,12Mb/S, and 480Mb/S speeds which are known as Low Speed, Full Speed, and High Speed respectively.

What is a USB Host?
The Host is the root of the USB tiered star network. It controls the bus and communication is initiated by USB Host. The USB protocol mandates a single Host in any USB system.
I have heard the terms USB Device, peripheral, and Function. What are the differences and what is the correct usage of terms?
The definition found in the USB specification for device notes the ambiguity in the word. The specification details that a “USB device” is either a hub or a function. When using the term “USB Device” should be used in place of “device” to help reduce the ambiguity. Even with the clarification of “USB Device”, some publications use the term “USB Device” when they are referring to any USB enabled device. Because of this inconsistency of term usage, peripheral may be a less ambiguous wording option.

The USB specification does not define the term peripheral in its definitions list but uses it throughout the specification interchangeably for USB device. The USB certification checklists for USB devices are also called the peripheral checklists. The definition for Function in the USB specification says that a function is a USB device that provides some type of capability to the host.
How many devices can be connected to one host?
Each host controller can support up to 127 devices. A host may contain multiple host controllers. The presence of root hubs and/or compound devices may change, based on their implementation, the total available physical devices. Hubs also count as a device on the bus so each hub will also reduce the number of available USB device/peripheral slots.
Who owns and controls the USB specification?
The USB implementers forum also known as USB-IF. Their official website is http://www.usb.org from where you can download latest specification for USB for free.
How is data transferred in USB protocol?
USB Specification defines four different types of data transfers mechanisms:

 

Control Transfer
The USB Host sends commands & query to USB device using Control transfer. The Control transfer uses End point 0(EP0) while USB device is being enumerated and thus it is mandatory to support EP0 by all USB device irrespective of supported speed. The maximum size for a Control packet is 8, 16, 32 or 64 bytes. The packet length of Control transfer in Low-speed USB device must be 8Bytes, for Full-speed USB device must be 64Bytes and for High-speed USB device allows 8, 16, 32 or 64Bytes

Interrupt Transfer
Interrupt transfers are a method for a USB device to request a certain polling rate from the USB host. The polling time is requested to USB Host by USB device during enumeration process. The maximum polling rate for a full-speed device is once per millisecond and once per every 10 milliseconds on low speed devices. The maximum data payload size for Low-speed USB device is 8Bytes, for Full-speed USB device is 64Bytes. This results in a maximum throughput of 64KB/Sec and 800B/Sec is for Low-speed USB device. Interrupt transfers are acknowledged so they guarantee the delivery. If a packet fails to arrive it is retried.

Bulk Transfer
Bulk transfers are a way for devices to transfers large amounts of data but as a consequence do not guarantee timely delivery. Bulk transfers have the lowest priority when it comes to scheduling on the bus. After all other transfers are complete the reset of the remaining bandwidth is given to bulk transfers. Just like interrupt transfers, bulk transfers are acknowledged to guarantee their delivery. Bulk transfers are only supported by Full-speed and High-speed devices. For Full-speed USB device endpoints, the maximum packet size can either be 8, 16, 32 or 64 bytes long. For High-speed USB device endpoints, the maximum packet size can be up to 512 bytes long.

Isochronous Transfer
It provides guarantee of transfer rate. A Full-speed isochronous transaction can send 1023 bytes per frame. Isochronous transfers are not acknowledged. It is possible that isochronous packets will not arrive. A typical application for isochronous transfers is audio/video streaming where it is more important to keep the video and audio up to date at the expense of dropping packets. The maximum transfer rate can be 1023KB/Sec for Full-speed USB device

What is a token packet?
USB protocol defines four types of packets:

 

Start of Frame
Token
Data
Handshake

There are three different types of Token packets.
IN ---- Informs the USB device that the host wants to read information.
OUT---Informs the USB device that the host wants to send the information.
Setup---Used to indicate to the device that a control transfer is about to occur.

How does USB protocol detect an error in communication?
USB protocol detects error using CRC (Cyclic Redundancy Check). This is done by the SIE (Serial Interface Engine), thus eliminating the need of CRC check in software and reduces the software overhead. For token packet CRC is 5 bit & data packet CRC is 16 bits.
What happens if the SIE receives data that is corrupted?
The SIE discards the corrupt packet if the packet fails the CRC checks. No software intervention is required. An error flag is set indicating that a corrupted packet was received. The SIE will not ACK packets that have incorrect CRC values. For interrupt, bulk, and control transfers the host will try to retransmit the packet if it fails to receive the ACK. In this way these transmissions will not have data loss due to a corrupted packet but may suffer from lower application bandwidth.
What is difference between transfer & transaction in USB protocol?
Transfers are groups of transactions and transactions are groups of packets.
What is the largest data packet that I can send?
It depends on type of transferred used. Interrupt & Bulk transfers have a maximum payload size of 64 bytes for full-speed USB devices. Isochronous transfers can send up to 1023 bytes for full-speed USB devices.
What is Enumeration process?
It is the process by which USB host learns about a USB device that has just been connected to the bus. Before the application is able to start running, the host queries the device for various information to determine what type of device it is, what device driver it needs to load for the device, what power requirements the device has, etc. During the enumeration process the USB host also assigns an address to the connected device. After the address is set the USB host will communicate to the device at that address from that point forward. On of the final tasks of the enumeration process is to set the device into a specific operational configuration. A detailed enumeration process is given in section 9.1.2 of USB specification.
How does USB host identify speed of USB device?
The USB host has weak pull down resistors on both of the communication lines (D+ and D-). A device will pull up D+ with a stronger pull-up resistor if it wishes to run in full-speed. If a device wishes to run in low-speed then D- is pulled up instead. The value of pull up resistor in each case is nominally 1K5.
How does the USB host reset the USB device?
The USB host sends a reset to the device by setting D+ and D– low for at least 10 milliseconds. A USB device is allowed to determine that reset has occurred if it sees that D+ and D- are low for more than 2.5 microseconds. Once the USB device detects the reset, it goes into default state as soon as the USB host removes the reset. This reset is a USB reset only and does not reset the controller.
If the USB host issues a reset command for a particular USB device, will it also reset other connected USB devices?
No. The USB host will request that a hub reset the particular connected USB device and only that device will be reset. If the USB host resets the hub itself then all of the devices attached to the hub will be reset.
How does USB host find out the name of connected USB device?
There are several strings located in the device descriptor of the USB device, one of which being the manufacturer string. These strings, if implemented, can be read by the USB host during the enumeration process.
Can there be contention when two USB devices are connected simultaneously to USB Host?
No. The host resets one device at a time and then completes the enumeration of one device before it starts investigating the next device.

Getting Started/Tools


What are the development tools offered by Microchip for USB?
More information about the various USB development and evaluation platforms is available on the “Tools” page.
Where can I buy samples, C compiler, tools etc?
You can buy all them from Microchip Direct or one of Microchip's authorized distribution partners.
What are different types of C compilers available?
A full list of C compilers is available at Microchip C Compilers.
Where can I get all the software?
All software is available with the USB Framework Tool, which is part of the Microchip Applications Library.
Where can I find some precompiled demos for evaluation without having to modify or compile code?
For the USB firmware release v2.1 or later precompiled demos can be found in the “\USB – Precompiled Demos” directory. Documentation is also available in that directory to describe what hardware is required to run the demos, how to load the firmware into the device, and how to run the demo.
What are the resource requirements for the USB stack?
Resource requirements vary depending on the compiler, the processor family, the USB operational mode (Host, USB Device, OTG, etc), the USB class/function driver in use, etc. The resource requirements may also vary between release versions of the USB firmware. Please refer to the release notes of a specific release for the estimated sizes of several combinations of the possible variables.

USB Device/Peripheral


How does a USB hub slow down devices?
USB hub has to recalculate the time left before the end of the frame. The small extra delay added by the hub will decrease the available bandwidth. If several devices are connected on the hub and working in parallel (for example, a webcam + a USB flash drive + a mouse), then the USB bandwidth is shared among the devices usage.
What are the Device classes supported by Microchip?
Currently Microchip supports evaluation USB device versions of HID (Human Interface Device - keyboard, joy stick, mouse etc are examples), CDC (Communication Device – modem, Ethernet adapter etc. are examples), MSD (Mass Storage Device – thumb drive, external hard disk etc. are examples), and Custom device classes – customers can develop their drivers uniquely for their devices.

Please refer to the release notes of the specific software release for more information about the device class support.
What can be maximum cable length between two hubs or two USB devices?
The maximum length of USB cable is 5 meters.
What is difference between “composite” USB device & “compound” USB device?
A “compound” USB device is one with that has a built in hub, in addition to one or more USB peripherals devices, all built into a single product with only one USB cable connecting it to the host.

 

A “composite” USB device does not use hub silicon. It uses more than one interface in a single peripheral device. Currently, Microchip’s Full Speed USB silicon can be used to develop composite USB devices but not compound devices.

Does Microchip custom USB Driver support Windows Vista?
Release versions 1.3 and later contain an updated driver that works on Windows Vista (both 32 and 64 bit versions).
What can be maximum capacitance across Vbus pin of a USB device? Why?
The maximum capacitance as seen by the Vbus pin of the USB connector must be less than 10uF. This is to limit the inrush current that goes into the device when it is plugged into the device. The purpose of limiting the inrush current is to limit the drop in the Vbus voltage due to the charging of the capacitors on the newly attached device. Without limiting the inrush current of hot-plugged devices, a newly attached device may cause other devices to stop working.

If an application requires more capacitance than the spec allows, a soft-start circuit is required to limit the inrush current to the specified limits.
What care should be taken when USB device is self powered?
If the device is self powered, an I/O pin must be used to detect a cable attachment. The D+ or D- line must not be pulled up until USB host drives the Vbus high...

 

A self powered device must also consistently specify that it is self powered. If the configuration descriptor says that it is self powered then any GET_STATUS requests to the device must also return self-powered.

What should I specify in my configuration descriptor if I want to be either bus powered or self powered?
If the device wishes to be bus powered at all, even if it self powered part of the time, then it must declare itself as a bus powered device. The GET_STATUS request should accurately reflect to the host if the USB device is currently running on self power or bus power.
Why do I need INF file while using CDC where as I do not need anything at PC side while using HID class?
The CDC class has many other sub class specifications. The host needs to know which of these device drivers to load for the attached device. This information is contained in the .INF file. This means that the host will require some installation/setup process when a new CDC device is attached for the first time.

USB Embedded Host


What is the difference between a Host, Embedded Host, limited host and mini-host?
Hosts are almost always referred in context to PCs and laptops where any USB peripheral can be plugged. Full host must source 500mA of current on the Vbus to power the peripheral devices connected to it...

 

Embedded hosts are always found in small form factor and portable devices like a set top box, PDA, etc. It has to source current of minimum 8mA on the Vbus. It has limited memory space to store limited drivers, thus the connectivity to peripheral is also limited. Unlike a full host the embedded host is not required to load device drivers for a device it does not support. It is required, however, to notify the user that an unsupported device was attached. Embedded hosts are often called “mini-Hosts” or “limited hosts” but they refer to the same type of device. The terms embedded host, mini-host, or limited host are not referred to in the USB specification or the OTG supplement. The certification procedural walkthrough refers to these devices as Embedded hosts.

Does Microchip supply all the stacks required for a complete thumb drive application?
Yes. Microchip provides the USB mass storage class drivers, the SCSI interface, the FAT16/32 format software, and an example file management application. This firmware is available in Software/Tools
What are the Device classes supported by Microchip?
Currently the embedded host stack supports the MSD (Mass Storage Device – thumb drive, external hard disk etc. are examples), and Custom device classes – customers can develop their drivers uniquely for their devices...

 

Please refer to the release notes of the specific version for more information about software support.

Can a high speed peripheral, like a hard drive, be connected to a full speed host?
Yes. The USB protocol requires all full speed and high speed communication to initiate as full speed, and then scale up to high speed if both devices support it. In the case that one of the devices only supports full speed, the communication would be limited to full speed, 12 Mbps.
So any hard drive would work with any host?
No. Hard drives are mass storage devices, and as such have some form of data format provisions. For the devices to work, as opposed to just recognize each other, the file and interface protocols must also match. For example, a Thumb drive is a basic mass storage application. But for it to function, the USB class drivers, the SCSI interface, and the FAT16 format must all be present.

 

Currently only the FAT16 file format is supported in the USB embedded host firmware release versions. FAT32 support is being developed. NTFS and other file systems are not supported.

If I am an embedded host then do I need to support Session Request Protocol (SRP) and Host Negotiation Protocol (HNP)?
For an embedded host SRP is an optional feature but is not required. In most cases it is probably not desired either. For more information about what SRP is please see the OTG section of this FAQ.

 

Since an embedded host is only capable of being a host and never a USB device, HNP should not be supported. For more information about what HNP is please see the OTG section of this FAQ.

USB On-The-Go


What is OTG and why was it developed?
The OTG specification is an addendum to the original USB specification. USB OTG defines a way for portable devices, through only one connector per device, to connect to supported USB products in addition to the PC.

 

This allows to mobile device to connect to each other. One will assume the role of embedded host and the other will assume the role of USB device. This eliminates the need to have a PC for specific USB applications.

If I only want to talk to USB devices (peripherals), do I need to be an OTG product?
If a device only needs to talk to USB devices and never attach to another USB host, then the device can be an embedded host instead of an OTG product (please refer to the embedded host section above). If a device needs to connect to both USB devices and USB hosts then it needs to be an OTG product.
Does USB OTG have to be in both products in order to connect and operate?
No, USB OTG products will connect to all PCs, and will also have host functionality to connect to the specific USB peripherals it supports.
Does USB OTG eliminate the need for a PC?
No. In fact, USB OTG complements the concept of the “Extended PC”, where the PC is at the center of the consumer’s extended world of digital devices...

 

By enabling basic functions between digital devices, USB OTG augments the capability of these PC peripherals, making them more valuable to consumers and corporate users.

What is the Host Negotiation Protocol (HNP)?
USB OTG devices determine which device is the host and which device is the peripheral based on which end of the cable is attached to the device...

 

If operation requires that the roles be switch HNP provides a mechanism for switching that role without having to remove and switch ends of the cable.

What is the Session Request Protocol (SRP)?
Unlike other USB hosts, USB OTG devices are allowed to remove power from the Vbus line when they are not using it...

 

The time when Vbus is powered is referred to as a session. SRP is a method for which a device attached to an OTG product can request a new session be started. After a device signals SRP, the OTG product acting as host will then power up Vbus and start communicating with the device.

What happens when you plug two USB OTG devices together?
When two dual role devices get connected together via a cable, the cable sets a default host and default peripheral...

 

If the application is such that the roles need to be reversed, then the Host Negotiation Protocol (HNP) can provide a handshake that performs that function. If HNP is not supported in either device then the cable may need to be reversed if a specific role is required.

What connectors are used for OTG?
OTG devices that are not already in production should use a micro-A/B connector. This allows either an A end or B end of a micro cable to be attached. This connector should not be confused with the micro-B connector that is available for USB devices.
I want to be either an embedded host or a USB device(peripheral) but I don’t need/want to dynamically switch between the two. Is this possible and what connectors should I use?
Yes, this is possible. There are two possible ways to tackle this problem...

 

The first solution is to use the micro-A/B connector and program the device as an OTG device. Because SRP and HNP are optional these features can be disabled. The limitation here is that USB devices with full size A connectors will need an adaptor to connect to the micro-A/B port on the device.

Alternatively the device can have two USB connectors. Each would have to have it’s own separate circuitry for Vbus but share D+ and D-. The limitation here is that the USB test specifications state that any connectors that are accessible to the user must all be functional at the same time. Since the current USB devices only support one USB port, it is not possible to have both connectors functional at the same time. This means that some sort of mechanical feature must be implemented such that only one of the two ports is accessible for use at any given point of time.

USB VID/PID


What is device descriptor?

The device descriptor is data table that describes various information about the attached device, such as the vender ID (VID) and product ID (PID) of the manufacturer...

The complete contents of the device descriptor can be found in Table 9-8 of the USB specification

What is VID & PID?

VID stands for Vendor ID & PID stands for Product ID. The VID is issued by USB-IF by paying a required fee...

USB-IF mandates each vender have their own VID in order to market their product. There are possibly both legal and technical complications involved when using a VID/PID that is not unique. VID can be obtained from http://www.usb.org/developers/vendor/ Once a VID has been purchased, how the PIDs are used within that VID are determined by the manufacturer.

Do I have to purchase my own VID? Does Microchip sublicense their VID?

Microchip does have a sublicensing program for its VID. Please download this form to apply for a PID with Microchip’s VID for your prototypes.

Do I need a new PID for each device that I produce?

A new PID is required for each product line produced. Each identical product in that product line should have the same PID...

If each device in a product line requires a unique identifier then the iSerialNumber field of the device descriptor can be used to uniquely identify each device.