Skip to content

Provide a set of USB examples running on STM32 products based on USBX middleware software library.

License

Notifications You must be signed in to change notification settings

ayedm1/stm32-usbx-examples

 
 

Repository files navigation

stm32-usbx-examples Software Expansion for STM32Cube

With Azure RTOS complementing the extensive STM32Cube ecosystem providing free development tools, software bricks, and software expansion packages, STM32 users can also leverage the rich services of Azure RTOS, which meet the needs of tiny, smart, connected devices.

stm32-usbx-examples provides a full integration of Microsoft Azure RTOS in the STM32Cube environment for the STM32Hxx series of microcontrollers. Ready-to-run applicative examples are also provided for STM32xx, thus reducing the learning curve and ensuring a smooth application development experience with Azure RTOS and STM32 MCUs.

The scope of this package covers the following Azure RTOS middleware: USB Device and Host (USBX) with examples shows how to develop USB Device and host applications.

Azure RTOS is a professional grade, highly reliable and market proven Middleware suite:

  • Integrated and full featured RTOS. Learn more ThreadX.
  • Industrial grade networking stack: optimized for performance coming with many IoT protocols. Learn more Netx Duo
  • Advanced FS/FTL: fully featured to support NAND/NOR Flash memories. Learn more FileX and LevelX
  • USB Host and Device stacks coming with multiple classes. Learn more USBX
  • Safety pre-certifications (from Microsoft): IEC 61508 SIL4, IEC 62304 Class C and ISO 26262 ASIL D
  • Security pre-certifications (from Microsoft): EAL4+ for TLS/DTLS, FIPS 140-2 for SW crypto lib
  • STM32 granted production license: here

Prerequisites

  • USBX, FileX and NetXDuo building require ThreadX as they are based on RTOS model.
  • USBX and FileX can be used in standalone mode without RTOS.
  • USBX Host MSC requires FileX Middleware usage
  • USBX Device ECM/RNDIS classes require NetXDuo usage

One of the following toolchains:

  • IAR Embedded Workbench for ARM (EWARM) toolchain 8.50.9 + ST-LINKV3
  • STM32CubeIDE V1.13.1 + ST-LINKV3
  • RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.37 + ST-LINKV3

Repository structure

The STMicroelectronics GitHub X-CUBE-AZRTOS repository consists of the following repositories:

  • Drivers: contains STM32xx CMSIS, HAL and BSP drivers
  • Middlewares: contains ThreadX, NetX Duo, FileX, LevelX and USBX stacks including porting on STM32 hardware
  • Projects: provides ready-to-run applicative examples for Azure RTOS on the supported boards. Projects are structured as follows:

Documentation

More comprehensive documentation is available on STM32 MCU Wiki.

License

Azure RTOS is distributed by Microsoft under GitHub and under Microsoft license. STMicroelectronics include Azure RTOS in selected STM32Cube software packages, whether delivered by Microsoft under GitHub, or by STMicroelectronics through STM32 CubeFW packages on www.st.com or GitHub, proprietary license terms are the same between Microsoft and User:

  • Source code is available
  • User is granted modification
  • User is granted redistribution of source (modified or not) and/or binary, provided he develops on an MCU/MPU that is listed officially by Microsoft
  • User is granted production, provided he develops on an MCU that is listed officially by Microsoft: Licensed Hardware
  • User is forbidden to reuse provided software to create a competing offer Whenever a new STM32 series includes support for Azure RTOS, it is added by Microsoft in the official list

For more details about license information relative to each component in this package, please refer to LICENSE

Applications

