Skip to content

decaday/musb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MUSB

Crates.io Crates.io

musb(Mentor USB) Registers and embassy-usb-driver , usb-device Implementation.

The MUSBMHDRC (musb) is a USB 2.0 Multi-Point, Dual-Role Controller designed by Mentor Graphics Corp. It is widely used by various manufacturers in microcontrollers and SoCs, including companies like TI, MediaTek, Puya, Allwinner, and others.

Quick Start

These built-in profiles are used via Cargo features (see below), with only one selectable:

  • builtin-py32f07x (py32m070, py32f071, py32f072)

  • builtin-py32f403

  • builtin-std-8bep-2048 (excludes base_address, 8 bidirectional endpoints, 2048K FIFO size in total)

Add musb to your Cargo.toml:

[dependencies]
musb = { version = "0.1.0", features = ["builtin-std-8bep-2048"] }

You can use the std profile by enabling the builtin-std-xxx feature. This profile doesn't include a base_address, so it won't generate a UsbInstance (explained in Porting Guide).

If your chip is not included, you'll need to create a new profile. Refer to the Porting Guide for more details.

Features

embassy-usb-driver-impl: Enables embassy-usb-driver implementation.

usb-device-impl: Enables usb-device implementation.

Note: Only one of these two implementations can be enabled at a time.

prebuild(on by default): Uses pre-generated PAC (Peripheral Access Crate).

builtin-xxxx : Uses builtin profile.

defmt, log: Enables debug logging.

Examples

hal example: py32-hal/src/usb.rs · py32-rs/py32-hal

embassy-usb: py32-hal/examples/py32f072

usb-device: py32-hal/examples/usbd-f072

Porting

Refer to the Porting Guide for more details.

You can also refer to this blog (in Chinese): PY32的musb(Mentor USB)的Rust支持 - Decaday

Contribution

If you have any questions or uncertainties, feel free to create an Issue or start a Discussion.

TODOs

  • Support Dynamic FIFO Size
  • Support dual packet buffer
  • Support SiFli SF32LB52
  • Other Chips
  • Host mode

License

This project is under Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).

About

musb(Mentor USB) regs and `embassy-usb-driver`, `usb-device` impl

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages