USB stack for embedded devices in Rust.
The UsbDevice object represents a composite USB device and is the most important object for application implementors. The UsbDevice combines a number of UsbClasses (either custom ones, or pre-existing ones provided by other crates) and a UsbBus device driver to implement the USB device.
The UsbClass trait can be used to implement USB classes such as a HID device or a serial port. An implementation may also use a custom class if the required functionality isn't covered by a standard class.
The UsbBus trait is intended to be implemented by device-specific crates to provide a driver for each device's USB peripheral.
atsam4 - device-driver implementation for atsam4e & atsam4s microcontrollers (UDP). Examples can be found here. While not expressly supported with this crate, atsam3s and atsam55g could also be supported with a similar code-base.
atsamd - device-driver implementation for samd21 & samd51 microcontrollers. An example for the itsybitsy_m4 board from Adafruit can be found here.
imxrt-usbd - device-driver implementation for NXP i.MX RT microcontrollers. Examples for i.MX RT boards, like the Teensy 4, are maintained with the driver.
musb - device-driver implementation for musb (Mentor USB, USB2.0 IP), widely used in various microcontrollers and SoCs from vendors like TI, MediaTek, Puya, and Allwinner. Examples can be found in py32-hal.
rp2040-hal - device-driver implementation for the raspberry pi RP2040 microcontroller. Examples can be found in the various boards crates here.
stm32-usbd - device-driver implementation for multiple STM32 microcontroller families. Examples can be found in each individual HAL crate that implements the USB peripheral.
Other implementations for USB in Rust
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4