GithubHelp home page GithubHelp logo

musli's Introduction

Müsli USB Pmod™ compatible module

Overview

Müsli is a 12-pin Pmod™ compatible module with a RP2040 MCU and a USB type A port. Müsli can be configured to act as a USB host or USB device. In host mode the 5V USB VBUS power is supplied by a boost converter.

Müsli PMOD

This repo contains documentation, schematics and example host/device firmware.

Find more information on the Müsli product page.

Modes

Careful attention should be paid to jumpers J1 and J2 to avoid unintended consequences, please read the warnings below.

J1 J2 Mode Power
OPEN OPEN PMOD USB DEVICE VSYS from PMOD. VBUS disconnected.
OPEN SHORT PMOD USB HOST VSYS from PMOD. VBUS from VSYS.
SHORT OPEN USB STAND-ALONE DEVICE VSYS from VBUS.

Warnings

  • Do not plug the module into a PMOD socket when in STAND-ALONE DEVICE mode.
  • Do not plug the USB cable into a computer when in USB HOST mode.

Linux Device Setup

On Linux you may need to configure udev rules to allow access to the device, for example by adding the following lines to your udev rules:

SUBSYSTEM=="usb", GROUP="plugdev", ATTR{idVendor}=="2e8a", ATTRS{idProduct}=="0003"
SUBSYSTEM=="usb", GROUP="plugdev", ATTR{idVendor}=="2e8a", ATTRS{idProduct}=="1025"

Firmware

This repo contains example firmware based on the Raspberry Pi Pico USB examples.

The host firmware example host_musli_kbd sends USB keyboard keypresses as ascii characters over the UART. It also acts as an SPI master and sends PS2 scancodes over the SPI pins. See the Zucker SOC for example Verilog code that acts as an SPI slave to receive the scancodes.

The device firmware example dev_musli implements a Vendor Specific Device that provides commands for bitbanging GPIO and performing SPI master data transfers. This firmware is used by ldprog to program Lone Dynamics FPGA boards.

To build the firmware you will need to install the Raspberry Pi Pico SDK.

Set the PICO_SDK_PATH environment variable to your SDK path.

$ git clone https://github.com/machdyne/musli
$ cd musli/firmware/dev_musli
$ mkdir build
$ cd build
$ cmake ..
$ make

Note: If your Müsli has a non-Winbond flash chip, you may need to build the firmware using the following commands:

$ cmake .. -DPICO_DEFAULT_BOOT_STAGE2_FILE=/your-pico-sdk-directory/pico-sdk/src/rp2_common/boot_stage2/boot2_generic_03h.S
$ make

This will create an ELF file that can be programmed via SWD as well as a UF2 file that can be copied to the USB Mass Storage Device when boot mode is selected (by holding the Müsli BOOT button during power-up).

Resources

Pinouts

12-pin PMOD Header

1  2  3  4  5  6
7  8  9  10 11 12
Pin Signal Device Firmware Host Firmware
1 GPIO0 UART0 TX UART0 TX
2 GPIO1 UART0 RX UART0 RX
3 GPIO2 GPIO
4 GPIO3 GPIO
5 GND
6 PWR3V3
7 GPIO8 SPI1 RX
8 GPIO9 SS SS
9 GPIO10 SPI1 SCK SPI1 SCK
10 GPIO11 SPI1 TX SPI1 TX
11 GND
12 PWR3V3

The GPIO numbers correspond with RP2040 GPIO numbers.

3-pin SWD Header

Pin Signal
1 SWDIO
2 SWCLK
3 GND

Pin 1 is closest to the PMOD header.

musli's People

Contributors

inc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

musli's Issues

default firmware

What is the default firmware out of the box? does this default firmware support USB Host mode? or do we need to flash a example host firmware available in this repository?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.