• Stars
    star
    425
  • Rank 102,094 (Top 3 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 6 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Experimental device-side USB framework for microcontrollers in Rust.

usb-device

Experimental device-side USB stack for embedded devices in Rust.

This crate is still under development and should not be considered production ready or even USB compliant.

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 drives to implement the USB device.

The UsbClass trait can be used to implemented 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.

Hardware driver crates

  • 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.

  • stm32-usbd - device-driver implementation for multiple STM32 microcontroller families. Examples can be found in each individual HAL crate that implements the USB peripheral.

  • rp2040-hal - device-driver implementation for the raspberry pi RP2040 microcontroller. Examples can be found in the various boards crates here.

Class crates

Others

Other implementations for USB in Rust

  • The Embassy project has an async USB stack, embassy-usb.

More Repositories

1

ssd1306

SSD1306 OLED driver
Rust
305
star
2

embedded-sdmmc-rs

A SD/MMC library with FAT16/FAT32 support, suitable for Embedded Rust systems
Rust
302
star
3

embedded-nal

An Embedded Network Abstraction Layer
Rust
177
star
4

serde-json-core

`serde-json` for `no_std` programs
Rust
159
star
5

async-on-embedded

Rust
123
star
6

usbd-serial

Work-in progress minimal CDC-ACM (USB serial port) class for usb-device
Rust
114
star
7

pc-keyboard

PS/2 Keyboard Decoder in Rust
Rust
93
star
8

embedded-storage

An Embedded Storage Abstraction Layer
Rust
64
star
9

menu

Command-line menu system for embedded Rust platforms.
Rust
44
star
10

usbd-midi

Rust
44
star
11

tinyrlibc

Tiny C library written in Rust
Rust
41
star
12

tm4c-hal

An Embedded HAL and general chip support for the TM4C123/LM4F120. Replaces the old lm4f120 crate.
Rust
40
star
13

sh1106

SH1106 driver for use with embedded_hal and (optionally) embedded_graphics
Rust
32
star
14

aligned

A newtype with alignment of at least `A` bytes
Rust
30
star
15

sensehat-rs

Rust support for the Raspberry Pi Sense Hat
Rust
27
star
16

multi-map

Like a Rust std::collection::HashMap, but allows you to use either of two different keys to retrieve items.
Rust
26
star
17

ssd1331

SSD1331 colour OLED display driver for embedded Rust applications using embedded-hal
Rust
17
star
18

hash32

32-bit hashing machinery
Rust
10
star
19

meta

Details about the rust-embedded-community project
10
star
20

tb6612fng-rs

A pure rust `no_std` driver for the TB6612FNG motor driver.
Rust
4
star
21

adafruit-bluefruit-protocol-rs

A `no_std` parser for the Adafruit Bluefruit LE Connect controller protocol.
Rust
2
star