Pico PIO USB
USB host/device implementation using PIO of raspberry pi pico (RP2040/RP2350).
Install / Use
npx skills add sekigon-gonnoc/Pico-PIO-USBInstalls into whichever agent you are using.
README
Pico-PIO-USB
USB host/device implementation using PIO of raspberry pi pico (RP2040).
You can add additional USB port to RP2040.
Demo
https://user-images.githubusercontent.com/43873124/146642806-bdf34af6-4342-4a95-bfca-229cdc4bdca2.mp4
Project status
|Planned Features|Status| |-|-| |FS Host|✔| |LS Host|✔| |Hub support|✔| |Multi port|✔| |FS Device|✔|
Examples
- host_hid_to_device_cdc.c which print mouse/keyboard report from host port to device port's cdc. TinyUSB is used to manage both device (native usb) and host (pio usb) stack.
- usb_device.c is a HID USB FS device sample which moves mouse cursor every 0.5s. External 1.5kohm pull-up register is necessary to D+ pin (Default is gp0).
cd examples
mkdir build
cd build
cmake ..
make
# Copy UF2 file in capture_hid_report/ or usbdevice/ to RPiPico
Another sample program for split keyboard with QMK
https://github.com/sekigon-gonnoc/qmk_firmware/tree/rp2040/keyboards/pico_pico_usb
Resource Usage
- 1 PIO, 3 state machines, 32 instructions
- Two GPIO for D+/D- (Series 22ohm resitors are better)
- 15KB ROM and RAM
- (For Host) One 1ms repeating timer
- (For Device) One PIO IRQ for receiver
Related Skills
node-connect
385.5kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
blender-python-addon
40.5kBlender Python add-on rules for operators, panels, properties, registration, testing, and API-safe scripting
flutter-development-guidelines-cursorrules-prompt-file
40.5kCursor rules for Flutter development with MVVM architecture, Riverpod state management, Material widgets, and Dart style guidelines.
commit-push-pr
140.7kCommit, push, and open a PR