Middleware Applications Short Description
USBX Ux_Device_MSC It demonstrates how to develop USB Device mass storage class based application. The application is designed to emulate an USB MSC device, the code provides all required device descriptors framework and the associated Class descriptor report to build a compliant USB MSC device readme
USBX Ux_Device_CDC_ACM It demonstrates how to develop USB Device communication Class "CDC_ACM" based application. The application is designed to emulate an USB-to-UART bridge following the Virtual COM Port (VCP) implementation, the code provides all required device descriptors framework and associated Class descriptor report to build a compliant USB CDC_ACM device. readme.
USBX Ux_Device_HID It demonstrates how to develop USB Device Human Interface "HID" mouse based application. The application is designed to emulate an USB HID mouse device, the code provides all required device descriptors framework and associated Class descriptor report to build a compliant USB HID mouse device. readme
USBX Ux_Device_HID_Standalone It demonstrates how to develop USB Device Human Interface “HID” mouse based bare metal application. The application is designed to emulate an USB HID mouse device, the code provides all required device descriptors framework and associated Class descriptor report to build a compliant USB HID mouse device. readme
USBX Ux_Device_CDC_ECM It demonstrates how to develop USB Device CDC ECM communication. It shows how to run Web HTTP server based application stack over USB interface using USB CDC ECM protocol. readme
USBX Ux_Device_HID_CDC_ACM It demonstrates how to develop a composite USB Device application. The application is designed to emulate a USB HID mouse combined with an USB-to-UART bridge following the Virtual COM Port (VCP) implementation, the code provides all required device descriptors framework and associated Class descriptor report to build a compliant composite USB HID and CDC_ACM device. readme.
USBX Ux_Device_DFU It demonstrates how to develop USB Device Firmware Upgrade "DFU" based application. The application is designed to emulate an USB DFU device, the code provides all required device descriptors framework and associated Class descriptor report to build a compliant USB DFU device. readme
USBX Ux_Device_Video It demonstrates how to develop a basic USB Device Video based application. The application is designed to emulate an USB VIDEO device, the code provides all required device descriptors framework and associated Class descriptor report to build a compliant USB VIDEO device. readme
USBX Ux_Device_DualHID It demonstrates how to develop a composite USB Device Human Interface Device Class “HID Mouse” and “HID Keyboard” based application. The application is designed to emulate an USB HID Composite mouse & keyboard device , the code provides all required device descriptors framework and associated Class descriptor report to build a compliant USB HID Composite device. readme
USBX Ux_Device_CustomHID It demonstrates how to develop USB Device Human Interface “HID” Custom based application. The application is designed to emulate an USB HID Custom device, the code provides all required device descriptors framework and associated Class descriptor report to build a compliant USB HID Custom device. readme
USBX Ux_Device_RNDIS It demonstrates how to run Web HTTP server based application stack over USB interface. The application is designed to load files and web pages stored in SD card using a Web HTTP server through USB RNDIS interface class, the code provides all required features to build a compliant Web HTTP Server. readme
USBX Ux_Device_PIMA_MTP It demonstrates how to develop USB Device Media Transfer Protocol class based application. The application is designed to emulate an USB PIMA MTP device, the code provides all required device descriptors framework and the associated Class descriptor report to build a compliant USB MTP device. readme
USBX Ux_Device_CCID It demonstrates how to develop USB Device for Integrated Circuit Card Interface Device based application. The application is designed to emulate a smart card reader device, the code provides all required device descriptors framework and associated Class descriptor to build a USB CCID device. readme
USBX Ux_Device_Printer It demonstrates how to develop USB Device Printer Class based application. The application is designed to emulate a USB Printer device, the code provides all required device descriptors framework and the associated Class descriptor report to build a compliant USB Printer device. readme
USBX Ux_Host_HID It demonstrates how to develop USB Host Human Interface "HID" able to enumerate and communicates with a mouse or a keyboard. The application is designed to behave as an USB HID Host, the code provides required requests to properly enumerate HID devices , HID Class APIs to decode HID reports received from a mouse or a keyboard and display data on uart HyperTerminal. readme
USBX Ux_Host_HID_Standalone It demonstrates how to develop bare metal USB Host Human Interface “HID” able to enumerate and communicates with a mouse or a keyboard. The application is designed to behave as an USB HID Host, the code provides required requests to properly enumerate HID devices , HID Class APIs to decode HID reports received from a mouse or a keyboard and display data on uart HyperTerminal. readme
USBX Ux_Host_MSC It demonstrates how to develop USB Host Mass Storage "MSC" able to enumerate and communicates with a removable usb flash disk. The application is designed to behave as an USB MSC Host able to operate with an USB flash disk using the Bulk Only Transfer (BOT) and Small Computer System Interface (SCSI) transparent commands combined with a file system Azure RTOS FileX. readme
USBX Ux_Host_CDC_ACM It demonstrates how to develop USB Host CDC ACM device able to properly enumerate CDC devices then send and receive data that can be displayed on Hyperterminal or alike. readme
USBX Ux_Host_DualClass It demonstrates how to develop USB Host supporting two device classes: USB_HID (mouse or keyboard) and USB_MSC (removable flash disk). readme
USBX Ux_Host_HID_CDC_ACM It demonstrates how to develop a composite "USB HID CDC_ACM Host" that is able to enumerate and communicate with composite USB HID CDC_ACM and simple HID/CDC_ACM devices. readme

Troubleshooting

Caution : The issues are strictly limited to submit problems or suggestions related to the software delivered in this repository.

For any other question related to the product, the hardware performance or characteristics, the tools, the environment, you can submit it to the ST Community on the STM32 MCUs related page.

About

Provide a set of USB examples running on STM32 products based on USBX middleware software library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 77.8%
  • Assembly 21.4%
  • Other 0.8%