2014-03-26 15:42:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# tinyusb #
  
						 
					
						
							
								
									
										
										
										
											2012-11-25 22:24:01 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-28 17:50:30 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!--  START doctoc generated TOC please keep comment here to allow auto update  -->  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--  DON'T EDIT THIS SECTION, INSTEAD RE - RUN doctoc TO UPDATE  -->  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								**Table of Contents**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  [Features ](#features ) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									-  [Host ](#host )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									-  [Device ](#device )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									-  [RTOS ](#rtos )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									-  [Supported MCUs ](#supported-mcus )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									-  [Toolchains ](#toolchains )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  [Getting Started ](#getting-started ) 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  [Uses ](#uses ) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  [Porting ](#porting ) 
						 
					
						
							
								
									
										
										
										
											2014-03-28 17:50:30 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  [License ](#license ) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!--  END doctoc generated TOC please keep comment here to allow auto update  -->  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-28 15:23:32 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								tinyusb is an open-source (BSD-licensed) USB Host/Device/OTG stack for embedded micro-controllers, especially ARM MCUs. It is designed to be user-friendly in term of configuration and out-of-the-box running experience.
							 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								In addition to running without an RTOS, tinyusb can run across multiple RTOS vendors. More documents and API reference can be found at http://docs.tinyusb.org
							 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-27 17:59:45 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-26 15:42:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## Features ##
  
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### Device ###
  
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  HID Mouse 
						 
					
						
							
								
									
										
										
										
											2018-06-19 15:08:31 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  HID Keyboard 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  HID Generic 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Communication Class (CDC) 
						 
					
						
							
								
									
										
										
										
											2014-03-25 16:42:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Mass Storage Class (MSC) 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### Host ###
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								** Most active development is on the Device stack. The Host stack is largely untested.**
							 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-06 19:55:48 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  HID Mouse 
						 
					
						
							
								
									
										
										
										
											2018-06-19 15:08:31 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  HID Keyboard 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  HID Generic (coming soon) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Communication Device Class (CDC) 
						 
					
						
							
								
									
										
										
										
											2014-03-25 16:42:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Mass Storage Class (MSC) 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Hub currently only support 1 level of hub (due to my laziness) 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-26 15:42:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### RTOS ###
  
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-10 14:31:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Currently the following OS are supported with tinyusb out of the box with a simple change of CFG_TUSB_OS macro.
							 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-05-08 12:23:25 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  **None OS** 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  **FreeRTOS** 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  **MyNewt** 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-17 12:02:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### Toolchains ###
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-18 22:53:42 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								You can compile with any of following toolchains, however, the stack requires C99 to build with
							 
						 
					
						
							
								
									
										
										
										
											2014-04-17 12:02:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  GCC 
						 
					
						
							
								
									
										
										
										
											2014-04-17 12:02:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  lpcxpresso 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Keil MDK 
						 
					
						
							
								
									
										
										
										
											2018-06-19 15:08:31 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  IAR Workbench 
						 
					
						
							
								
									
										
										
										
											2014-04-17 12:02:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-28 15:23:32 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								### Supported MCUs ###
  
						 
					
						
							
								
									
										
										
										
											2014-03-26 00:00:53 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-19 15:08:31 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								The stack supports the following MCUs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  LPC11uxx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  LPC13uxx (12 bit ADC)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  LPC175x_6x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  LPC43xx
							 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -  MicroChip SAMD21
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  MicroChip SAMD51
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -  Nordic nRF52840
							 
						 
					
						
							
								
									
										
										
										
											2014-03-26 00:00:53 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-17 12:02:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[Here is the list of supported Boards ](boards/readme.md ) in the code base
							 
						 
					
						
							
								
									
										
										
										
											2014-03-26 15:42:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Getting Started ##
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-19 15:08:31 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[Here is the details for getting started ](doxygen/getting_started.md ) with the stack.
							 
						 
					
						
							
								
									
										
										
										
											2013-05-07 13:36:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-27 18:07:22 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## Uses ##
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TinyUSB is currently used by these other projects:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  [nRF52840 UF2 Bootloader ](https://github.com/adafruit/Adafruit_nRF52_Bootloader ) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  [CircuitPython ](https://github.com/adafruit/circuitpython ) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Porting ##
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Want to help add TinyUSB support for a new MCU? Read [here ](doxygen/porting.md ) for an explanation on the low-level API needed by TinyUSB.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-28 15:23:32 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								## License ##
  
						 
					
						
							
								
									
										
										
										
											2013-11-14 14:12:07 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-17 12:02:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								BSD license for most of the code base, but each file is individually licensed especially those in *vendor*  folder. Please make sure you understand all the license term for files you use in your project. [Full license is here ](tinyusb/license.md )